请教?为何串大于2000行就抱错?1500正常????

请教?为何串大于2000行就抱错?1500正常????

代码如下:

$CMD="cat temp_data.txt |head -2000| awk -F \"\\t\" '{print \$1\"\\t\"\$2\"\\t\"\$3\"\\t\"\$4\"\\t\"\$5}' ";
print $CMD."\n";
open (CMD, "$CMD | " || die "Get pcode Error! Exit!++++++++++++++++++++++++";
while(<CMD>{
        chomp;
        ($yearmonthday,$cmccoruni, $province, $area, $fee_dianbo) = split(/\t/);
        $print_string.="<tr><td>$yearmonthday</td><td>$cmccoruni</td><td>$province</td><td>$area</td><td>$fee_dia
nbo</td></tr>\n";
}
close CMD;

$print_string.="</table></body></html>\n";

my $CMD="echo \"$print_string\" | wc";

if (system($CMD))
{
         print STDERR "Coldn't run the command $CMD ERR!\n";
}

第一句,如果把其中的 "head -2000" 改为 “head -1500" system就会执行正确,要是head -2000就会执行失败,问一下高手这是为什么???
错误 消息....
你的程序是要取最后一次循环的值?
当运行system 时, $print_string 这个得到的是最后一行的值。


QUOTE:
原帖由 forlorngenius 于 2008-9-23 12:36 发表
你的程序是要取最后一次循环的值?
当运行system 时, $print_string 这个得到的是最后一行的值。

麻烦你最好还是仔细看一下。再说。

如果数据大于2000行的话 ,系统报错走如下语句:

print STDERR "Coldn't run the command $CMD ERR!\n";

为何????

if you use perl, why use so complicate shell command?
check child process if running open FH,  | .
The simple way to read n th line from a file:

[Copy to clipboard] [ - ]
CODE:
@html = ('<table>');
open F,   "temp_data.txt" or die "$!\n";
while (<F>) {
    chomp;
    last if $. > 2000;     # stop to read line if linenumber is 2000
   # process lines to 2000
   my @rec = split /\t/;
   push @html, "<tr>";
    foreach my $item (@rec) {
       push @html,  "<td>$item</td>";
    }
    push @html, "</tr>";
}
close F;
push @html, "</table>";