繁体   English   中英

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

[英]Reversing each scalar of an array in Perl

如何颠倒说三个字符串的数组中的每个字符串而不颠倒数组中字符串的顺序?

这是我的程序,最后一个命令是我尝试获取数组的每个元素并将其反转的地方。 例如:如果我将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;

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

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

输出:

ydnA maS

也可以使用for循环来编辑相同的数组:

$_ = reverse for @words;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM