2

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

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

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

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

4

1 回答 1

6

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

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

这来自hexin的定义perldoc -f hex

似乎您想做相反的事情,将您的十进制数转换为十六进制表示。例如,您可以这样做printf

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

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

于 2013-07-07T05:48:25.380 回答