gpt4 book ai didi

arrays - 在 Perl 中反转数组的每个标量

转载 作者:行者123 更新时间:2023-12-04 02:07:02 26 4
gpt4 key购买 nike

如何在不颠倒数组中字符串顺序的情况下颠倒由三个字符串组成的数组中的每个字符串?

这是我的程序,最后一个命令是我尝试获取数组的每个元素并将其反转的地方。例如:如果我将 Andy Sam 作为输入,我想返回 ydnA maS,而不是 maS ydnA。我做错了什么?

我认为如果我将输入放入数组 @ref 并通过 foreach 循环获取该数组的每个元素并反转每个元素,它应该会变成正确的。

print "Please enter your name: \n";

$userinput = <STDIN>;
chomp ($userinput);

@ref = $userinput;
print "Hello, $userinput.\n";

@get_characters = split(/ /, $userinput);
$strin = join ("" , @get_characters);
$m = length $strin;
print "Your name has ", "$m" , " characters in it.\n";

foreach $e(@ref)
{
$e = reverse $e;
print $e;
}

最佳答案

你的问题是你迭代的数组只有一个元素。您需要拆分名称以获取单个单词:

my @ref = $userinput; # <-- contains a single string.
my @words = split ' ', $userinput;

然后使用map .唯一的技巧是你必须强制使用 scalar上下文。

my @words = qw(Andy Sam);
@words = map {scalar reverse} @words;
print "@words";

输出:

ydnA maS

也可以使用 for 循环来编辑同一个数组:

$_ = reverse for @words;

关于arrays - 在 Perl 中反转数组的每个标量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23976255/

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