У меня есть скрипт perl, который telnets к некоторому сетевому оборудованию, запускает команду для сбора информации о карте и возвращает каждую строку в массив, который затем отображается в хэш. То, что я хочу сделать, это выполнить регулярное выражение, чтобы захватить номера карт в начале каждого строкового значения в хэше и вставить их в массив. Но только половина из них ... Потому что каждая карта в оборудовании удваивается в выводе из-за того, как поставщик возвращает информацию после команды.Автоматическое увеличение значения хэш-значения
Ниже приведено описание @output, выход которого показан после запуска команды.
1/1 1187100L1 , Combo A2+ AE.
1/4 1187100L2 , Combo A2+ K.
1/5 1187100L1 , Combo A2+ V
1/16 1187100L2 , Combo A2+ K
1/1 1187100L1 , Combo A2+ No Alarms
1/4 1187100L2 , Combo A2+ No Alarms
1/5 1187100L1 , Combo A2+ No Alarms
1/16 1187100L2 , Combo A2+ No Alarms
Существует часть, которая разделяет скалярное значение массива @output на половину. То, что я хочу сделать, это выполнить $ hash {} retrieve и auto increment, что по числу скаляров/2.
Я хочу только получить первые 4 номера карт, 1/1, 1/4, 1/5 и 1/16.
Любые предложения?
Вот часть моего кода, мне нужна помощь с:
if (@output) {
@ccl = grep (/Combo/, @output);
my %hash = map { ++$shn => $_ } @ccl;
my $an = scalar(@ccl)/2;
if ($hash{0} =~ /^(\d+\/\d+)/) {
push(@numbers, $1);
print "@numbers\n";
}
}
выше работает отлично, но только для первого значения в хэш. Я хочу запустить это только для половины значений в хэше.
Что вы имеете в виду под "автоматическим приращением"? Единственное использование этого термина, который я знаю, - в базах данных, где столбец идентификатора автоматически присваивается с добавочными значениями при вставке строк. Чем он отличается от простого увеличения значения в хеше? – Barmar
В вашем коде вы никогда не используете переменную '$ an'. Разве это не то, что вы сказали, что хотите использовать в автоматическом приращении? – Barmar
Точно, его переменная $ an, которую я хочу автоматизировать, увеличивает значение хэша, которое в этом случае является числом 4. Но я не знаю, как применить его между {} в $ hash {}. Что я подразумеваю под автоматическим приращением, так это возможность писать следующие строки в одной строке: $ hash {0} $ hash {1} $ hash {3} $ hash {4} Автоматически основан на числе в $ an. Если я делаю $ hash {$ an}, это просто означает $ hash {4}. Я хочу, чтобы он выполнял эту команду в секундах в $ an. – erik907