第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

哪一個(gè)是最佳實(shí)踐,一個(gè)詞法文件句柄還是一個(gè)typeglob?

哪一個(gè)是最佳實(shí)踐,一個(gè)詞法文件句柄還是一個(gè)typeglob?

白板的微信 2019-12-05 16:08:22
有人說(shuō)我們應(yīng)該使用詞法文件句柄而不是typeglob,如下所示:open $fh, $filename;但是大多數(shù)Perl書(shū)籍,包括The Llama Book,都使用typeglob,如下所示:open LOGFILE, $filename;那有什么區(qū)別呢?哪一個(gè)被認(rèn)為是更好的做法?
查看完整描述

3 回答

?
四季花海

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超5個(gè)贊

詞法文件句柄可以很容易地作為參數(shù)傳遞,而文件句柄則不能。Typeglob可以(或者至少是對(duì)它們的引用可以),但這有點(diǎn)混亂??紤]使用詞法變量,并確保先聲明它們,這樣您就知道它們確實(shí)是詞法而不是局部或全局的。即


my $fh;

open $fh, $filename;

也可以考慮使用IO::Handle或IO::File作為選項(xiàng)。以前是這樣,F(xiàn)ileHandle但下面的ysth告訴我,F(xiàn)ileHandle現(xiàn)在僅輪流使用'IO :: Handle',這對(duì)5.6以來(lái)的我來(lái)說(shuō)是個(gè)新聞,但是這里有很多東西要學(xué)習(xí)。:-)


另外,別忘了use strict:-)


查看完整回答
反對(duì) 回復(fù) 2019-12-05
?
胡說(shuō)叔叔

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超8個(gè)贊

Llama Book的最早版本是1993年,當(dāng)時(shí)詞匯文件句柄是Perl語(yǔ)言的一部分。出于多種原因,詞匯文件句柄是一種更好的做法。Typeglob的最重要的缺點(diǎn)是


它們的作用域始終是全局的,可能會(huì)導(dǎo)致如下所示的隱患:


sub doSomething {

  我的($ input)= @_;

  #讓我們將$ input與我們從另一個(gè)文件讀取的內(nèi)容進(jìn)行比較

  打開(kāi)(F,“ <”,$ anotherFile);

  @F = <F>; 

  關(guān)閉F;

  do_some_comparison($ input,@F);

}


打開(kāi)(F,“ <”,$ myfile);

而(<F>){

    doSomething($ _); #doh-剛剛關(guān)閉了F文件句柄

}

關(guān)閉F;

它們比詞匯文件句柄更難傳遞給子例程


包package1;

sub log_time {#打印時(shí)間戳到文件句柄

    我的($ fh)= @_;

    打印$ fh標(biāo)量本地時(shí)間,“ \ n”;

}


包package2;

打開(kāi)GLOB,'>','log1';

打開(kāi)$ lexical,'>','log2';


package1 :: log_time($ lexical); #符合預(yù)期

package1 :: log_time(GLOB); #不起作用

package1 :: log_time('GLOB'); #不起作用

package1 :: log_time(* GLOB); #作品

package1 :: log_time(package2 :: GLOB); #作品

package1 :: log_time('package2 :: GLOB'); #作品


查看完整回答
反對(duì) 回復(fù) 2019-12-05
?
神不在的星期二

TA貢獻(xiàn)1963條經(jīng)驗(yàn) 獲得超6個(gè)贊

不建議使用typeglob文件句柄,因?yàn)槿绻蛔⒁馑?,可能?huì)導(dǎo)致多個(gè)問(wèn)題。例如:如果您要?jiǎng)?chuàng)建一個(gè)重復(fù)使用相同typeglob的遞歸函數(shù),則在嘗試關(guān)閉文件句柄時(shí)會(huì)收到一些警告,除非您創(chuàng)建基于時(shí)間限制的基于包的glob。詞法變量的作用域是在其中定義它們的塊,而typeglob作用域是用于定義它的完整包的。


恢復(fù):


如果要保留typeglob文件句柄,請(qǐng)確保創(chuàng)建基于時(shí)間限制的基于包的glob:


...

local *FH;

open FH, '<', $filepath or die(sprintf('Could not open %s: %s', $filepath, $!));

...

否則,請(qǐng)使用詞匯變量


...

open my $fh, '<', $filepath or die(sprintf('Could not open %s: %s', $filepath, $!));

...


查看完整回答
反對(duì) 回復(fù) 2019-12-05
  • 3 回答
  • 0 關(guān)注
  • 597 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)