我正在使用子串和反向来加扰字符串。但是我的解决方案很难编写,而且必须有更顺畅的方式。据称这应该能够使用子串和反向只使用两个变量?但是怎么样?子字符串只删除我想要的字母,并丢弃字符串的其余部分。感谢任何意见。
#!/usr/bin/perl
$string = mystring;
$name = substr($string, 0, 2);
$name = reverse($name);
$name1 = substr($string, 2, 4);
$name2 = substr($string, 6, 8);
$name2 = reverse($name2);
print uc($name);
print uc($name1);
print uc($name2);
答案 0 :(得分:1)
您可以使用shuffle()
中的List::Util
功能。
use strict;
use warnings;
use List::Util qw(shuffle);
my $string = 'mystring';
my $shuffled_string = join '', shuffle(split //, $string);
# 'nmyisgrt'
答案 1 :(得分:0)
我做:
my $string = 'mystring';
$string =~ s/^(..)(....)(.+)$/reverse($1) . $2 . reverse($3)/e;
print uc($string),"\n";
<强>输出:强>
YMSTRIGN
我们用前两个字符替换原始字符串,后面的4个字符保持不变,其余字符也相反。
答案 2 :(得分:-1)
#!/usr/bin/env perl
use strict;
use warnings;
my $string = 'My string is a good string';
for my $i (0 .. length($string)/2) {
substr($string, $i * 2, 2) = uc reverse substr($string, $i * 2, 2);
}
print "$string\n";
输出:
YMS RTNI GSIA G OO DTSIRGN