簡體   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