1

我是 Perl 的新手,遇到了一个小问题。我正在尝试从数组中选择一个值以使其小写。

例如

my @letters = qw(A B C D E F F A S D F E S F);

现在我想选择字母 F 并将其设为小写,我该怎么做呢?请记住,我的数组非常大,它应该能够接受用户所做的任何更改。

提前致谢。

4

5 回答 5

3
for my $c (@letters) {$c = lc($c) if $c eq"F"}

我绝对不知道你所说的挑选制作是什么意思。

于 2013-04-09T20:38:49.497 回答
1

这是我的方法:

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;
于 2013-04-09T21:20:38.110 回答
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
于 2013-04-09T21:13:22.770 回答
0

除非您想保留原始列表

tr/F/f/ for @letters
于 2013-04-09T22:46:19.477 回答
-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;
于 2013-04-09T20:46:58.210 回答