È necessario registrare l'uscita di separazione $ \ come xxfelixxx ha risposto.
$/
come si legge è input record separator
. La manipolazione può influenzare il modo in cui Perl legge i dati del file che hai fornito. Per esempio:
open my $fh, "<", $filename or die $!;
local $/; # enable localized slurp mode
my $content = <$fh>;
close $fh;
Le suddette cause intero contenuto del file da trangugiare in scalare $ contenuti perché avevamo azzerato $/
.
Si consideri il codice qui sotto:
#!/usr/bin/perl
use strict;
use warnings;
my $content;
{local $/; $content = <DATA>}
print "Content is $content";
__DATA__
line 1
line 2
line 3
uscita:
Content is line 1
line 2
line 3
Ma se non si azzera $ /, come nel codice qui sotto:
#!/usr/bin/perl
use strict;
use warnings;
my $content = <DATA>;
print "Content is $content";
__DATA__
line 1
line 2
line 3
uscita sarà Content is line 1
.
Questo perché il separatore del record di input è stato impostato su newline e restituito dopo la prima riga.
fonte
2015-07-13 17:29:28
È il separatore * input * che può essere modificato se è necessario leggere file codificati CRLF o CR. – tadman
'$ /' è il carattere eol di sistema, che va bene se il file che stai generando è solo per uso "Locale". Se stai generando un file per alcuni sistemi operativi OTHER, ad es. sei su Linux per costruire un file Windows, quindi '$ /' è inutile. –
Dovresti davvero usare il separatore di record * output * '$ \' ', ma non riesco a vedere nulla di sbagliato nel farlo. Infatti, la funzione ['say'] (http://perldoc.perl.org/functions/say.html) fa proprio questo:" 'say LIST' è semplicemente un'abbreviazione di' {local $ \ = "\ n "; print LIST}" "(Se sei su 5.10+, userei invece' say' invece.) – ThisSuitIsBlackNot