如何将perl哈希转换为一系列标量变量?

dje*_*kyb 3 perl perl-hash

我从html表单获取输入.有一堆文本输入,因此有一堆键值对.当一个人有超过三对时,你会看到我现在的方法非常乏味.那,或者我只是懒惰.

我想知道,是否有更有效的方法将哈希转换为一系列标量变量?我希望密钥是变量名,设置为密钥的值.

我对perl比较新,对不起,如果这是一个愚蠢的问题.

#!/usr/bin/perl
use strict;
use warnings;
use CGI;
use CGI qw(:standard Vars);

print "Content-type: text/html\n\n";

my %form = Vars();

$hourly = $form{hourly};
$hours_w = $form{hours_w};
$rent_m = $form{rent_m};
#...
Run Code Online (Sandbox Code Playgroud)

Eug*_*ash 14

您可以使用哈希切片一次分配给多个变量:

my ($hourly, $hours_w, $rent_m) = @{$form}{qw(hourly hours_w rent_m)};
Run Code Online (Sandbox Code Playgroud)

动态创建变量需要eval().


Dal*_*aen 5

使用CGI的OO界面.

my $q = CGI->new();
$q->import_names('Q');
print $Q::hourly; # hourly param, if any
Run Code Online (Sandbox Code Playgroud)

不要将import_names导入全局命名空间(main::),否则你迟早会遇到麻烦.