En op 24 augustus 2003 sprak Tor Hildrum: > Well, my final solution, that isn't really a solution was: > -0ne '@a=/WORD/g;print [EMAIL PROTECTED]' > > Now, this isn't really a solution because it has the WORD > hardcoded. But, how would I be able to get the WORD > when using -n? I'm guessing this isn't possible.
If the word is the second parameter on the command line, that is easy. In the first pass of the -n loop, the first value of @ARGV is shifted off, but the rest of @ARGV is left intact until the eond of the first file is reached. So if the word is last on the command line, you can just use pop inside the -n loop: perl -0ne'print s/${\pop}//g' file word If the word is the first argument, then you have a problem. You have to remove the word from @ARGV _before_ the first pass of the -n loop, which means you have to use an INIT block (often too long!): perl -0ne'INIT{$a=shift}print s/$a//g' word file By the way, it's better to use -p here. -p is often shorter than print, especially if you're already using -n. perl -0pe'$_=s/${\pop}//g' file word Eugene -- Pluralitas non est ponenda sine neccesitate -- \\/illiam of ()ckham