2015-01-29 4 views
0

Как определить скалярные переменные в perl из значений, хранящихся в массиве. Скажем, у меня есть массив как это:Perl, Определить скалярные переменные из массива

my @parameter_list = ("admin_name", "admin_pass", "customer_id", "email", "domains", "subdomains", "aliases", "emails", "ftps", "sqldbs", "sqlusers", "space"); 

Из этого массива я хочу создать скалярные переменные с этим кодом. Я не мог понять, как это сделать:

foreach (@parameter_list) { my \$("test"); } 
+3

Официальный ответ на вопрос 'XY' * почему * вы хотели бы сделать такую ​​вещь. –

+0

Я могу повторно использовать этот список параметров в другом месте в коде вместо этого или переписать его снова. – Johniboy

+1

звучит так, будто вам нужно положить их в хэш, тогда вы можете назвать их по имени. –

ответ

4

Это звучит, как вы хотите, чтобы иметь возможность вызывать переменные имена в массиве. Вы можете создать хэш, который позволяет вам получить доступ к списку по имени, а не по индексу. Ниже код показывает, как вы можете создать хэш из массива имен параметров.

use strict; 
use warnings; 

my @parameter_list = ("admin_name", "admin_pass", "customer_id", "email", "domains", "subdomains", "aliases", "emails", "ftps", "sqldbs", "sqlusers", "space"); 
my %parameters; 

foreach my $parameter (@parameter_list){ 
     $parameters{$parameter} = undef; 
} 

$parameters{'admin_name'}='scott'; 
$parameters{'admin_pass'}='tiger'; 

print "DB login: $parameters{'admin_name'}/$parameters{'admin_pass'}\n"; 

ВЫВОД

DB login: scott/tiger 

Это создаст хэш с именами параметров, не имеющее значения, установленным. Затем вы можете установить значения, указав имя параметра, аналогично вы можете получить доступ к значению переменной, указав ей имя параметра.

Есть другие способы сделать это с помощью таких вещей, как карта, но я оставил их, чтобы они были простыми.

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

+0

Большое спасибо – Johniboy

+0

Если это ответили на ваш вопрос, пожалуйста, примите ответ. Благодарю. –

 Смежные вопросы

  • Нет связанных вопросов^_^