in reply to Using a regex saved in an environment variable

Your problem here is that you're actually using two regexes. Interpolating these separately works fine:

ken@ganymede: ~/tmp $ cat pm_re2_file.txt Hello World --Begin-- Cat and Dog --End-- other stuff This is a test Good Bye ken@ganymede: ~/tmp $ RE1="--Begin--" RE2="--End--" perl -00 -ne 'print if /$ENV{RE1}/ && +/$ENV{RE2}/' pm_re2_file.txt --Begin-- Cat and Dog --End-- ken@ganymede: ~/tmp $

If you have a specific requirement to use just one environment variable, I'd suggest using eval:

ken@ganymede: ~/tmp $ RE1="/--Begin--/ && /--End--/" perl -00 -ne 'print if eval $ENV{RE1} +' pm_re2_file.txt --Begin-- Cat and Dog --End-- ken@ganymede: ~/tmp $

-- Ken