Below example do not work either.. after putting into paragraph mode why?
I get --> sdfsdfsdf23423
#!/usr/bin/perl -w
use strict;
sub slurpie {
while (<DATA>) {
local $/ = ""; # put into paragraph mode (separated by one or more blank lines
next unless /^\w\w.+(\w\w).+(\d+).+(\w\w)/sg; #should only match first paragraph
print "$_\n";
}
}
slurpie();
__DATA__
hi
hi
234
hi
hoi
sdfsdfsdf23423
hi
hi
hi
1234
1
| [reply] |
You're setting a local value to $/ only inside the read loop. That is, the value gets set after the first record is read. At the end of the loop, it's set back to its default value ("\n"), and the next record is read with that value. Then inside the loop, you set the local value again. Try it this way:
sub slurpie {
local $/ = ''; # paragraph mode
while (<DATA>) {
next unless /^\w\w.+(\w\w).+(\d+).+(\w\w)/sg; #should only ma
+tch first paragraph
print "$_\n";
}
}
| [reply] [d/l] [select] |
I understand what you are saying but that didn't solve it for some reason
local $/ = ""; # put into paragraph mode (separated by one or more blank lines
#!/usr/bin/perl -w
use strict;
sub slurpie {
local $/ = ""; # put into paragraph mode (separated by one or more blank lines
while (<DATA>) {
next unless /^\w\w.+(\w\w).+(\d+).+(\w\w)/sg; #should only match first paragraph
print "$_\n";
}
}
slurpie();
__DATA__
hi
hi
234
hi
hoi
sdfsdfsdf23423
hi
hi
hi
1234
1
:!././././././././././perl_slurp.pl
hi
hi
234
hi
hoi
sdfsdfsdf23423
hi
hi
hi
1234
| [reply] |