in reply to Command-line arguments to command-line Perl

Take a look at Perl's -s option.

Ignoring any quoting issues, something like this should work:

perl -pi -se 's/.*'def'.*''/\t"def" => "dumper\/$D.def",/g' -D=ADCIF C +onfigFile

Note: That -D=... becomes $D inside the script.


Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
RIP an inspiration; A true Folk's Guy

Replies are listed 'Best First'.
Re^2: Command-line arguments to command-line Perl
by RecursionBane (Beadle) on Oct 04, 2010 at 05:01 UTC

    Thanks for the suggestion, BrowserUk. I wasn't able to get this to work, because perl seemed to think that the argument was meant for it, rather than the script, and I ended up using suhailck's BEGIN() solution, instead.

    I do appreciate everyone's time and effort in helping me understand one of Perl's lesser-known functionalities! Thanks, everyone!

    ~RecursionBane

      I wasn't able to get this to work, because perl seemed to think that the argument was meant for it, rather than the script,

      Sorry. I don't often use -s with -e.

      You have to use -- to delineate between switches meant for perl, and those meant for the -e script:

      perl -pi -se's/.*'def'.*''/\t"def"=>"dumper\/$D.def",/g' -- -D=ADCIF C +onfigFile

      Not very practical on the command line, but useful in shell scripts.


      Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
      "Science is about questioning the status quo. Questioning authority".
      In the absence of evidence, opinion is indistinguishable from prejudice.