2013-09-30 82 views
2

我用perl -e爲十六進制數(523cc261)轉換爲有意義的日期:的Perl -e領域替代

perl -e 'my $t=localtime 0x523cc261; print $t . "\n"' 
Fri Sep 20 21:47:13 2013 

但是我不能夠給腳本它上面的代碼所需要的數值是提供prompt.I試圖取代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)。

+0

'0x'不是運營商。作爲一個整體,「0x523cc261」是數字文字。 – ikegami

回答

3

最簡單的方法是將時間作爲參數傳遞給Perl腳本。我已經重寫劇本是一個小更簡潔,也:

% b=523cc261 
% perl -E 'say scalar localtime hex $ARGV[0]' $b 
Fri Sep 20 14:47:13 2013 
1

可以使用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;' 
+0

'$ ENV ENV'版本具有在Windows上工作的額外好處。 –