[英]Perl -e field substitution
我正在使用perl -e將十六進制數(523cc261)轉換為有意義的日期:
perl -e 'my $t=localtime 0x523cc261; print $t . "\n"'
Fri Sep 20 21:47:13 2013
但是我無法編寫腳本,因為上面的代碼需要在提示符下提供值。我嘗試用變量替換523cc261
,但它不起作用:
b=523cc261
perl -e 'my $t=localtime 0x`echo b`; print $t . "\n"`
Backticks found where operator expected at -e line 1, near "0x`echo b`"
(Missing operator before `echo b`?)
syntax error at -e line 1, near "0x`echo b`"
我的問題是如何通過腳本中的參數提供十進制值( 523cc261
)。
最簡單的方法是將時間作為參數傳遞給Perl腳本。 我也將腳本重寫得更加簡潔:
% b=523cc261
% perl -E 'say scalar localtime hex $ARGV[0]' $b
Fri Sep 20 14:47:13 2013
您可以使用ENV HASH:
$ b=523cc261 perl -le 'my $t = scalar localtime hex $ENV{"b"}; print $t;'
另一個解決方案(有點混亂, $b
是一個shell變量):
$ b=523cc261 perl -le 'my $t = scalar localtime hex "'$b'"; print $t;'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.