【问题标题】:How can I assign a variable's content to a variable's name in perl? [duplicate]如何在 perl 中将变量的内容分配给变量的名称? [复制]
【发布时间】:2016-01-02 16:38:35
【问题描述】:

例如

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

如果用户输入了 $get 的名称 我想将“某事”分配给 $name

【问题讨论】:

标签: perl variables assign


【解决方案1】:

有办法做到这一点,但你真的不应该这样做。请改用哈希。

use strict;
use warnings;

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

【讨论】:

    【解决方案2】:

    “哈希”(或某些其他语言中的“字典”)就像*一个键值对数组。这实现了您所描述的,因为您可以为变量分配一个值,而无需该变量的固定标识符。

    *:散列是不是数组。

    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;
    

    【讨论】:

    • 将散列写为=&gt; 的“胖逗号”分隔符会更常见。含义相同,但使键值对更清晰。
    • 好吧,我希望访问者会点击链接,因为那里提到了胖逗号样式。我不知道它更常见,
    • “哈希不是数组”为什么要首先提到数组?
    • @Borodin 我应该编辑说“列表”吗?这也是某些语言中的一种数据类型。或者也许是“组”
    • @Arc676:嗯。很难以哈希是外星人的心态思考!正是出于这个原因,我个人讨厌术语“关联数组”,并且因为标准数组将索引与值“关联”,所以它根本没有用。最后我认为“地图”或“表格”的想法最能代表这个想法,您可以参考Wikipedia's hash table条目来完成繁重的工作
    猜你喜欢
    • 2013-03-11
    • 2016-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-21
    • 2011-08-19
    • 2023-02-09
    • 1970-01-01
    相关资源
    最近更新 更多