perl - 将从文本文件读取的行存储到 Perl 脚本中的变量
问题描述
我正在寻找以下情况的解决方案。
我需要从我的 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
解决方案
我将您的代码放入一个名为“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 在有问题的语句末尾报告错误。
哦。如果我不清楚 - 你需要在该行的末尾加一个分号。
推荐阅读
- vert.x - Vert.x GET api 对某些流量返回 400 Bad Request
- azure - Azure 中两个 VM 之间的内部 HTTP 请求 - 默认情况下是否安全,还是我需要发送 HTTPS 请求?
- c# - 如何在没有 turncontext 的情况下获取特定用户 ID 和连接名称的令牌
- python - 当我尝试在 Python 中写入数据时,文件有时会打开,有时会关闭
- python - VueJs 页面在使用 django 刷新时给出 404
- java - 我正在尝试添加两个系数不同且度数不同的多项式
- r - 如何对具有零值的数据执行日志转换
- iphone - 如何使此视图中的布局更具响应性?
- ios - 如何从 iOS Swift 中的 xib UIViewController 启动?
- mysql - 在 MySQL JSON Array 列上选择特定字段