Ste*_*oss 0 perl configuration
所以我试着在配置中读取.Perl中的文件.配置文件使用尾部反斜杠来表示行继续.例如,文件可能如下所示:
=== somefile ===
foo=bar
x=this\
is\
a\
multiline statement.
Run Code Online (Sandbox Code Playgroud)
我有读取文件的代码,然后处理尾随反斜杠以连接行.但是,看起来Perl已经为我做了.例如,代码:
open(fh, 'somefile');
@data = <fh>;
print join('', @data);
Run Code Online (Sandbox Code Playgroud)
打印:
foo=bar
x=thisisamultiline statement
Run Code Online (Sandbox Code Playgroud)
瞧,'@ dat =;' 声明似乎已经处理了反斜杠!
这是Perl中定义的行为吗?
我不知道你在看什么,但这不是有效的Perl代码,这不是Perl中的行为.这是一些Perl代码,可以满足您的需求:
#!/usr/bin/perl
use strict;
use warnings;
while (my $line = <DATA>) {
#collapse lines that end with \
while ($line =~ s/\\\n//) {
$line .= <DATA>;
}
print $line;
}
__DATA__
foo=bar
x=this\
is\
a\
multiline statement.
Run Code Online (Sandbox Code Playgroud)
注意:如果您在命令行上键入文件,如下所示:
perl -ple 1 <<!
foo\
bar
baz
!
Run Code Online (Sandbox Code Playgroud)
然后你看到你的shell的效果,而不是Perl.考虑以下反例:
printf 'foo\\\nbar\nbaz\n' | perl -ple 1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2060 次 |
| 最近记录: |