- 论坛徽章:
- 145
|
回复 1# romanticsong
1. shell variable use %ENV, ex: %ENV{"B"}
$ export B="UserPassword"
$ perl -e 'print "shell \$B=$ENV{B}\n"'
shell $B=UserPassword
2. \1 change to $1 ==> ${1}
perldoc perlre
Warning on \1 Instead of $1
Some people get too used to writing things like:
$pattern =~ s/(\W)/\\\1/g;
This is grandfathered (for \1 to \9) for the RHS of a substitute to
avoid shocking the sed addicts, but it's a dirty habit to get into.
That's because in PerlThink, the righthand side of an "s///" is a
double-quoted string. "\1" in the usual double-quoted string means a
control-A. The customary Unix meaning of "\1" is kludged in for
"s///". However, if you get into the habit of doing that, you get
yourself into trouble if you then add an "/e" modifier.
s/(\d+)/ \1 + 1 /eg; # causes warning under -w
Or if you try to do
s/(\d+)/\1000/;
You can't disambiguate that by saying "\{1}000", whereas you can fix it
with "${1}000". The operation of interpolation should not be confused
with the operation of matching a backreference. Certainly they mean
two different things on the left side of the "s///".
|
|