亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
1234下一頁(yè)
最近訪(fǎng)問(wèn)板塊 發(fā)新帖
查看: 40715 | 回復(fù): 39
打印 上一主題 下一主題

perl中our的用法 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2005-06-05 19:01 |只看該作者 |倒序?yàn)g覽
今天心血來(lái)潮看了一下ActivePerl下的Exporter.pm下的代碼,發(fā)現(xiàn)里面有:
require 5.006;

# Be lean.
#use strict;
#no strict 'refs';

our $Debug = 0;
our $ExportLevel = 0;
our $Verbose ||= 0;
our $VERSION = '5.58';
our (%Cache);
我不知道這個(gè)our是什么意思,請(qǐng)知道的來(lái)指點(diǎn)迷津
還有就是那個(gè)require 5.006,這個(gè)有什么說(shuō)法嗎?
謝謝.
大灰狼 該用戶(hù)已被刪除
2 [報(bào)告]
發(fā)表于 2005-06-05 19:14 |只看該作者
提示: 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽

論壇徽章:
1
2015年辭舊歲徽章
日期:2015-03-03 16:54:15
3 [報(bào)告]
發(fā)表于 2005-06-05 19:37 |只看該作者

perl中our的用法

require 5.006
當(dāng)版本號(hào)小于 5.006 的時(shí)候,會(huì)返回失敗,從而導(dǎo)致模塊加載失敗。
所以它的作用就是保證模塊調(diào)用環(huán)境的 Perl 版本。

our 和 my 一樣,都是對(duì)變量的聲明,
不過(guò) our 聲明的是包全局變量,
而 my 聲明的是詞法變量。

不過(guò),經(jīng)過(guò) our 聲明的變量,它會(huì)變得像一個(gè)詞法變量一樣,
其實(shí)這也是 our 存在的目的:用來(lái)欺騙 strict pragma,使 strict 以為它是一個(gè)詞法變量,其實(shí)卻不是。

有一個(gè)簡(jiǎn)單的辦法可以理解 our:
1,你就把 our 聲明的變量和 my 聲明的當(dāng)成一樣。
2,記住 our 和 my 的區(qū)別:our 聲明的是一個(gè)包全局變量,因此在符號(hào)表中存儲(chǔ)(可以通過(guò)全限定在任何地方訪(fǎng)問(wèn)),而 my 聲明的是一個(gè)真正的詞法變量,只能在閉合塊中訪(fǎng)問(wèn)。

論壇徽章:
1
2015年辭舊歲徽章
日期:2015-03-03 16:54:15
4 [報(bào)告]
發(fā)表于 2005-06-05 19:45 |只看該作者

perl中our的用法

my 和 our 的區(qū)別:
  1. D:\MoChou>cat ttt.pl
  2. use strict;

  3. my $var;
  4. $var = 1;
  5. {
  6.     my $var;
  7.     $var = 2;
  8.     print $var, "\n";
  9. }
  10. print $var, "\n";

  11. D:\MoChou>ttt
  12. 2
  13. 1

  14. D:\MoChou>
復(fù)制代碼
  1. D:\MoChou>cat ttt.pl
  2. use strict;

  3. our $var;
  4. $var = 1;
  5. {
  6.     our $var;
  7.     $var = 2;
  8.     print $var, "\n";
  9. }
  10. print $var, "\n";

  11. D:\MoChou>ttt
  12. 2
  13. 2

  14. D:\MoChou>
復(fù)制代碼

[ 本帖最后由 flw 于 2006-6-17 11:39 編輯 ]

論壇徽章:
1
2015年辭舊歲徽章
日期:2015-03-03 16:54:15
5 [報(bào)告]
發(fā)表于 2005-06-05 19:46 |只看該作者

perl中our的用法

很顯然,兩處 my 聲明的雖然是同一個(gè)名字“$var”,但是他們是兩個(gè)變量。
而 our 卻是同一個(gè)變量。

論壇徽章:
1
2015年辭舊歲徽章
日期:2015-03-03 16:54:15
6 [報(bào)告]
發(fā)表于 2005-06-05 19:50 |只看該作者

perl中our的用法

