看板 Perl 關於我們 聯絡資訊
如果我想在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
flu: 因為你呼叫sub時傳入的兩個array,用目前的寫法在sub的第一行 01/08 00:34
flu: 通通賦值給@layer1了,也就是 @layer1=(@aaa, @bbb) 01/08 00:35
flu: 解法可以用1. reference 2. sub prototype解決 01/08 01:04
flu: 1的文章可以在板上 /reference 01/08 01:05
DonDonMo: 感謝感謝flu大 已用/@再帶入subroutine解掉 01/08 18:41
flu: 取reference是用"\"喔 01/08 18:54