我使用perl -e将十六进制数字(523cc261)转换为有意义的日期:
perl -e 'my $t=localtime 0x523cc261; print $t . "\n"'
Fri Sep 20 21:47:13 2013
但是我无法编写脚本,因为上面的代码需要在prompt上提供的值。我尝试用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 :(得分:3)
最简单的方法是将时间作为参数传递给Perl脚本。我已经将脚本改写为更简洁一点:
% b=523cc261
% perl -E 'say scalar localtime hex $ARGV[0]' $b
Fri Sep 20 14:47:13 2013
答案 1 :(得分: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;'