亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

請問在perl用push需要什么modul呢?

請問在perl用push需要什么modul呢?

慕萊塢森 2022-02-19 17:11:49
我在用perl讀取文件時想建立一個一個二維數組,找匹配的行想把整行記錄在一個二維數組中,可每次都不成功,部分代碼如下,請那位大俠看一下,不甚感激:代碼如下:$array2=[ ["good","just so so","bad"],["good","just so ","bad"],]open INFILE,"<".$file_path.$file_name or die "can't open the file!\n";while($lines=<INFILE>) { @array1=split '',$lines;push @array2,[@array1];}可是讀取值卻報錯,我讀取的方法是“print $array2->[2][1]"運行說沒有初始化或定義,怎么回事?關鍵問題是動態數組產生不了,但是調用初始化沒問題,print $array2->[2][1] 顯示good。
查看完整描述

3 回答

?
縹緲止盈

TA貢獻2041條經驗 獲得超4個贊

Perl中沒有所謂的二維數組,Perl中的二維數組實際上是引用,用@開頭是不對的,
$array2=[ ["good","just so so","bad"],
["good","just so ","bad"],
]
建立了一個引用,
但是問題是,樓主在引用這個數據的時候,想使用列表上下文(?),把引用改成列表的時候,應該是@$array2,對吧。
但你在循環里使用了@array2,它原本沒有定義,你一使用就定義了,定義了之后,你又調用$array2[2][1],這個調用實際上調用了@array2數組,而不是引用,引用的引用名和第一個[2]之間要有->,不然調用的是數組,因為你調用了數組,所以[2][1]就是沒有定義的了。
這個具體的建議你看一下Perl關于引用的詳細內容,還有引用用在復雜數據結構上時應該注意的。

查看完整回答
反對 回復 2022-02-21
?
搖曳的薔薇

TA貢獻1793條經驗 獲得超6個贊

perl用push根本不需要什么modul
二維數組,不能那么寫。而且只有兩行,哪來的[2]}[1]?

@array2=( [1, 2, 3, 4],
[5, 6, 7, 8],
[9, 0, 1, 2] );

print ${$array2[2]}[1]."\n\n";

查看完整回答
反對 回復 2022-02-21
?
達令說

TA貢獻1821條經驗 獲得超6個贊

用的是引用,初始化沒錯,不過[2] 的確不存在,
push 是perl的內建函數 ,不用module,
應該是 push @array2,@array1;
push 第二個參數可以直接是數組,不應該是引用。

查看完整回答
反對 回復 2022-02-21
  • 3 回答
  • 0 關注
  • 178 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號