小编Gra*_*ace的帖子

如何在Perl中读取二进制文件

我在编写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
推荐指数
2
解决办法
3万
查看次数

如何在Perl中将4个连续的空行压缩成一行

我正在编写一个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.任何人都可以帮助吗?谢谢.

perl

4
推荐指数
1
解决办法
722
查看次数

如何在Perl中检查非空文件

我正在使用该find命令在目录中查找文件.我想在继续之前检查目录中的文件是否为空(非0大小).感谢find手册,我知道如何使用该-empty选项识别空文件.

但是,我想使用Perl来检查非空文件.我怎样才能做到这一点?

提前致谢.

perl operators

2
推荐指数
1
解决办法
2万
查看次数

如何比较两个文件并显示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 diff file

1
推荐指数
1
解决办法
2万
查看次数

文件长度不是0大小但是为空,如何消除这个?

我写了一个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)

perl

0
推荐指数
1
解决办法
146
查看次数

标签 统计

perl ×5

diff ×1

file ×1

operators ×1