[問題] 請問如何在陣列名稱內使用變數?

看板Perl作者 (192)時間14年前 (2009/12/10 03:31), 編輯推噓1(104)
留言5則, 2人參與, 最新討論串1/1
這是錯誤訊息 [2s@biofelix step13]$ perl test2.pl String found where operator expected at test2.pl line 26, near "$new"$j"" (Missing operator before "$j"?) String found where operator expected at test2.pl line 26, near "$new"$j"" (Missing operator before "$j"?) syntax error at test2.pl line 26, near "$new"$j"" syntax error at test2.pl line 31, near "}" Execution of test2.pl aborted due to compilation errors. 這是程式碼 my @new0 =(-0.666120382,0.710307956,-0.403687076,-0.115919598,-0.471538268,0.003232392,0.663044603,0.12565012,0.572255225,0.789267707,-0.28384541,0.33065012,0.222001743,-0.150682238,-0.395267991,0.273047689,0.097067134,-0.350436333,0.74937654,-0.535627189,0.789267707); my @new1 =(-0.254247447,0.602486967,0.798521446,0.763591871,-0.207787592,-0.188480954,-0.016876421,-0.385491539,0.388111985,0.066266721,-0.184115885,0.164200219,-0.498136335,-0.295915153,0.414841079,-0.223634611,0.30654738,-0.834221533,-0.219115225,-0.052009152,0.798521446 ); my @new2 =(-0.614500164,0.467702969,-0.473956345,-0.313147777,-0.561305973,-0.295769369,0.68004174,-0.017966672,0.283430035,0.74566138,-0.494420508,0.587032963,0.391538423,0.026790458,-0.491837217,0.478106394,-0.125590083,-0.224505224,0.754891746,-0.486181426,0.754891746 ); my @new3 =(0.109648399,0.001551481,-0.281100143,-0.269226038,0.153057864,0.998233389,-0.147883481,0.119731379,0.232324704,-0.256238373,0.174226833,-0.296668376,-0.179559345,0.065774609,0.104829448,0.005183142,0.006083508,0.245639622,-0.197919448,0.286519578,0.998233389 ); my @new4 =(-0.583041776,0.82970608,-0.221065366,0.119874237,-0.316830929,0.077623902,0.479256593,0.222309028,0.591467586,0.668656317,-0.26750159,0.201398406,0.021938352,-0.389113231,-0.411611557,0.054898812,0.375719605,-0.418819915,0.676814352,-0.535528363,0.82970608 ); my @new5 =(0.610550557,-0.695435639,-0.517677872,-0.594350112,0.540908791,0.429919814,-0.371604413,0.340742374,-0.495269351,-0.556784349,0.435994587,-0.398669398,0.211631262,0.299581735,-0.03155901,-0.002582382,-0.126761291,0.8685913,-0.313902551,0.389717468,0.8685913 ); my @new6 =(0.035159025,-0.020070306,-0.013400685,0.143929791,0.104996554,-0.304557403,0.239049529,0.413883412,-0.389605379,0.440221817,-0.217490439,-0.080127113,0.6667255,-0.207973014,-0.309704669,-0.212459791,0.314718073,0.069920414,0.502218396,-0.696474058,0.6667255 ); my @new7 =(-0.574690031,0.446791254,-0.109439358,-0.365578181,-0.686505933,0.279677732,0.581882947,-0.701217787,0.604762481,0.188170733,-0.095647029,0.485654303,0.058552764,0.659866425,0.695482055,0.73260117,-0.544072572,-0.45314756,-0.208522098,0.066187711,0.73260117 ); my @new8 =(0.361556484,-0.66779756,-0.255811154,-0.624885118,0.076567326,0.127794068,-0.127907029,-0.34217255,-0.39176879,-0.534107231,0.254241793,0.046161588,0.189706299,0.775131335,0.507593795,0.394699019,-0.682868454,0.462818279,-0.615759457,0.528857728,0.775131335 ); my @new9 =(0.475903217,-0.755096258,-0.240470226,-0.391772101,0.398023939,0.328696043,-0.527805047,0.07867839,-0.155821779,-0.689772928,0.598903055,-0.479301688,-0.244531655,0.281628822,0.110262706,0.026826886,-0.202271932,0.735944239,-0.506985766,0.720125383,0.735944239 ); my @new10=(-0.761806809,0.500166899,-0.181529032,-0.324316072,-0.81747287,0.035746484,0.846680861,-0.505083232,0.495480676,0.613499511,-0.340714215,0.599749892,0.425577175,0.509769966,0.2960077,0.734811077,-0.451218012,-0.480301145,0.274990563,-0.375384288,0.846680861 ); my @new11=(0.182019752,0.099808081,-0.091022378,0.365414335,0.442145652,-0.159181057,-0.098486657,0.864754247,-0.286367076,0.379584667,-0.139636018,-0.340743311,0.238889783,-0.782857387,-0.860378941,-0.65347247,0.722282248,0.182746856,0.712071191,-0.574941277,0.864754247 ); my @new12=(-0.495971814,0.536215112,-0.484708708,-0.530711286,-0.531946896,0.294594184,0.63545581,-0.374721075,0.50784505,0.366411403,-0.29203505,0.515207944,0.194647515,0.459647788,0.267842361,0.649237072,-0.374168703,-0.298234527,0.139252558,-0.087173217,0.649237072 ); my @new13=(-0.892603119,0.484020978,-0.349301398,-0.311927745,-0.854579061,-0.240038177,0.978283122,-0.236480773,0.486383903,0.903323816,-0.272935487,0.510049147,0.612604393,0.344272222,-0.042344685,0.668564138,-0.422964502,-0.376128252,0.677400603,-0.682816611,0.978283122 ); my @new14=(-0.631142101,0.471925716,-0.242899992,0.003922746,-0.372759861,0.041612858,0.664446468,0.286265191,0.488036376,0.782280565,0.155045998,-0.137357836,0.466966918,-0.076389765,-0.159075025,0.102829592,0.06797356,-0.178852686,0.687441586,-0.763703032,0.782280565 ); my @new15=(-0.598347251,0.351041303,-0.313891341,-0.054821829,-0.405702962,-0.257146154,0.745078568,0.345427702,0.182117342,0.933571448,-0.117995665,0.07333813,0.731526178,-0.089041379,-0.425336751,0.140259113,0.019155827,-0.125801313,0.90300552,-0.927074553,0.933571448 ); my @new16=(-0.549305834,0.976584669,0.220913778,0.411870798,-0.393381736,-0.065062007,0.371033284,-0.18008737,0.617433593,0.498552759,-0.435701042,0.41804286,-0.285827406,-0.361238361,-0.028290188,0.009108774,0.323747323,-0.829442314,0.317556372,-0.341066241,0.976584669 ); my @new17=(-0.57358101,0.614120201,-0.414138406,-0.426707883,-0.655415692,-0.090057364,0.763429349,-0.427033622,0.355307258,0.560669918,-0.625300426,0.825323198,0.325630541,0.384693697,0.090173765,0.675690322,-0.394903743,-0.480839713,0.335715929,-0.286366313,0.825323198 ); my @new18=(-0.457386934,0.270329459,-0.337485679,0.006294112,-0.18951906,0.124276332,0.362640745,0.479086335,0.41918353,0.652534078,0.049297388,-0.218938787,0.224656225,-0.355210954,-0.63103358,-0.030972773,0.267839645,0.066095618,0.800429068,-0.540397086,0.800429068 ); my @new19=(0.71306437,-0.330748578,0.458095956,0.625577596,0.826759316,-0.025426986,-0.817236582,0.564594134,-0.465622046,-0.503268743,0.328170595,-0.669927127,-0.390689787,-0.690027275,-0.243899877,-0.925841468,0.674416461,0.284842019,-0.220250359,0.177643831,0.826759316 ); //以上是想比對的資料 for(my $j=0;$j<=19;$j++) { for(my $i=0;$i<=19;$i++) { if ($new"$j"[20]==$new"$j"[$i]) { print "new:$j \t original:$i \t $new0[$i] \n"; } } } 請問 有辦法想讓@new0 ~ @new19 用迴圈控制嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.58.180.62

