[英]How do I create a 2D array in Perl?
我試圖在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;
它返回非...因為我想返回2d數組。
更新
我仍然感到困惑,因為當我執行查詢時,它給了我一個單詞列表,如:
select word from words where language_id = 1
(1=english, 2 - chinese, 3 - french)
我正在使用for循環語言,以便從數據庫中獲取所有單詞
問題是我想循環並希望數組自動添加到2d數組。
放置use warnings; use strict;
use warnings; use strict;
在你編寫的每個程序的頂部。 這兩個pragma將為你捕獲許多錯誤。
您無法訪問帶有(...)
后綴的數組。 該構造用於調用函數mysub(...)
或$mysubref->(...)
。 要訪問數組元素,請使用后綴[ index ]
。 在Perl中,多維數組需要每個級別一對[...]
。 這是因為2D數組只是一個數組,其中每個元素也是一個數組。
my @array = ([1, 2, 3], [4, 5, 6], [7, 8, 9]);
my $top_left = $array[0][0]; # 1
my $bottom_right = $array[2][2]; # 9
print "@$_\n" for @array;
1 2 3 4 5 6 7 8 9
您可以在perldoc.perl.org上了解有關Perl數據結構和Perl其余部分的更多信息 。 以下是一些直接鏈接:
最后, @language.length
沒有按照你的想法做到。 它在標量上下文中使用@language
,它的長度為數字,然后將其與length($_)
連接起來。 結果表達式就像(scalar @language) . length($_)
(scalar @language) . length($_)
。 由於<=
運算符在其參數上強制使用標量上下文,因此您只需編寫$id <= @language
。 但是,Perl為您提供了一種更自然的方式來編寫這種類型的循環:
for my $id (0 .. @language) {...}
要么
for my $id (0 .. $#language) {...}如果你的意思是
$id < @language
因為$language[scalar @language]
是一個超出數組末尾的元素。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.