无论创建范围如何,Perl格式是否绑定到文件句柄?

时间:2013-08-10 14:02:36

标签: perl format

我想在$main_rpt_csv_fh下面的示例Perl代码中定义要与给定文件句柄一起使用的格式。

所以,我相信我的格式声明会像这样开始:

format main_rpt_csv_fh =

如果我尝试在子例程中创建它,那么使用file_handle名称创建格式是否会永久地将格式链接到文件句柄,或者文件句柄和格式是否必须在同一范围内?

这是我到目前为止编写的代码。

my $main_rpt_path = "/home/ics/work/rpts/interim/mtr_prebill.rpt";

my $main_rpt_fh = undef;


open $main_rpt_fh, "> ", 
   $main_rpt_path or die "$main_rpt_path: $!";

问这个的目的是,我想保持我的主要Perl代码整洁,并且在子例程中创建格式的想法会有所帮助。

format语句应该在fh声明之前或之后以及open之前发生吗?

最后一个问题。格式是处理我想要的最佳方式,也就是像旧的“绿条”报告一样创建类似于spreadhseet(格式化)的数据?如果不是,首选方式是什么?

2 个答案:

答案 0 :(得分:3)

格式是全球性的。因此,有一些关于将它们从语言中删除的争论。

答案 1 :(得分:3)

  

最后一个问题。格式是处理我想要的最佳方式吗   这就是创建类似于spreadhseet的(格式化)数据   旧的“绿栏”报告?如果不是,首选方式是什么?

来自Perl::Critic::Policy::Miscellanea::ProhibitFormats

  

格式是Perl最古老的功能之一。不幸的是,他们   受到一些限制。格式是静态的,不可能   在运行时很容易定义。此外,格式取决于几个模糊   全局变量。

     

对于更现代的报告工具,请考虑使用其中一个模板   像Template这样的框架或者尝试Perl6 :: Form模块。