014
14.02.2007, 09:28 Uhr
~Alfredo
Gast
|
Hallo zusammen,
vielen Dank für eure Hilfe. Das Programm macht jetzt endlich, was ich will. Hier die Lösung.
Code: |
#!/usr/bin/perl use strict; use warnings;
my $file = '/cygdrive/d/Perl/test.txt'; my $counter = 0; my $line = 0;
# open file for reading open(FILE_HANDLE, "<", $file) || die "Error: $!";
# read the file line per line while( $line = <FILE_HANDLE> ) { # if it is an empty line then print "\n" if( $line =~ /^\s*$/ ) { print "\n"; } # otherwise print a counter in the form 001: , 002: , ... before each line else { print sprintf("%3.3d", $counter++) . ": " . $line; } }
#close file close(FILE_HANDLE);
|
Nun aber noch ein paar Frage: 1.) Wenn ich den Ausdruck /^$/ verwende, so klappt es nicht. Ich bin mir aber ganz sicher, dass es wirklich eine leere Zeile ohne whitespaces und tabs ist. Warum klappt es nur, wenn ich noch \s* dazunehme?
2.) Hier wurde vor die Variablendeklaration ein my geschrieben. Bislang habe ich es immer ohne gemacht und es hat trotzdem funktioniert. Was ist der Unterschied?
Vielen Dank schonmal Alfredo |