Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1563332
  • 博文数量: 289
  • 博客积分: 11086
  • 博客等级: 上将
  • 技术积分: 3291
  • 用 户 组: 普通用户
  • 注册时间: 2006-06-22 17:06
个人简介

徐小玉的博客。

文章分类

全部博文(289)

文章存档

2023年(6)

2022年(1)

2021年(2)

2020年(9)

2019年(9)

2018年(6)

2017年(10)

2016年(10)

2014年(3)

2013年(4)

2011年(12)

2010年(16)

2009年(14)

2008年(119)

2007年(48)

2006年(20)

我的朋友

分类:

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大已經說的很詳盡
再來
$_在迴圈上也很好用

@bananas = ("monkey \n", "eat\n");
foreach (@bananas) { # ("monkey \n", "eat\n",...)
   chomp;
   print; # monkey eat
}

map { print "$_. this is $_\n" } (1..10);
匿名
張貼於: 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)混淆
阅读(1047) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~