我在编写Perl脚本来读取二进制文件时遇到问题.
我的代码如下所示,即$file二进制格式的文件.我试图通过网络搜索并在我的代码中应用,试图将其打印出来,但似乎它不能正常工作.
目前,它仅打印"&&&&&&&&&&&'和'’ppppppppppp’,但我真正想要的是它可以打印出各的$line,这样我以后可以做一些其他的后处理.另外,我不太清楚$data它是什么,因为我认为它是文章中的示例代码的一部分,说明是一个标量.我需要一个可以指出我代码中错误出错的人.以下是我的所作所为.
my $tmp = "$basedir/$key";
opendir (TEMP1, "$tmp");
my @dirs = readdir(TEMP1);
closedir(TEMP1);
foreach my $dirs (@dirs) {
next if ($dirs eq "." || $dirs eq "..");
print "---->$dirs\n";
my $d = "$basedir/$key/$dirs";
if (-d "$d") {
opendir (TEMP2, $d) || die $!;
my @files = readdir (TEMP2); # This should read binary files
closedir (TEMP2);
#my $buffer = "";
#opendir (FILE, $d) || die $!;
#binmode (FILE);
#my @files = readdir …Run Code Online (Sandbox Code Playgroud) 我正在编写一个Perl脚本来读取日志,以便在看到任何连续的4行或更多空行时,通过删除空行将文件重新写入新日志.换句话说,我必须将任何4个连续的空白行(或更多行)压缩成一行; 但是文件中的1,2或3行的任何情况都必须保留格式.我试图在线获得解决方案,但我唯一能找到的是
perl -00 -pe ''
Run Code Online (Sandbox Code Playgroud)
要么
perl -00pe0
Run Code Online (Sandbox Code Playgroud)
另外,我在vim中看到这样的示例来删除4个空行的块,:%s/^\n\{4}//这些行匹配我正在寻找的但是它在vim而不是Perl.任何人都可以帮助吗?谢谢.
我正在使用该find命令在目录中查找文件.我想在继续之前检查目录中的文件是否为空(非0大小).感谢find手册,我知道如何使用该-empty选项识别空文件.
但是,我想使用Perl来检查非空文件.我怎样才能做到这一点?
提前致谢.
我正在尝试编写Perl脚本来比较2个文件的内容,以便列出所看到的任何差异.尝试以下但我不确定如何继续下去.请注意,以下只是脚本的一部分,因为我事先已对2个文件的内容进行了排序.提前致谢.
open (FILE1, "log") || die ("Can't open file log for reading") ;
open (FILE2, "master") || die ("Can't open file master for reading") ;
@file1 = <FILE1> ;
@file2 = <FILE2> ;
#$perlcompare = (compare('log','master')== 0) ;
#die ("Log and master files are equal and match.\n") ;
if (@file1 eq @file2) {
print "Log and master are equal and match.\n" ;
} else ????????????
exit 0;
Run Code Online (Sandbox Code Playgroud) 我写了一个Perl包装器,应用了一些unix命令,将输出写入日志文件.但是我看到它创建了一些空文件,但我看到一些正在创建的文件不是0大小,而是说明了1byte; 因此我在使用"if(-s"文件")做其他事情做其他事情时遇到问题"对于某些后期处理的东西.有人可以帮助我的代码为什么创建一个空行(我猜,虽然我已经在那里放置了一个chomp),有没有办法消除那个空行,这样如果没有数据输出日志文件总是会转到0字节在处理unix命令后被捕获?或者..你可以建议一个有效的方法来检查文件是否为空这样的情况.
sub sub_unaccessfiles {
my ($disk) = @_ ;
@disk_sorted = split (/\s+/, $disk) ;
$disk_Name = $disk_sorted[4] ;
my $aging_disk = basename ($disk_Name) ;
open (OUT3, ">./diskmonitor_logs/char_disks/aging_files_$aging_disk") || die "Cannot create ./diskmonitor_logs/char_disks/aging_files_$aging_disk: $!\n" ;
my $cmd_aging_grab = `find $disk_Name -type f -name .snapshot -prune -o -atime +180 -printf '%u\t%s\t%t\t%p\n'` ;
chomp $cmd_aging_grab ;
print OUT3 "$cmd_aging_grab\n" ;
close OUT3 ;
..
..
}
Run Code Online (Sandbox Code Playgroud)