my $data = "\n" # 1
. "abc\n" # 2
. "def\n" # 3
. "\n" # 4
. "\n" # 5
. "ghi\n" # 6
. "\n" # 7
. "\n"; # 8
{
print("<FILE>\n");
my $lines = 0;
open(my $fh, '<', \$data);
while (<$fh>) {
++$lines;
chomp;
print("[$_]\n");
}
print($lines, "\n");
}
print("\n");
{
print("split(/\n/, \$data)\n");
my $lines = 0;
foreach (split(/\n/, $data)) {
++$lines;
print("[$_]\n");
}
print($lines, "\n");
}
print("\n");
{
print("split(/\n/, \$data, -1)\n");
my $lines = 0;
foreach (split(/\n/, $data, -1)) {
++$lines;
print("[$_]\n");
}
print($lines, "\n");
}
print("\n");
{
print("split(/^/m, \$data)\n");
my $lines = 0;
foreach (split(/^/m, $data, -1)) {
++$lines;
chomp;
print("[$_]\n");
}
print($lines, "\n");
}
outputs
<FILE>
[]
[abc]
[def]
[]
[]
[ghi]
[]
[]
8 <-- This is what <FILE> gives.
split(/\n/, $data)
[]
[abc]
[def]
[]
[]
[ghi]
6 <-- Not 8. Failed to emulate <FILE>.
split(/\n/, $data, -1)
[]
[abc]
[def]
[]
[]
[ghi]
[]
[]
[] <-- Extra line
9 <-- Not 8. Failed to emulate <FILE>.
split(/^/m, $data)
[]
[abc]
[def]
[]
[]
[ghi]
[]
[]
8 <-- Bingo!
wc -l says 8 as well, by the way.
Perl doesn't do this on my system:
uh, yes it does... $VAR4 = '';. Lines aren't *seperated* by newlines, they are *terminated* by them.
|