再舉一個(gè)例子,更加明顯:
  1. D:\MoChou>cat ttt.pl
  2. use strict;

  3. {
  4.     my $var;
  5.     $var = 2;
  6.     print $var, "\n";
  7. }

  8. if ( defined $main::var ){
  9.     print '$main::var defined! value = ', "$main::var.\n";
  10. }
  11. else{
  12.     print '$main::var not defined!', "\n";
  13. }

  14. D:\MoChou>ttt
  15. 2
  16. $main::var not defined!

  17. D:\MoChou>
復(fù)制代碼
  1. D:\MoChou>cat ttt.pl
  2. use strict;

  3. {
  4.     our $var;
  5.     $var = 2;
  6.     print $var, "\n";
  7. }

  8. if ( defined $main::var ){
  9.     print '$main::var defined! value = ', "$main::var.\n";
  10. }
  11. else{
  12.     print '$main::var not defined!', "\n";
  13. }

  14. D:\MoChou>ttt
  15. 2
  16. $main::var defined! value = 2.

  17. D:\MoChou>
復(fù)制代碼

[ 本帖最后由 flw 于 2006-6-17 11:39 編輯 ]

論壇徽章:
1
2015年辭舊歲徽章
日期:2015-03-03 16:54:15
7 [報(bào)告]
發(fā)表于 2005-06-05 20:00 |只看該作者

perl中our的用法

其實(shí),our 的出現(xiàn)有它的歷史,
Perl 和別的語(yǔ)言不同,可以隨便聲明變量,
在 Perl 4 那個(gè)時(shí)代,根本就不需要 my 什么的,
隨便寫(xiě)個(gè)名字,就是變量了。
在 Perl 5 中仍然如此,除非你用 my 明確聲明為詞法變量,否則所有的變量都是(包)全局變量,而且可以不聲明直接使用。
但是,這樣有個(gè)壞處,那就是萬(wàn)一不小心寫(xiě)錯(cuò)名字了,或者解符號(hào)引用的時(shí)候,字符串運(yùn)算錯(cuò)了,都會(huì)造成很多麻煩(因?yàn)榘凑?Perl 5 語(yǔ)法,這些都是正確的,其結(jié)果就是產(chǎn)生一個(gè)新的變量,很顯然,這不是你想要的目的。)

所以,為了解決這些問(wèn)題,在 Perl 5 中就引入了 strict 和 warnings 兩個(gè) pragma,它們的作用,就是限制變量不聲明直接使用,
經(jīng)過(guò) strict 和 warnings 限制后,所有沒(méi)有聲明的直接使用的變量都會(huì)報(bào)錯(cuò)。但是 my 聲明的變量又是局部變量,local 又不能創(chuàng)造變量,
所以,我們就沒(méi)法使用全局變量了(注1),
因此就又引入了 our,our 的作用就是聲明一個(gè)全局變量,但是讓 strict 和 warnings 以為它是詞法變量,因此 our 聲明的變量也是詞法作用域的。但是實(shí)際上它是全局變量。

注1:
如果不使用 our,我們有兩種辦法可以創(chuàng)建全局變量:
1,用 no strict "vars" 臨時(shí)關(guān)掉 strict pragma,聲明完了再用 use strict "vars" 打開(kāi)。
2,用變量的全限定名稱(chēng),如 $main::var 或者 $foo::bar 這樣子。

論壇徽章:
1
2015年辭舊歲徽章
日期:2015-03-03 16:54:15
8 [報(bào)告]
發(fā)表于 2005-06-05 20:01 |只看該作者

perl中our的用法

聲明:
以上提到的“全局變量”這個(gè)字眼都表示“包全局變量”。

論壇徽章:
0
9 [報(bào)告]
發(fā)表于 2005-06-05 21:22 |只看該作者

perl中our的用法

小弟看完后,收獲頗多,謝謝各位.

論壇徽章:
0
10 [報(bào)告]
發(fā)表于 2005-06-06 14:01 |只看該作者

perl中our的用法

我原來(lái)以為在一個(gè)package里面定義了一個(gè)our變量,然后在一個(gè)pl里面use的話(huà)就能用pm里面那些our變量了,原來(lái)our只是相當(dāng)于一個(gè)沒(méi)在{}里面的my,這樣理解對(duì)嗎
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專(zhuān)區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP