speedy: Filehandle referenzieren und zurueck

Hallo,

ich wollte ein Filehandle in einem Hash speichern, da ich diesen ueberall mit hin nehme. Nur beim dereferenzieren des FileHandles bringt er mir einen Syntax Error:

if(open(LOGHANDLE,">$v->{logfile}"))
{
 $v->{LOGHANDLE} = \*LOGHANDLE;
}

Nun wollte ich in einer Subroutine per:

print *{$v->{LOGHANDLE}} "Irgendein Text";

bzw. per (da das laut SelfHTML auchfunktionieren soll)

print $v->{LOGHANDLE} "Irgendein Text";

dort reinschreiben.

... aber er bringt mir einen "String found where operator expected at ..." bzw. "(Missing operator before  "Irgendein Text"?)"

Jemand ne Idee, wie es richtig geht ?

MFG,
speedy

  1. Hallo speedy,

    if(open(LOGHANDLE,">$v->{logfile}"))
    {
    $v->{LOGHANDLE} = \*LOGHANDLE;
    }

    Soweit korrekt. Du könntest aber auch einfach

    unless(open($v->{LOGHANDLE},'>'.$v->{logfile})) {
      # fehlerbehandlung
    }

    schreiben ;)

    Nun wollte ich in einer Subroutine per:

    print *{$v->{LOGHANDLE}} "Irgendein Text";

    print {$v->{LOGHANDLE}} "blahr\n";

    Du musst dem Perl-Interpreter sagen, dass das zusammengehört. Das
    versteht er in dem Kontext leider nicht.

    Grüße,
     CK

    --
    Ihr wisst nicht, wie man den Menschen dient. Wie sollt ihr wissen, wie man den Goettern muss soll?
    1. Hallo,

      print {$v->{LOGHANDLE}} "blahr\n";

      Du musst dem Perl-Interpreter sagen, dass das zusammengehört. Das

      Also ich weiss jetzt nicht, ob ich das falsch her reinkopiert habe, aber vor der ersten Klammer hatte ic noch ein * ... ansonsten verstehe ich nicht, wie du das meinst mit "dass das zusammengehoert". Wie schreibt man was, das "zusammengehoeren" soll ?

      MFG,
      speedy

      1. Hallo speedy,

        Du musst dem Perl-Interpreter sagen, dass das zusammengehört. Das

        Also ich weiss jetzt nicht, ob ich das falsch her reinkopiert habe,
        aber vor der ersten Klammer hatte ic noch ein *

        Ja. Und ich habe dir da drunter die richtige Lösung geschrieben. Der
        Asterix war halt falsch.

        ... ansonsten verstehe ich nicht, wie du das meinst mit "dass das
        zusammengehoert". Wie schreibt man was, das "zusammengehoeren" soll?

        Wie gesagt, so:

        print {$v->{LOGHANDLE}} "blahr\n";

        Grüße,
         CK

        --
        Der Geist ist alles. Du wirst, was du denkst.