Как создать переменные, используя для цикла в Perl? - PullRequest
0 голосов
/ 16 ноября 2011

Я использую Perl и хочу создать переменные в цикле.Так что каждый цикл создаст мне переменную с разной нумерацией.например, первый цикл создаст:

num1 = x;

второй цикл создаст

num2 =x;

Спасибо за любую помощь

Ответы [ 2 ]

6 голосов
/ 16 ноября 2011

Если вам действительно нужно назвать их, то хеш должен работать так же хорошо.Я не рекомендую это, но вы можете сделать это.Я просто показываю вам, как «называть» вещи систематическим образом, так же, как вы используете первоклассные переменные.

my %hash;
my $i = 0;
for ( @list ) { 
    $hash{ 'num' . ++$i } = $_;
}

Опять же, это довольно бессмысленно для имен чисел в соответствии с их порядком, когда массив делает что-то похожее, плюс вам никогда не придется беспокоиться о нарушении лексикографического порядка.

Итак, подумайте о проблеме, которую вы пытаетесь решить, назвав переменные, чтобы решить, является ли это наилучшим способом.


Я только что вспомнил, что сделал, когда хотел набрать как можно меньше отличающихся от скалярного синтаксиса.Он основан на том факте, что *_ является глобом, но в GLOB есть определенные слоты, которые не используются.

Таким образом, вы можете использовать local %_;

Таким образом, есть только 3 дополнительных символов для ввода любого из этих типов псевдо-переменных:

$_{num001} += 43;

Конечно, это то же количество дополнительных символов, которое вы должны ввести также

$v{num001} += 43;

.

6 голосов
/ 16 ноября 2011

Используйте массив и добавляйте число к каждой итерации.

my @nums;

for (1..10) {
    push @nums, $_; # your `x'
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...