Thread lesen aus DATA: Wie resetten?
(7 answers)
Opened by FIFO at 2008-06-08 22:59
Hallo allerseits, stehe grad irgendwie auf dem Schlauch:
hab in einem Modul eine sub 'print_helpscreen', die mir Hilfetexte aus html-artig gekennzeichneten Abschnitten in source::DATA ausgibt, so lassen sich die Texte schön im selben File getrennt vom Code pflegen, finde ich angenehmer als lange here-docs ... Meine Probleme: 1. wie schaffe ich es, dass Dinge wie \t aus der Quelle interpoliert werden? 2. wie 'resette' ich das DATA-Handle, so dass ich bei mehrfachen Aufrufen wieder am Start des DATA-Segments bin? Ein close $handle hilft da nicht weiter. Danke ... 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 #----------------------------------------------------------------------------# # sub print_helpscreen # Aufruf: print_helpscreen(*HANDLE, 'section') # Gibt Helpscreen aus angegebenen Sektion in <$HANDLE> aus. # Beispiel: print_helpscreen(*DATA, 'hilfetext') # DATA-Handle des Aufrufers # 'Sektion' bezeichnet einen in HTML-artige Tags gefassten Abschnitt, # im Beispiel: <hilfetext> ... </hilfetext> (case-insensitive) sub print_helpscreen { croak 'print_helpscreen: Missing argument' if @_ < 2; my ($handle, $section) = @_; LOOKUP_SECTION: while (my $line = <$handle>) { last LOOKUP_SECTION if $line =~ m{<$section>}i; } PRINT_LINE: while (my $line = <$handle>) { last PRINT_LINE if $line =~ m{</$section>}i; print $line; } } #----------------------------------------------------------------------------# Everyone knows that debugging is twice as hard as writing a program in the first place. So if you're as clever as you can be when you write it, how will you ever debug it? -- Brian Kernighan: "The Elements of Programming Style"
|