在Perl变量中使用十六进制值

时间:2013-07-07 05:27:41

标签: perl unix

我有一个变量$count,它将从命令行获取一个十进制值,我有一段代码生成名为filename001 filename002 ....filename00a,filename00b的文件等。它附加一个十六进制数字(对于它生成的每个新文件,没有0x)到filename

我使用变量$count来跟踪附加到filename的数字。我想从生成的文件(Result:等)中提取包含特定文本filename00b filename00a的行。为此,我按以下方式使用grep工具:

`grep "Result:" path to the file/filename0*$count`

这个工作正常,直到我以十六进制变为a时到达第10个文件,但grep命令中的$count被简化为10,因此grep无法找到该文件。我尝试使用hex($count),但它似乎不起作用。它要求$count变量可以递增或递减,并且它仍然保持十六进制值。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:3)

hex中的perl函数将其参数解释为十六进制字符串并返回相应的整数值,例如:

print hex '0xAf'; # prints '175'
print hex 'aF';   # same

这来自hexperldoc -f hex的定义。

您似乎想要反其道而行之,将十进制数转换为十六进制表示。您可以使用printf执行此操作,例如:

printf("%03x", 175); # prints '0af'
printf("%03x", 0xAf); # same

如果要将值保存在变量中,请使用sprintf而不是printf,它会返回字符串而不是打印它。