完全是Perl的新手(在学习过程中),需要一些帮助.以下是我发现的一些代码,可以将结果打印到屏幕上,但我希望将其打印到文件中.我怎样才能做到这一点?当我打开一个文件并向其发送输出时,我得到了垃圾数据.
这是代码:
use Net::DNS; my $res = Net::DNS::Resolver->new; $res->nameservers("ns.example.com"); my @zone = $res->axfr("example.com"); foreach $rr (@zone) { $rr->print; }
当我添加:
open(my $fh,'>',$filename) or die "Could not open file '$filename' $!"; ..... $rr -> $fh; #I get garbage.
解决方法
@zone数组包含一个
Net::DNS::RR
对象的列表,其打印方法将对象字符串化并将其打印到当前选定的文件句柄
要将相同的东西打印到不同的文件句柄,您必须自己对该对象进行字符串化
这应该工作
open my $fh,$filename or die "Could not open file '$filename': $!"; print $fh $_->string,"\n" for @zone;