我需要第二双眼睛.每当其中一个条件(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";
}
}
Run Code Online (Sandbox Code Playgroud)
该文件如下所示:
Reid, Matt|(AUS)
Samper-Montana, …
Run Code Online (Sandbox Code Playgroud) 这是我的问题:
我需要比较两个ArrayLists并返回它们是否相同或者它们是不同的,返回其中一个元素是新的元素,可以这么说.
这是数据集的行为:
我想要的是:
例:
A: [ 'a', 'b', 'c', 'd']
B: [ 'a', 'c', 'd']
Run Code Online (Sandbox Code Playgroud)
结果:列表不同,返回元素'b'; A将是"工作"列表,我们将根据此ArrayList中的新内容进行比较,因为B将永远不会更改.
感谢您的回复和您的意见.
有没有办法获得标量和使用smartmatch运算符(~~)完成的数组之间的比较所得到的匹配索引?
if ( $str ~~ @data ) {
#code to get index of array where match occurred
}
Run Code Online (Sandbox Code Playgroud)
如果存在匹配,则条件中的表达式将返回true,因此没有任何帮助.
在任何人给我上课之前:我非常喜欢smartmatch操作符,在非常简单的情况下,我不会在数据结构与数据结构或其他疯狂的任何疯狂比较中使用它.