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

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

perl為什么數組名不能是變量

perl為什么數組名不能是變量

胡說叔叔 2019-04-12 07:06:51
use strict;my $array_name = abc;my ${$array_name}[0] = bcd;報錯:Can't use string ("abc") as an ARRAY ref while "strict refs"in use at read.pl line xx.去掉strict后即可正常運行。想問問為什么use strict就不能用變量作為數組名,如果去掉strict,會有什么風險?
查看完整描述

2 回答

?
慕神8447489

TA貢獻1780條經驗 獲得超1個贊

你這樣的命名本來就是錯的... 去掉 strict, 你就不會發現這樣的命名是不對的,

往後的處理也將是錯的. ( 如果結果還是對的, 那只是你走運而已 )

想像一下
my @array = ( 1..10 );
my $array[1] = 10;
@array = ();
print @array;

你還能理解 $array[1] 是甚麼嗎 ?
而如果你用的 perl 是 5.14 或之後, 你這樣的宣告方法應該是直接報錯, 不管你有沒有 use strict;

另外值得一提的就是

my $array_name = abc;

其實就是
my $array_name = abc(); # 或者
my $array_name= &abc(); # 的意思,

而你可能想這是
my $array_name = "abc" ;

查看完整回答
反對 回復 2019-04-13
?
FFIVE

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

問題出在
my @array = ( 1..10 ); # 你已定義了 @array
my $array[1] = 10;; # 這里你就不要用 my

@array 是一個變量名稱 "symbol", 你可以 my

$array[1] 是一個地址段(引用) "refs" , 你不能對一個引用作 my 的宣告

查看完整回答
反對 回復 2019-04-13
  • 2 回答
  • 0 關注
  • 980 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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