从文件读入的字符串不响应字符串操作

时间:2013-08-14 20:14:09

标签: string perl file-io

我有一个创建文件的Perl子例程,如下所示:

sub createFile {
    if (open (OUTFILEHANDLE, ">$fileName")) {
        print OUTFILEHANDLE "$desiredVariable\n";
    }
    close(OUTFILEHANDLE);
}

其中$ fileName和$ desiredVariable先前已定义。我调用它,然后调用以下子程序,该程序从文件读取,取第一行(仅),并将其保存到变量$ desiredVariable中:

sub getInfoFromFile {
    if (existFile($fileName)) {
        if (open (READFILEHANDLE, "<$fileName")) {
            my @entire_file=<READFILEHANDLE>; # Slurp
            $desiredVariable = $entire_file[0];
            chop $desiredVariable;
            close(READFILEHANDLE);
        }
    }
}

如果我省略了“chop”行,$ desiredVariable就是我想要的,但是带有一个尾随的 space 换行符。如果我包含“chop”行,$ desiredVariable是一个空字符串。由于某种原因,“砍”正在杀死整个字符串。我已经尝试了$desiredVariable =~ s/\s*$//;和其他一些字符串操作技巧。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

您提供的代码无法重现该问题。我猜它在你的匿名化时会以某种方式丢失。我按如下方式运行了脚本,我做的唯一调整是-f而不是existsFile()

#!/usr/bin/perl

sub createFile {
    if (open (OUTFILEHANDLE, ">$fileName")) {
        print OUTFILEHANDLE "$desiredVariable\n";
    }
    close(OUTFILEHANDLE);
}

sub getInfoFromFile {
    if (-f $fileName) {
        if (open (READFILEHANDLE, "<$fileName")) {
            my @entire_file=<READFILEHANDLE>; # Slurp
            $desiredVariable = $entire_file[0];
            chop $desiredVariable;
            close(READFILEHANDLE);
        }
    }
}

$fileName = "test.txt";
$desiredVariable = "Hello World!";

createFile();
$desiredVariable = "";
getInfoFromFile();

print "Got '$desiredVariable'\n"; # Got 'Hello World!'