perl 的 __END____DATA__ 符号

__DATA__ 符号告诉 perl 编译器, perl 代码的编译已经完成。

任何在 __DATA__ 符号后面的数据都可以通过 FOOBAR::DATA 这个文件句柄读到, FOOBAR 就是当前包的包名。

在 'main' 包里, __END__ 符号和 __DATA__ 一样, 但是对于别的模块, __END__ 后的数据是无法自动放入DATA句柄中的, 而 __DATA__ 后的数据可以。

例1

#!/usr/bin/perl
use strict;
use warnings;
while ( <DATA> ) {
    print;
}

__DATA__  # 这时候用 __END__ 一样
abc
123
woaini

例2

# 先写个包 FOOBAR.pm
package FOOBAR;
1;
__DATA__ # 这时候如果用 __END__ 就不能通过 FOOBAR::DATA 这个句柄获得其后面的数据
abc
123
woaini

# 写个脚本调用 FOOBAR 这个包
#!/usr/bin/perl
use strict;
use warnings;
use lib './';
use FOOBAR;
while ( <FOOBAR::DATA> ) {
    print;
}

Perl

这篇文章: 有用 无用
创建 2014-08-11 10:32:50 / 更新 2017-02-07 14:59:09