Perl 编程中的符号表、类型glob与动态子程序
1. 旧代码中的文件句柄参数
在 Perl 5.6 引入文件句柄引用之前,如果要将文件句柄传递给子程序,就必须使用类型 glob。这是在旧代码中最常见的类型 glob 的用途。
-
使用类型 glob 传递文件句柄
例如,CGI模块可以从指定的文件句柄读取输入,而不是使用STDIN。
perl use CGI; open FH, $cgi_data_file or die "Could not open $cgi_data_file: $!"; CGI->new( *FH ); # 不能使用 new( FH ),需要类型 glob
也可以使用类型 glob 的引用:
perl CGI->new( \*FH ); # 不能使用 new( FH ),需要类型 glob -
新的文件句柄传递方式
新的方式是使用持有文件句柄引用的标量:
perl use CGI; open my( $fh ), $cgi_data_file or die "Could not open $cgi_data_file: $!"; CGI->new( $fh ); -
旧方法的问题及解决
在旧方法中,文件句柄是包变量,不能是词法变
超级会员免费看
订阅专栏 解锁全文
1123

被折叠的 条评论
为什么被折叠?



