如何在 perl 中将变量的内容分配给变量的名称?

How can I assign a variable's content to a variable's name in perl?

例如

$get = <>;
chomp($get);
$$get = "something";

如果用户为 $get 输入名称 我想将 "something" 分配给 $name

有很多方法可以做到这一点,但你真的不应该这样做。请改用哈希。

use strict;
use warnings;

my $get = <>;
chomp $get;
my %input;
$input{$get} = "something"; 

A "hash"(或某些其他语言中的 "dictionary")就像*一个 key-value 对数组。这实现了您所描述的,因为您可以为变量赋值而无需该变量的固定标识符。

*: 哈希是 不是 数组。

参见this tutorial on Perl101。此答案中的以下代码片段来自此站点。

您可以使用以下语法创建哈希:

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 函数删除 key-value 对。

delete $stooges{'Curly'};

您可以使用相同的(关键字)词获取值或键的列表:

my @stooge_first_names = keys %stooges;
my @stooge_last_names = values %stooges;