Thread lesen aus DATA: Wie resetten? (7 answers)
Opened by FIFO at 2008-06-08 22:59

FIFO
 2008-06-08 22:59
#110892 #110892
User since
2005-06-01
469 Artikel
BenutzerIn

user image
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"

View full thread lesen aus DATA: Wie resetten?