gpt4 book ai didi

perl - 哪个是好的做法,是词法文件句柄还是 typeglob?

转载 作者:行者123 更新时间:2023-12-03 20:06:46 25 4
gpt4 key购买 nike

有人说我们应该使用词法文件句柄而不是 typeglob,像这样:

open $fh, $filename;

但大多数 Perl 书籍,包括 The Llama Book , 使用 typeglob, 像这样:
open LOGFILE, $filename;

那么有什么区别呢?哪个被认为是更好的做法?

最佳答案

Llama Book 的最早版本是 1993 年,在词汇文件句柄成为 Perl 语言的一部分之前。由于各种原因,词法文件句柄是一种更好的做法。 typeglobs 最重要的缺点是

  • 它们的作用域始终是全局的,这可能会导致像这样的潜在错误:

    子做某事{
    我的 ($input) = @_;
    # 让我们将 $input 与我们从另一个文件中读取的内容进行比较
    打开(F,“<”,$anotherFile);
    @F = ;
    关闭 F;
    do_some_comparison($input, @F);
    }

    open(F, "<", $myfile);
    而 ( ) {
    做某事($_); # do'h -- 刚刚关闭了 F 文件句柄
    }
    关闭 F;
  • 它们比词法文件句柄更难传递给子程序

    包包1;
    sub log_time { # 打印时间戳到文件句柄
    我的 ($fh) = @_;
    打印 $fh 标量本地时间, "\n";
    }

    包包2;
    打开 GLOB, '>', 'log1';
    打开 $lexical, '>', 'log2';

    package1::log_time($lexical); # 按预期工作
    package1::log_time(GLOB); # 不起作用
    package1::log_time('GLOB'); # 不起作用
    package1::log_time(*GLOB); # 作品
    package1::log_time(package2::GLOB); # 作品
    package1::log_time('package2::GLOB'); # 作品

  • 另见: Why is three-argument open calls with autovivified filehandles a Perl best practice?

    关于perl - 哪个是好的做法,是词法文件句柄还是 typeglob?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3276674/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com