in reply to Simple perl one-liner for transforming text files


Should this move to Obfuscated Code? :-)

perl -F: -al0ne '$i||=1;/^n/&&print$i;!/^u/&&print$F[1];/^$/&&$i++&&pr +int$/'

I don't think it meets the "simple" requirement, but it is mostly on one line... ;-)

Here is what B::Deparse makes of it though, for reference.

LINE: while (defined($_ = <ARGV>)) { chomp $_; @F = split(/:/, $_, 0); $i ||= 1; print $i if /^n/; print $F[1] if not /^u/; print $/ if /^$/ and $i++; }

I'm not sure if the preceeding number is a requirement or not. Without the number prefix, I can get down to:

perl '-F: ' -al0ne '!/^u/&&print qq($F[1] );/^$/&&print$/'

(To run on Win32, change all the ' into " - it should still work.)

Hope that helps.


-- Dave :-)