打开文件只读一行

时间:2013-05-08 11:09:58

标签: perl file

我在perl中有文件阅读问题。

有以下来源:

use strict;
use warnings;

sub main()
{
    my @lines = file_read("test.c") or die;
    file_print(@lines);
}

sub file_read
{
    my $filename = shift;
    my @lines;

    open(FILE, "<", $filename) or die $!;
    @lines = <FILE>;
    return @lines;
}

sub file_print
{
    my @lines = shift();

    print("Total lines " . scalar(@lines) . "\n");

    foreach my $line (@lines)
    {
            print($line);
    }
}

以下文件:

/******************************************************************************

*                                                                             *

*                                                                             *

输出结果为:

Total lines 1
/******************************************************************************

这里有什么问题?

我唯一可以假设它会在0x0A 0x0A ASCII符号组合之前读取文件。

2 个答案:

答案 0 :(得分:4)

显示的代码不是完整或正确的Perl程序,实际上没有显示实际调用main。序列

my @lines;
open(FILE, "<", $filename) or die $!;
file_print(@lines);
@lines = <FILE>;

尝试在阅读之前打印这些行。

我认为只有一行似乎被阅读的原因在于my @lines = shift();。这不是整个数组,只是它的第一个元素。尝试用

替换sub file_print{...}
sub file_print
{
    print("Total lines " . scalar(@_) . "\n");

    foreach my $line (@_)
    {
            print($line);
    }
}

答案 1 :(得分:0)

您应该传递子例程file_print

的数组引用
file_print(\@lines);

然后在子程序中:

$lines = shift;
@lines = @$lines;

这将完成这项工作。