[請益] 用sub function建立子目錄的問題

看板Perl作者時間10年前 (2015/01/08 00:20), 編輯推噓3(303)
留言6則, 2人參與, 最新討論串1/1
如果我想在mother_folder中建立目錄樹(不用File::Path的話) 也就是第一層是@aaa中的三個資料夾, 每個資料夾各建@bbb中的二個資料夾 成功寫法如下: @aaa=(aaa1,aaa2,aaa3); @bbb=(bbb1,bbb2); chdir ("./folder1"); for ($i=0;$i<=$#aaa ;$i++) { mkdir "$aaa[$i]"; chdir ("./$aaa[$i]"); for ($j=0;$j<=$#bbb ;$j++) { mkdir "$bbb[$j]"; } chdir ("../"); } chdir ("../"); 但如果用sub function寫法的話: sub make_folder { my($mother_folder,@layer1,@layer2)=@_; chdir ("./$mother_folder"); for ($i=0;$i<=$#layer1 ;$i++) { mkdir "$layer1[$i]"; chdir ("./$layer1[$i]"); for ($j=0;$j<=$#layer2 ;$j++) { mkdir "$layer2[$j]"; } chdir ("../"); } chdir ("../"); } &make_folder("./folder2",@aaa,@bbb); 會發現在第一個for迴圈時就把@aaa跟@bbb中的資料夾都建在folder2中了 請問這樣的寫法是否有問題呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.228.238.197 ※ 文章網址: http://www.ptt.cc/bbs/Perl/M.1420647612.A.C8B.html

01/08 00:34, , 1F
因為你呼叫sub時傳入的兩個array,用目前的寫法在sub的第一行
01/08 00:34, 1F

01/08 00:35, , 2F
通通賦值給@layer1了,也就是 @layer1=(@aaa, @bbb)
01/08 00:35, 2F

01/08 01:04, , 3F
解法可以用1. reference 2. sub prototype解決
01/08 01:04, 3F

01/08 01:05, , 4F
1的文章可以在板上 /reference
01/08 01:05, 4F

01/08 18:41, , 5F
感謝感謝flu大 已用/@再帶入subroutine解掉
01/08 18:41, 5F

01/08 18:54, , 6F
取reference是用"\"喔
01/08 18:54, 6F
文章代碼(AID): #1KhLoyoB (Perl)
文章代碼(AID): #1KhLoyoB (Perl)