perl -pe '$\=$_}{'
-Blake
| [reply] [d/l] |
Please enlighten me
how does this work and what is the }{
I realise -p feeds all lines to the script, sets the ORS to each one but how is this suppressing printing and what is the magic }{
Thanks if you spare the time
| [reply] |
-p wraps a loop around your code. You can see what it looks like:
$ perl -MO=Deparse -pe '$\=$_}{'
LINE: while (defined($_ = <ARGV>)) {
$\ = $_;
}
{
();
}
continue {
die "-p destination: $!\n" unless print $_;
}
In effect, the }{ breaks off the continue part of the while loop that usually prints every line, so it only runs once at the end of file. Since $_ will have been set to undef at end of file, copying it to $\ preserves it so that print will show it. ($\ is implicitly added to each print by perl.) | [reply] [d/l] |