我是Perl的新手,我遇到了一个小问题。我试图从数组中选择一个值使其小写。
E.g。
my @letters = qw(A B C D E F F A S D F E S F);
现在我想选择字母F并将其设为小写,我该怎么做呢? 请记住,我的数组非常大,应该可以对用户进行任何更改。
提前致谢。
答案 0 :(得分:3)
for my $c (@letters) {$c = lc($c) if $c eq"F"}
我绝对不知道你的意思是选择而使它成为。
答案 1 :(得分:1)
这是我的方法:
my @letters = qw(A B C D E F F A S D F E S F);
@letters = map { tr/F/f/; $_ } @letters;
UPDATE :正如@TLP评论的那样,这是一种更简单的方法:
my @letters = qw(A B C D E F F A S D F E S F);
tr/F/f/ for @letters;
答案 2 :(得分:0)
简短的就地修改是
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
答案 3 :(得分:0)
除非您想保留原始列表
tr/F/f/ for @letters
答案 4 :(得分:-1)
如果您已经知道阵列中的位置,您可以执行:$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;