2

我正在使用 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通过脚本中的参数提供十进制值()。

4

2 回答 2

3

最简单的方法是将时间作为参数传递给 Perl 脚本。我也重写了脚本以使其更简洁:

% b=523cc261
% perl -E 'say scalar localtime hex $ARGV[0]' $b
Fri Sep 20 14:47:13 2013
于 2013-09-30T23:44:43.527 回答
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;'
于 2013-09-30T23:45:23.900 回答