Hallo,
while (<FILE>) {
$file .= $_;
}
Einfacher:
local $/;
$file = <FILE>;
Das hätte ich gerne ein weniger genauer erklärt. was bedeutet $/,
perldoc perlvar:
$RS
$/ The input record separator, newline by default.
This is used to influence Perl's idea of what a
"line" is. Works like awk's RS variable,
including treating empty lines as delimiters if
set to the null string. [...]
und wie arbeitet dieses local damit ?
'local' packt den Inhalt der Variablen auf den Stack und setzt sie auf 'undef'.
Im Gegensatz zu 'my', die eine Variable in einem Gueltigkeitsbereich definiert.
Deshalb ist folgendes mit local, aber nicht mit my moeglich:
ckruse@www:~/tests/httpd-2.0.36$ cat test.pl
#!/usr/bin/perl -w
use strict;
use vars qw($testvar);
$testvar = 10;
doit();
doit_one();
sub doit() {
local $testvar = 100;
print "doit(): ",$testvar,"\n";
doit_one();
}
sub doit_one() {
print "doit_one():",$testvar,"\n";
}
ckruse@www:~/tests/httpd-2.0.36$ perl test.pl
doit(): 100
doit_one():100
doit_one():10
ckruse@www:~/tests/httpd-2.0.36$ vim test.pl
[...]
ckruse@www:~/tests/httpd-2.0.36$ cat test.pl
#!/usr/bin/perl -w
use strict;
use vars qw($testvar);
$testvar = 10;
doit();
doit_one();
sub doit() {
my $testvar = 100;
print "doit(): ",$testvar,"\n";
doit_one();
}
sub doit_one() {
print "doit_one():",$testvar,"\n";
}
ckruse@www:~/tests/httpd-2.0.36$ perl test.pl
doit(): 100
doit_one():10
doit_one():10
ckruse@www:~/tests/httpd-2.0.36$
Gruesse,
CK