12/10 09:53, , 1F
看不太懂你要比對什麼 要不要再說清楚點?
12/10 09:53, 1F

12/10 09:54, , 2F
錯誤訊息代表電腦不懂$new"$j"是什麼東西 不能那樣寫
12/10 09:54, 2F
我定義20個陣列 @new0~@new19 每個陣列內有21(第0~20)個數值 在一個陣列內 我想用for比對第0~19個數值 是否和第20個數值相等 就是內層的for 這邊是可以正確跑出結果的 然後我加了外層的for 想讓20個陣列 @new0~@new19 每個陣列都跑過一次 所以 陣列@new0 ~ @new19 我想用 $new(0..19)[0..20]來跑迴圈 單一陣列內[0..20]的部分沒問題 有什麼辦法可以讓19個陣列用迴圈依序走過嗎? ※ 編輯: lqz 來自: 140.115.49.12 (12/10 11:28)

12/10 11:42, , 3F
爬到板上1726篇 先試試看
12/10 11:42, 3F

12/10 11:54, , 4F
Arrays of Arrays http://0rz.tw/wwKCt 應該可以幫你
12/10 11:54, 4F

12/10 16:27, , 5F
好了 感謝j大 最後用 ${$array[$j]}[$i] 的方法
12/10 16:27, 5F
文章代碼(AID): #1B7_hqVt (Perl)