Thread Learning Perl Aufgabe - Verständnisfrage (6 answers)
Opened by tuxus at 2009-11-19 02:25

tuxus
 2009-11-19 02:25
#128310 #128310
User since
2008-06-16
25 Artikel
BenutzerIn

user image
Huhu,
ich habe folgende Aufgabe:
Quote
Write a programm to add a copyright line to all of your exercise answers so far, by placing a line like "## Copyright (C) 20XX by Yours Truly". In the file immerdiately after the "shebang" line. You should edit the files "in place," keeping a backup. Presume that the programm will be invoked with the filenames to edit already on the command line.

Nun war die Aufgabe an sich eigentlich kein Problem und die Lösung sieht so aus:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/perl
use warnings;
use strict;

$^I = "~";
while (<>) {
if(/^#!/) {
$_ .= "## Copyright (C) 2009 by tuxus\n";
}
print;
}

Ist ja alles schön und gut aber ich verstehe nicht wie/warum perl automatisch ein newline nach der Shebang Zeile einfügt. So weit ich weis, nimmt der Diamond Operator jede Zeile einzeln und verarbeitet sie. Das heist ja, in $_ ist im Moment wo der Reguläre Ausdruck passt, die Shebang Zeile gespeichert. Wen ich jetzt diesem String das Copyright mit .= anhänge, dürfte er doch davor kein newline einfügen oder?
Ich dachte eigentlich ich müsste das dann so schreiben:

Code: (dl )
$_ .= "\n## Copyright (C) 2009 by tuxus\n";


gruss Tuxus

View full thread Learning Perl Aufgabe - Verständnisfrage