我是 Perl 的新手,遇到了一个小问题。我正在尝试从数组中选择一个值以使其小写。
例如
my @letters = qw(A B C D E F F A S D F E S F);
现在我想选择字母 F 并将其设为小写,我该怎么做呢?请记住,我的数组非常大,它应该能够接受用户所做的任何更改。
提前致谢。
for my $c (@letters) {$c = lc($c) if $c eq"F"}
我绝对不知道你所说的挑选和制作是什么意思。
这是我的方法:
my @letters = qw(A B C D E F F A S D F E S F);
@letters = map { tr/F/f/; $_ } @letters;
更新:正如@TLP 评论的那样,这是一种更简单的方法:
my @letters = qw(A B C D E F F A S D F E S F);
tr/F/f/ for @letters;
简短的就地修改是
my @letters = qw(A B C D E F F A S D F E S F);
map {s/(F)/\l$1/;} @letters;
print "@letters";
输出:
A B C D E f f A S D f E S f
除非您想保留原始列表
tr/F/f/ for @letters
如果您已经知道数组中的位置,您可以$array[5] = lc($array[5])
:如果你不这样做,有几种方法。其中之一使用 C 风格的循环:
for (my $i=0; $i < @array; $i++) {
$array[$i] = lc($array[$i]) if $array[$i] eq 'F';
}
另一个是地图:
map {$_ = lc if $_ eq 'F'} @array;