Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

Re: Global matching not working as expected

by afoken (Chancellor)
on Mar 19, 2016 at 10:56 UTC ( [id://1158307]=note: print w/replies, xml ) Need Help??


in reply to Global matching not working as expected

perl -pe 's/<Last-Modified>(.*)<\/Last-Modified>/`date -d \"$1\" \"+%s\"`/ge&&s/\n//' mydoc.xml

Let's hope that mydoc.xml never contains something like this:

<Last-Modified>hehe"; rm -rf / ; true "</Last-Modified>

NEVER pass unverified user input to a shell (i.e. ``, qx(), system $string, exec $string), and NEVER without quoting problematic characters. And don't hope that all shells have the same quoting rules. They differ even for the common unix shells (see e.g. http://www.in-ulm.de/~mascheck/various/), and it gets very much worse as soon as you leave unix. CMD.EXE and especially COMMAND.COM just cause mental illness. If you want to stay sane, try to avoid the shell. Stay with perl modules, or at least use the list forms of system and exec. perlipc has some examples for safely replacing `` and qx().

Alexander

--
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so". ;-)

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1158307]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others browsing the Monastery: (4)
As of 2024-04-25 05:31 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found