我有一个变量$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
变量可以递增或递减,并且它仍然保持十六进制值。有没有办法做到这一点?
答案 0 :(得分:3)
hex
中的perl
函数将其参数解释为十六进制字符串并返回相应的整数值,例如:
print hex '0xAf'; # prints '175'
print hex 'aF'; # same
这来自hex
中perldoc -f hex
的定义。
您似乎想要反其道而行之,将十进制数转换为十六进制表示。您可以使用printf
执行此操作,例如:
printf("%03x", 175); # prints '0af'
printf("%03x", 0xAf); # same
如果要将值保存在变量中,请使用sprintf
而不是printf
,它会返回字符串而不是打印它。