可能重复:
Perl中多行注释的常见解决方法是什么?
如何为Perl源代码添加多行注释?
我在Perl中有两个数据结构:
数组:
my @array2 = ( "1", "2", "3");
for $elem (@array2) {
print $elem."\n";
}
Run Code Online (Sandbox Code Playgroud)
给我以下输出:
1
2
3
Run Code Online (Sandbox Code Playgroud)
还有一个清单:
my @array = [ "1", "2", "3"];
for $elem (@array) {
print $elem."\n";
}
Run Code Online (Sandbox Code Playgroud)
给出以下输出:
ARRAY(0x9c90818)
Run Code Online (Sandbox Code Playgroud)
显然,我想在两种情况下迭代元素,但为什么第二种解决方案只给我这个数组的引用?
直到最近,我一直在使用相同的键将多个值存储到不同的哈希中,如下所示:
%boss = (
"Allan" => "George",
"Bob" => "George",
"George" => "lisa" );
%status = (
"Allan" => "Contractor",
"Bob" => "Part-time",
"George" => "Full-time" );
Run Code Online (Sandbox Code Playgroud)
然后我可以参考$boss("Bob"),$status("Bob")但如果每个键都有很多属性,这就变得笨拙,我不得不担心保持哈希同步.
有没有更好的方法在哈希中存储多个值?我可以将值存储为
"Bob" => "George:Part-time"
Run Code Online (Sandbox Code Playgroud)
然后拆分拆分弦,但必须有一个更优雅的方式.
我知道=>运算符的哈希使用,就像这样
$ cat array.pl
%ages = ('Martin' => 28,
'Sharon' => 35,
'Rikke' => 29,);
print "Rikke is $ages{Rikke} years old\n";
$ perl array.pl
Rikke is 29 years old
$
Run Code Online (Sandbox Code Playgroud)
我认为这只是初始化哈希的语法,但在答案中如何在Perl中将变量限定为const/final?,=>已经被这样使用了
use Readonly;
Readonly my $infilename => "input_56_12.txt";
Run Code Online (Sandbox Code Playgroud)
究竟是什么=>意思?有更多的方法=>可以使用吗?
如何在使用以下程序中的哈希计算实际列表的顺序后维护实际列表的顺序?例如,<DATA>是
a
b
e
a
c
d
a
c
d
b
etc.
Run Code Online (Sandbox Code Playgroud)
使用哈希,我计算每个元素的出现次数.
我想要的是:
a 3
b 2
e 1
c 2
d 2
Run Code Online (Sandbox Code Playgroud)
但是以下程序显示了我的情况.
my (%count, $line, @array_1, @array_2);
while ($line = <DATA>) {
$count{$line}++ if ( $line =~ /\S/ );
}
@array_1 = keys(%count);
@array_2 = values(%count);
for(my $i=0; $i<$#array_1; $i++)
{
print "$array_1[$i]\t $array_2[$i]";
}
Run Code Online (Sandbox Code Playgroud) $hash = { 'Man' => 'Bill',
'Woman' => 'Mary,
'Dog' => 'Ben'
};
Run Code Online (Sandbox Code Playgroud)
Perl的"匿名哈希"究竟做了什么?
我有哈希,其中键的值是其他哈希.
例: {'key' => {'key2' => {'key3' => 'value'}}}
我怎样才能遍历这个结构?
我有数字,需要添加后缀:'st','nd','rd','th'.例如:如果数字为42,则后缀为'nd',521为'st',113为'th',依此类推.我需要在perl中执行此操作.任何指针.
我想在perl中编写一个小的"DBQuery"函数,所以我可以使用一行发送一个SQL语句并接收一个哈希数组,即一个记录集.但是,我遇到了Perl语法的问题(可能还有一些奇怪的指针/引用问题),这阻止了我从数据库中获取哈希的信息.下面的示例代码演示了该问题.
我可以使用以下语法从数组中的哈希中获取数据"Jim":
print $records[$index]{'firstName'}
Run Code Online (Sandbox Code Playgroud)
返回"吉姆"
但是如果我首先将数组中的哈希记录复制到它自己的哈希变量中,那么奇怪的是我无法再访问该哈希中的数据:
%row = $records[$index];
$row{'firstName'};
Run Code Online (Sandbox Code Playgroud)
返回""(空白)
以下是显示问题的完整示例代码.任何帮助表示赞赏:
my @records = (
{'id' => 1, 'firstName' => 'Jim'},
{'id' => 2, 'firstName' => 'Joe'}
);
my @records2 = ();
$numberOfRecords = scalar(@records);
print "number of records: " . $numberOfRecords . "\n";
for(my $index=0; $index < $numberOfRecords; $index++) {
#works
print 'you can print the records like this: ' . $records[$index]{'firstName'} . "\n";
#does NOT work
%row = $records[$index];
print 'but not like this: ' . $row{'firstName'} …Run Code Online (Sandbox Code Playgroud) 我试图在Perl中创建一个2d数组
我的代码:
my @wordsList=();
my @words=();
for ($id=0; $id<=@language.length; $id++)
{
my $eng = $db->selectall_arrayref("select word from words
left outer join language
on words.languageId = language.languageId
where words.languageId = $id
;");
foreach $eng(@$eng)
{
my($word) = @$eng;
$ref_to_Array->[$id][$word] = @words($id,$word);
}
return $words($id, $word);
}
$wordsList= NextWords();
print $wordsList;
Run Code Online (Sandbox Code Playgroud)
它返回非...因为我想返回2d数组.
更新
我仍然感到困惑,因为当我执行查询时,它给了我一个单词列表,如:
select word from words where language_id = 1
(1=english, 2 - chinese, 3 - french)
Run Code Online (Sandbox Code Playgroud)
我正在使用for循环语言,以便从数据库中获取所有单词
问题是我想循环并希望数组自动添加到2d数组.