У меня есть переменная $count
, которая будет принимать десятичное значение из командной строки, и у меня есть фрагмент кода, который генерирует файлы с именем filename001 filename002 ....filename00a,filename00b
и т. Д. Он добавляет шестнадцатеричное число (без 0x) до filename
для каждого нового файла, который он создает.Использование шестнадцатеричных значений в переменной Perl
Я использую переменную $count
, чтобы отслеживать число, добавленное к filename
. Я хочу вытащить строки, содержащие конкретный текст Result:
из сгенерированного файла (filename00b filename00a
и т. Д.). Для этого я использую инструмент Grep следующим образом:
`grep "Result:" path to the file/filename0*$count`
Это работает отлично, пока я не достигну 10-файл, когда 10 становится a
в шестнадцатеричном, но $count
в команде Grep упрощено до 10, так что Grep является не удалось найти файл. Я попытался использовать hex($count)
, но он, похоже, не работает. Требуется, чтобы переменная $count
могла быть увеличена или уменьшена, и она по-прежнему содержит шестнадцатеричное значение. Есть ли способ сделать это?
: Я попытался использовать sprintf, $ count теперь имеет шестнадцатеричный эквивалент десятичного числа, но когда я пытаюсь его увеличить, я получаю сообщение о том, что содержимое в переменной является строкой. Было бы неплохо, если бы метод использовал шестнадцатеричные числа непосредственно в переменной. – Gautam
Целое число является целым числом, независимо от того, смотрите ли вы его в десятичной форме, шестнадцатеричный или восьмеричный - это вопрос форматирования. Храните '$ count' как число, увеличивайте или уменьшайте или манипулируйте им по своему усмотрению, а если хотите, чтобы он был отформатирован как шестнадцатеричный, используйте' sprintf'. Если вы хотите обратное и получите число обратно из шестнадцатеричного _string_, используйте функцию 'hex'' perl'. – janos
@Gautam Вы должны понимать разницу между числом (как значением) и его представлением с символами (обычно называемыми цифрами). Количество x-es здесь «xxxxx» равно «5» в десятичной системе и 'V' в римской системе цифр и' 101' в двоичном формате .., когда вы увеличиваете (добавляете один) на пять x-es, вы получаете ' xxxxxx ', что есть '6' или' VI' или '110' - в зависимости от того, как вы хотите его представлять. – jm666