【发布时间】:2016-01-02 16:38:35
【问题描述】:
例如
$get = <>;
chomp($get);
$$get = "something";
如果用户输入了 $get 的名称 我想将“某事”分配给 $name
【问题讨论】:
-
您要查找的是字典(在 Perl 中称为“散列”)。见this SO post
例如
$get = <>;
chomp($get);
$$get = "something";
如果用户输入了 $get 的名称 我想将“某事”分配给 $name
【问题讨论】:
有办法做到这一点,但你真的不应该这样做。请改用哈希。
use strict;
use warnings;
my $get = <>;
chomp $get;
my %input;
$input{$get} = "something";
【讨论】:
“哈希”(或某些其他语言中的“字典”)就像*一个键值对数组。这实现了您所描述的,因为您可以为变量分配一个值,而无需该变量的固定标识符。
*:散列是不是数组。
见this tutorial on Perl101。此答案中的以下代码 sn-ps 取自此站点。
您可以使用以下语法创建哈希:
my %stooges = (
'Moe', 'Howard',
'Larry', 'Fine',
'Curly', 'Howard',
'Iggy', 'Pop',
);
使用{} 访问和修改值。您也可以使用此语法添加新值。
print $stooges{'Iggy'}; #get existing
$stooges{'Iggy'} = 'Ignatowski'; #Overwrite
$stooges{'Shemp'} = 'Howard'; #Set new
您可以使用delete 函数删除键值对。
delete $stooges{'Curly'};
您可以使用相同的(键)字来获取值或键的列表:
my @stooge_first_names = keys %stooges;
my @stooge_last_names = values %stooges;
【讨论】:
=> 的“胖逗号”分隔符会更常见。含义相同,但使键值对更清晰。