Perl 入門指南 - 特別變數

就像我們常常替熟悉的事物取暱稱一樣, Perl 裡頭有很多預先定義好的特別變數 (special variable) ,需要的時候直接拿來用就可以了




像是 $_ 可取得 foreach 迴圈中每一輪的元素,例如
#!/usr/bin/env perl

@a = reverse((1 .. 10));
print "\n";
foreach (@a) {
    print "$_\n";
}
print "\n";

# 《程式語言教學誌》的範例程式
# http://pydoing.blogspot.com/
# 檔名:demo5.pl
# 功能:示範 Perl 程式
# 作者:張凱慶
# 時間:西元 2013 年 1 月 


這樣子就少定義一個變數了,執行結果會跟之前的例子相同



$_ 也是多用途的,官網對 $_ 的定義為 The default input and pattern-searching space. ,這意思是前文輸入的變數,其他常用的地方像是副程式 (subroutine) 中的參數 (parameter) ,例如
#!/usr/bin/env perl

sub print_newline {
    print "\n";
}

sub print_something {
    print "$_[0]\n";
}
    
sub return_something {
    return $_[0];
}

print_newline;
print_something(return_something("There is no spoon."));
print_newline;

# 《程式語言教學誌》的範例程式
# http://pydoing.blogspot.com/
# 檔名:demo6.pl
# 功能:示範 Perl 程式
# 作者:張凱慶
# 時間:西元 2013 年 1 月 


原本副程式的參數需要用 shift 來設定
$a = shift;


用 $_ 的話,索引值為 0 就是副程式小括弧中的第一個參數,索引值為 1 就是副程式小括弧中的第二個參數,餘下可類推。這樣 demo6.pl 會跟之前 printdemo.pl 的執行結果一模一樣



除了 $_ 之外,特別變數還有很多,像是
$.$/$,$\$"$;$^L$:
$^A$#$?$!$@$$$<$>
$($)$0$[$]$^D$^E$^F
$^H$^I$^M$^O$^P$^T$^W$^X


以上是純量變數 (scalar variable) 的部份,其他還有很多很多,另外須注意暱稱不止一個,像 $_ 也可以用 $ARG 。


特別變數是 Perl 提供給程式設計師方便寫程式的用法,我們還不需要急著學會所有的特別變數,因為裡面很多用法牽涉到更深入的程式設計概念,現在我們需要知道的是 Perl 有這些為數眾多的特別變數,可以簡化程式的寫法。


目前為止,我們寫程式都沒有採取嚴格的寫法,直譯器並不會警告或提醒有哪些地方不妥當,接下來我們來看看 my 與 use 吧!


中英文術語對照
特別變數special variable
副程式subroutine
參數parameter
純量變數scalar variable


您可以繼續參考
軟體開發


相關目錄
回 Perl 入門指南
回 Perl 教材
回首頁


參考資料
http://perldoc.perl.org/perlvar.html
http://www.tutorialspoint.com/perl/perl_special_variables.htm

沒有留言: