如何重新初始化perls格式处理器
更新:从数据读取更改为从子系统获取数据 我必须给打印机写一个协议。打印机需要一个字符串来打印,所以我使用perls格式处理器 这是第一次,效果很好。但是如果我试着写两次协议, 打印的数据格式不正确 简而言之,我尝试的代码示例如下: !/usr/bin/perl 严格使用; 使用警告; 使用数据::转储程序; 使用utf8; 我的一美元; 我的b美元; 我的$c; 我的$protocol; 我的$h_协议; 格式F_TOP= -------------- 1 2 3 P:@ $% -------------- . 格式F_条目=如何重新初始化perls格式处理器,perl,format,Perl,Format,更新:从数据读取更改为从子系统获取数据 我必须给打印机写一个协议。打印机需要一个字符串来打印,所以我使用perls格式处理器 这是第一次,效果很好。但是如果我试着写两次协议, 打印的数据格式不正确 简而言之,我尝试的代码示例如下: !/usr/bin/perl 严格使用; 使用警告; 使用数据::转储程序; 使用utf8; 我的一美元; 我的b美元; 我的$c; 我的$protocol; 我的$h_协议; 格式F_TOP= -------------- 1 2 3 P:@ $% --------
@ 我可以重复你在问题中提到的问题 只需在print_protocol sub内声明$h_protocol FH,并将其从第12行中删除即可 因此,sub中的代码将如下所示
sub print_protocol {
my $run = shift;
print "$run\n";
# Open protocol string as filehandle
open my $h_protocol, ">", \$protocol;
# Set format to protocol filehandle
...
...
}
现在脚本可以生成预期的结果。
输出:
通过查看代码,您试图读取两次数据。看看它是否有助于您读取两次数据。@vkk05啊,这就是为什么没有数据。。。我将编辑我的示例。作为题外话,与sprintf相比,格式是否有任何显著的优势?@mpapec是的,如果协议需要多个页面,某些行的格式会更复杂。。。这是一个基本的例子,但它显示了我的问题。实际上,我的头有16行代码和每个条目11个。你可能想考虑使用PelL6::为Pel5而不是格式化一个模块,到目前为止效果良好。我需要检查如何获得$h_协议的全局访问权限。在real中有一个初始化打开,选择,如果我使用两个变量,一个set_条目写入和一个print close sub.工作得很好:一个全局$h_协议和一个initialize sub:。。。打开我的$h_temp。。。然后是$h_protocol=$h_temp@安迪亚。可以但是为什么需要$h_协议作为全局变量呢?因为它很容易从任何地方写入协议。我讲的三个功能需要手柄。我认为,把它设为参数,只会让代码看起来更大。
-1-
---------------------------
1 2 3 P: 1
---------------------------
abc def ghi
jkl mno pqr
---------------------------
1 2 3 P: 2
---------------------------
abc def ghi
jkl mno pqr
---------------------------
1 2 3 P: 3
---------------------------
qwe eqw weq
-2-
---------------------------
1 2 3 P: 1
---------------------------
abc def ghi
jkl mno pqr
---------------------------
1 2 3 P: 2
---------------------------
abc def ghi
jkl mno pqr
---------------------------
1 2 3 P: 3
---------------------------
qwe eqw weq