Thread Referenz auf FILEHANDLE oder Global
(10 answers)
Opened by Karsten42 at 2018-04-27 11:09
Solange Du nur "einfache" Handles aus oder an Subroutines geben willst, funktioniert das wunderbar bereits mit lexikalischen Variablen. Da braucht es keine Typeglobs (mehr).
Ich habe das schon sehr erfolgreich für einen Parser eingesetzt. Der durfte zeilenweise aus einer Datei mit einer verschachtelten Struktur lesen; je nach Zeile wurden dann die folgenden Unterstrukturen mit eigenen Subroutinen verarbeitet, indem einfach nur das lexikalische Handle an die Subroutine gereicht wurde und diese dann selber aus dem Handle gelesen hat. Grobes Schema (aus der Erinnerung, ungetestet): Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 use strict; use warnings; # ... sub parse_from_handle { my ( $handle, ) = @_; while ( my $line = <$handle> ) { # parse lines here until a end condition strikes # ... last if $end_condition; } return # ... } # MAIN my $file = shift @ARGV || die "no file given to read from\n"; open my $fh, '<', $file or die "open($file,ro) failed: $!"; # feed handle to subroutine parse_from_handle( $fh ); close $fh; Mehr zu Typeglobs kann man auch da nachlesen: perldata Typeglobs-and-Filehandles meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen! |