【问题标题】:Array return is not working [closed]数组返回不起作用[关闭]
【发布时间】:2012-06-30 13:25:05
【问题描述】:
use Text::Diff;
my $count;
our $stats2 = 0;
for($count = 0; $count <= 1000; $count++){
    my $data_dir="archive/oswiostat/oracleapps.*dat";
    my $data_file= `ls -t $data_dir | head -1`;
    chomp($data_file);
    while(defined($data_file)){
        print $data_file;
        open (DAT,$data_file) || die("Could not open file! $!");
        my @stats1 = stat $data_file;
        @raw_data=<DAT>;
        close(DAT);
        print "Stats1 is :$stats1[9]\n";
        sleep(5);
        print "Checking $stats1[9] equals $stats2\n";
        chomp $stats[9];
        chomp $stats2;
        if($stats1[9] != $stats2){
            print "I am here";
            my @diff = diff \@raw_data, \@raw_data2, { STYLE => "Context" };
            @trim_diff = removedash(@diff);
            print "@trim_diff";
        }
        @raw_data2=@raw_data;
        $stats2 = $stats1[9];
        print "Stat2: $stats2\n";
    }
}

sub removedash {
    print "Its in sub";
    my $cnt=0;
    foreach (@_) {
        chomp;
        if (/^- /){
            s#^- ##g;
            $ar[$cnt] = "$_\n";
            $cnt++;
        }
    }
    return (@ar);
}   

我正在使用 sub 从数组中删除破折号并将其发回。 @trim_diff 应该有返回 @ar,但它什么也没显示。我不确定我在哪里做错了。你们能帮我吗?

【问题讨论】:

  • 有个小东西叫做“缩进”。你应该调查一下。
  • 您返回@ar,但您从未声明它。你应该use strict;
  • return 语句应该可以工作(顺便说一句,括号是不必要的)。如果我们知道您的程序正在读取哪些数据,这可能会有所帮助。
  • 您确定您的if (/^- /) 至少在一行中是正确的吗?

标签: perl


【解决方案1】:

我怀疑它不起作用。它可能返回一个空列表。

你的功能

removedash

会更贴切地命名

remove_elements_without_dashes_and_remove_dashes_from_those_ones.

【讨论】:

  • 如果我用主程序来做,它就可以工作。但是通过子我得到了如下的参考。但不是数组中的内容。 [它在子阵列(0x1ea7b310)Stat2:1340930665]
  • Text::Diff 文档说:如果没有提供 OUTPUT,则返回字符串中的差异。为什么要将字符串分配给数组?也许你应该重新开始。
  • 我现在意识到你是对的,当我传递数组时函数不起作用,但在使用函数时工作正常。我正在尝试从每一行中删除“-”,但它在 linux 中不起作用,但在 Windows 上确实有效。- - 设备:rrqm/s wrqm/sr/sw/s rsec/s wsec/s avgrq-sz avgqu -sz 等待 svctm %util
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多