Perl子程序參數(shù)問題解答
本文和大家重點(diǎn)討論一下Perl子程序參數(shù)的用法,Perl子程序參數(shù)是數(shù)組或哈希表時(shí),函數(shù)中獲得這些參數(shù)值的方式和一般的標(biāo)量變量是不同的。
Perl子程序參數(shù)是數(shù)組或哈希表時(shí)的問題
Perl子程序參數(shù)是數(shù)組或哈希表時(shí),函數(shù)中獲得這些參數(shù)值的方式和一般的標(biāo)量變量是不同的。
Perl代碼
- #!/usr/bin/perl
- usestrict;
- usewarnings;
- subfunc{
- print"@_\n";
- }
- my$id=1;
- my@info=('PHPfans','phpfans.net');
- my%info=("name"=>"PHPfans","url"=>"phpfans.net");
- func($id,@info);
- [root@PHPfansperl]#perlsub.pl
- 1PHPfansphpfans.net
發(fā)現(xiàn)第一個(gè)參數(shù)和第二個(gè)參數(shù)合并成一個(gè)大數(shù)組了。Perl子程序參數(shù)如果是哈希表的話還會(huì)將鍵值也保存在@_數(shù)組中。問題是怎么將各個(gè)參數(shù)分出來。這里第一個(gè)是標(biāo)量變量,還可以用shift獲取,然后剩下的就是第二個(gè)參數(shù)。但如果兩個(gè)都是數(shù)組變量的話,這種方法顯然就不行。這就要用到引用的方式傳遞。引用和C的指針是一致的,就是某值的地址。Perl的引用和PHP又不太相同,Perl是用反斜線(\)操作符
Perl代碼
- #!/usr/bin/perl
- usestrict;
- usewarnings;
- subfunc{
- print"@_\n";
- }
- my$id=1;
- my@info=('PHPfans','phpfans.net');
- my%info=("name"=>"PHPfans","url"=>"phpfans.net");
- func($id,\@info);
- [root@PHPfansperl]#perlsub.pl
- 1ARRAY(0x81f0e24)
現(xiàn)在是要從該引用得倒改數(shù)組的值。如果$pointer的值為一個(gè)數(shù)組的指針,則通過形式@$pointer來訪問數(shù)組中的元素。類似的,哈希表為%$pointer。
Perl代碼
- #!/usr/bin/perl
- usestrict;
- usewarnings;
- subfunc{
- my($id,$info)=@_;
- my@info=@$info;
- print"@info\n";
- }
- my$id=1;
- my@info=('PHPfans','phpfans.net');
- my%info=("name"=>"PHPfans","url"=>"phpfans.net");
- func($id,\@info);
- [root@PHPfansperl]#perlsub.pl
- PHPfansphpfans.net
【編輯推薦】
- 全面認(rèn)識(shí)Perl子程序用法
- Perl模式匹配參數(shù)使用詳解
- Perl命令行參數(shù)應(yīng)用指導(dǎo)
- 學(xué)習(xí)筆記 Perl split函數(shù)用法指導(dǎo)
- Perl多進(jìn)程及其和多線程的關(guān)系解析