首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么我不能从这个程序中获得“成功”?

为什么我不能从这个程序中获得“成功”?
EN

Stack Overflow用户
提问于 2013-06-15 00:34:03
回答 4查看 96关注 0票数 1

我写了下面的程序,希望能获得成功。但我永远也得不到它。

代码语言:javascript
运行
复制
my $fileName = 'myfile.txt';
print $fileName,"\n";

if (open MYFILE, "<", $fileName) {
    my $Data;
    {
        local $/ = undef;
        $Data = <MYFILE>;
    }
    my @values = split('\n', $Data);
    chomp(@values);

    if($values[2] eq '9999999999')  {
        print "Success"."\n";
    }

}

myfile.txt的内容是

代码语言:javascript
运行
复制
160002
something
9999999999
700021
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-06-15 00:51:40

尝试按\s*[\r\n]+拆分

代码语言:javascript
运行
复制
my $fileName = 'myfile.txt';
print $fileName,"\n";

if (open MYFILE, "<", $fileName) {
    my $Data;
    {
        local $/ = undef;
        $Data = <MYFILE>;
    }
    my @values = split(/\s*[\r\n]+/, $Data);

    if($values[2] eq '9999999999')  {
        print "Success";
    }

}
票数 1
EN

Stack Overflow用户

发布于 2013-06-15 00:43:58

如果myfile.txt包含回车符(CR,\r),它将不会按预期工作。另一个可能的原因是换行符(LF,\n)前的尾随空格。

票数 1
EN

Stack Overflow用户

发布于 2013-06-15 04:18:52

您不需要将整个文件读入数组来检查一行。打开文件,跳过你不关心的行,然后处理你关心的行。当你完成了你需要做的事情,停止读取这个文件。这样,内存中只有一行:

代码语言:javascript
运行
复制
my $fileName = 'myfile.txt';
open MYFILE, "<", $fileName or die "$filename: $!";

while( <MYFILE> ) {
    next if $. < 3;  # $. is the line number
    last if $. > 3;

    chomp;
    print "Success\n" if $_ eq '9999999999';
    }

close MYFILE;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17113255

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档