【问题标题】:Storing a line read from text file to variable in Perl script将从文本文件读取的行存储到 Perl 脚本中的变量
【发布时间】:2020-09-10 23:08:57
【问题描述】:

我正在寻找以下情况的解决方案。

我需要从我的 Perl 脚本 disconnect.pl 中读取 task.txt 文件, 我必须将文件的内容保存到可以在 Perl 脚本中的多个位置使用的变量中。

Task.txt 文件包含用逗号分隔的单引号中的单词,但在一行中,如下所示

'qbc','456','sdf','fgh'

#########################
my $filename = 'testing_folder/text_document.txt';
open(FH, '<', $filename) or die $!;
while(<FH>){
$content=$_
}
print "$content"
my $ql = "select in ($content)";
print "$ql"
###############################

my $ql 行出现错误

【问题讨论】:

  • 只需谷歌“perl 文件教程”,然后是“perl 拆分教程”。
  • 试过了.. 出现错误

标签: perl


【解决方案1】:

我将您的代码放入名为“line”的文件中并尝试运行它。事情是这样的:

$ perl line
syntax error at line line 8, near "my "
Execution of line aborted due to compilation errors.

如你所说,第 8 行就是这一行:

my $ql = "select in ($content)";

但这里有一个关于编译器错误消息的小秘密——它们并不像我们希望的那样聪明。您将看到的一个常见问题是他们经常在错误的行上报告错误。因此,在报告错误之前检查一两行总是值得的。

在这种情况下,问题出在上一行:

print "$content"

你现在能看到吗?仔细查看该行的末尾。有什么遗漏吗?

Perl 语句用分号分隔。换行符(通常)对 Perl 编译器没有任何意义。 Perl 很乐意让您将语句分散到两行或多行。因此,当遇到末尾没有分号的行时,它只是假设下一行是同一语句的延续。

这意味着当你写的时候:

print "$content"
my $ql = "select in ($content)";

Perl 将其视为一个语句:

print "$content" my $ql = "select in ($content)";

这是一个没有意义的陈述。所以编译器报错了。

这也解释了为什么错误报告是一条线。 Perl 在有问题的语句末尾报告错误。

哦。如果我不清楚 - 你需要在该行的末尾加一个分号。

【讨论】:

  • 谢谢。更正了它。从错误中,我一直在思考 my $ql = "select in ($content)"; 的问题。没有查看上面的打印声明
  • @sravanisrinija: 好吧,你知道调试大师的秘密,下次你会看前一行:-)
猜你喜欢
  • 2014-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
相关资源
最近更新 更多