gpt4 book ai didi

perl - 使用 'say' 的奇怪输出

转载 作者:行者123 更新时间:2023-12-01 09:58:20 31 4
gpt4 key购买 nike

我需要第二双眼睛看这个。只要其中一个条件(if 或 elsif)为真,我就会得到一个额外的换行符。我不想这样。

use strict;
use warnings;
use autodie;
use feature 'say';

my $filename = 'rr.txt';
open my $fh, '<', $filename;

while (<$fh>) {
my ($last_name, $first_name, $country) = split /[,\|]/, $_;
my $middle_name;
$country =~ s/^\(//;
$country =~ s/\)$//;
say "Last Name: $last_name";
say "First Name: $first_name";
say "Country: $country";

if ($first_name =~ /\w\s(\w+)/) {
$middle_name = $1;
say "Middle Name: $1";
} elsif ($first_name =~ /\w\-(\w+)/) {
$middle_name = $1;
say "Middle Name: $1";
}

}

文件看起来像这样:

Reid, Matt|(AUS)
Samper-Montana, Jordi|(ESP)
Krajonovic, Filip|(SRB)
Jones, Greg Luke|(AUS)
Burquier, Gregoire|(FRA)
Mandol, David|(ARG)
Daniel Llosa, Miguel Horpo|(DOM)

每当输出一个中间名时,它前面都会有一个换行符。我不知道那是从哪里来的。使用 print 并附加换行符会发生同样的事情。

最佳答案

say 在输出的末尾添加一个换行符。由于您没有 chomp 输入行,您阅读的国家/地区代码仍然附加了一个换行符。因此,您会得到双倍行距的输出(来自国家/地区之后的换行符,而不是中间名之前的换行符)。

修复:在 split 行之前添加 chomp;

关于perl - 使用 'say' 的奇怪输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20820727/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com