有没有办法在qw中保留一些空白?例如:
my @a=qw(1234 John Smith 123 Main St.);
Run Code Online (Sandbox Code Playgroud)
将生成一个包含6个元素的数组.有没有办法,哦,我不知道......逃离白色空间保留一些吗?就像是:
my @a=qw(1234 John\ Smith 123\ Main\ St.);
Run Code Online (Sandbox Code Playgroud)
返回3个元素:'1234','John Smith','123 Main St.'?
(仅供参考,我已尝试过以上内容,也有不同的报价组合,但都无济于事)
要按换行符分隔:
my @a = split /\n/, <<'END';
1234
John Smith
123 Main St.
END
Run Code Online (Sandbox Code Playgroud)
不,你不能保留空格qw
.正如mpapec在评论中提到的那样,qw
用于引用单词.以下是一些替代方案:
my @a = ('1234', 'John Smith', '123 Main St.');
Run Code Online (Sandbox Code Playgroud)
my $string = <<'END';
1234
John Smith
123 Main St.
END
my @a = split /\n/, $string;
Run Code Online (Sandbox Code Playgroud)
my @a = <DATA>;
chomp @a;
__DATA__
1234
John Smith
123 Main St.
Run Code Online (Sandbox Code Playgroud)
来自同一主题的PerlMonks线程的信用转到dga .
免责声明:此模块是实验性的.请注意文档中的以下警告:
该模块可能会覆盖使用它的文件中的源代码.为了防止这种可能性,强烈建议您使用"安全第一"中描述的-backup选项.
如果你走这条路,要小心.
use Inline::Files;
my @a = <FOO>;
chomp @a;
my @b = <BAR>;
chomp @b;
__FOO__
1234
John Smith
123 Main St.
__BAR__
5678
Jane Doe
456 Anonymous Ln.
Run Code Online (Sandbox Code Playgroud)
将数据硬编码到脚本中通常是一个坏主意,因此通常这是我要去的路线.
data.txt中
1234
John Smith
123 Main St.
Run Code Online (Sandbox Code Playgroud)
的MyScript
open my $fh, "<", "data.txt" or die $!;
my @a = <$fh>;
chomp @a;
close $fh;
Run Code Online (Sandbox Code Playgroud)
data.csv
1234,"John Smith","123 Main St."
5678,"Jane Doe","456 Anonymous Ln."
Run Code Online (Sandbox Code Playgroud)
的MyScript
use Text::CSV;
my $csv = Text::CSV->new() or die Text::CSV->error_diag();
open my $fh, "<", "data.csv" or die $!;
while (my $row = $csv->getline($fh)) {
# $row is an arrayref
}
$csv->eof or $csv->error_diag();
close $fh;
Run Code Online (Sandbox Code Playgroud)
现在我只是在滑稽.我的观点是,这种猫的皮肤不止一种方法.
归档时间: |
|
查看次数: |
2520 次 |
最近记录: |