Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:
sed 's/^ \{2,\}//' -i filename.html
But that exact same code doesn't run when it's in a Perl script. No error message, the script itself runs, but my file doesn't get changed. The only difference from the command line version is that in the script I enclose the code in backticks and add a semicolon at the end.
I did some troubleshooting and found that my sed command would run properly when called from my Perl script as long as the regexp was simple (e.g., s/blue/green/) , but it failed when I either used the ^ operator to signal the start of a line, or the \{2,\} notation to specify 2 or more matches.
I know that I could get the result I want with Perl exclusively by opening the file, reading the contents, applying a substitution regexp, saving the file back to the disk, and closing it, but that seems rather cumbersome when I should be able to do it with a single line.
I do really need to run this from a script rather than the command line, because once I get it working I'll actually be processing thousands of files, and using Perl to evaluate filenames and last mod dates to determine whether a particular file needs to be edited.
What am I doing wrong?
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: sed regexp works on the command line, but not from Perl script
by Corion (Patriarch) on Dec 18, 2006 at 11:37 UTC | |
by Anonymous Monk on Dec 19, 2006 at 12:15 UTC | |
by Corion (Patriarch) on Dec 19, 2006 at 12:28 UTC | |
|
Re: sed regexp works on the command line, but not from Perl script
by Jasper (Chaplain) on Dec 18, 2006 at 12:06 UTC | |
|
Re: sed regexp works on the command line, but not from Perl script
by swampyankee (Parson) on Dec 18, 2006 at 23:21 UTC | |
|
Re: sed regexp works on the command line, but not from Perl script
by blazar (Canon) on Dec 19, 2006 at 14:08 UTC |