徐小玉的博客。
分类:
2007-08-30 16:08:48
請問@_與$_如何使用?@_與$_各代表什麼意?
請問@_與$_如何使用?@_與$_各代表什麼意? | |
張貼於: 2006/1/20 10:30 | |
會員二級 註冊日: 2005/12/28
來自:
張貼數: 32
|
Re: 請問@_與$_如何使用?@_與$_各代表什麼意?
@_ 為sub(副程式)的傳入參數的陣列 簡單講就是你給副程式的參數都會放到這裏面 sub mysub{ print @_; ($sString, $sVal ) = @_; # 一般使用都會取出 ... } mysub( "abc", 123); #副程式中的 @_ = ( "abc" , 123) $_ 是"預設變數",這是perl最常用到的變數, 也是perl與其他語言的不同點(特有的特點) 例: print; # 同等 print $_; chomp; # 同等 chomp $_; foreach( @array) # 同等 foreach $_ (@array) s/xx/xx/; # 同等 $_ =~ s/xx/xx/; m/xx/; # 同等 $_ =~ m/xx/; .....還有一堆---當你覺得程式碼少了一些東西時 (以別種程式語言,角度來看),別忘要想到很可能就是$_ 以上,如有錯誤,不吝指教 |
張貼於: 2006/1/20 20:18 | |
會員四級 註冊日: 2005/7/12
來自:
張貼數: 136
|
Re: 請問@_與$_如何使用?@_與$_各代表什麼意?
jason680大已經說的很詳盡 再來 $_在迴圈上也很好用 如
|
匿名 |
張貼於: 2006/1/22 22:13 |
Re: 請問@_與$_如何使用?@_與$_各代表什麼意?
# 再加一些$_的例子 #===== 有簡單的 cat FILE 的做用 ========= while(<>){ print; } #=============================== #===== 有簡單 grep patten FILE 的做用 === while(<$ARGV[1]>){ print if m/$ARGV[0]/o; } #====================================== #=====取出hash(雜湊)的每一個key ========== foreach(keys %hHash){ print "Key= $_, Val=$hHash{$_}\n"; } #=====如果要排序,別忘了加 sort ============ #====================================== sub sum{ foreach(@_){ $sSum += $_; } # 省略了 return $sSum; } while(){ next if m/^#/; @aGrade = split; print join("\t",@aGrade) , "\n" ; $sMaxMath = $aGrade[2] if $sMaxMath < $aGrade[2]; $sMaxEng = $aGrade[3] if $sMaxEng < $aGrade[3]; $sMaxPhy = $aGrade[4] if $sMaxPhy < $aGrade[4]; $sAvg = ∑(@aGrade[2,3,4]); $sMaxAvg = $sAvg if $sMaxAvg < $aAvg; } print "\nHighest Math = $sMaxMath\n"; print "Highest Eng. = $sMaxEng\n"; print "Highest Phy. = $sMaxPhy\n"; __DATA__ Name No Math Eng Phy John 1 85 90 83 Mary 2 88 82 80 Alice 3 78 84 92 #================================= #註:本人命名習慣 # Scalar(純量) $sName # Array (陣列) @aName ,陣列中元素 $aName[0] # Hash (雜湊) %hName , 雜湊中元素 $hName{"abc"} # 如此對我而言在使用"陣列"與"雜湊"中的各別元素時, # 才不易與純量($sName)混淆 |