簡體   English   中英

Perl -e字段替換

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM