求助各位老大!将java函数用Perl实现

求助各位老大!将java函数用Perl实现

求助各位老大!  如何能将下面这个java函数用Perl实现? 或者提示一下perl怎么选定字符串中的字符,多谢!
函数的参数是一个手机号,然后2位2位的调换位置


    private static String getSMobile(String mobile)
    {
        StringBuffer sMobile = new StringBuffer("68");
        for( int i=0;i<mobile.length();i=i+2)
        {
            sMobile.append((i+1<mobile.length())?mobile.charAt(i+1):"F");
            sMobile.append(mobile.charAt(i));
        }
        return sMobile.toString();
    }
perldoc -f substr
split '',$str
纯属模仿java写法

sub getMobile {
        my $m = shift;
        my $tmp = "68";
        for (my $i = 0; $i<length($m); $i += 2) {
                $tmp .= ($i + 1 < length($m)) ? substr($m, $i+1, 1) : "F";
                $tmp .= substr($m, $i, 1);
        }
        return $tmp;
}


[Copy to clipboard] [ - ]
CODE:
#!/usr/bin/perl
use strict;
use warnings;
my $string = "8613588461759";
$string =~ s/(\d)(\d|$)/$2? "$2$1":"F$1"/ge;
print $string,"\n"

欢迎来到Perl的世界
刚才贴错了。。。
谢谢
1. 直译

[Copy to clipboard] [ - ]
CODE:
my @smobile_ary = split '', $mobile;
@smobile_ary = (@smobile_ary, 'F') if @smobile_ary % 2 != 0;
my $smobile;
for(my $i = 0; $i + 1< @smobile_ary; $i += 2){
    $smobile .= $smobile_ary[$i+1];
    $smobile .= $smobile_ary[$i];
}
print $smobile;

2。substr

[Copy to clipboard] [ - ]
CODE:
$mobile .= 'F' if length($mobile) % 2 != 0;
for(my $i = 0; $i < length($mobile); $i += 2){
    substr($mobile, $i, 2) = reverse substr($mobile, $i, 2);
}
print $mobile;

3. reg

[Copy to clipboard] [ - ]
CODE:
$mobile .= 'F' if length($mobile) % 2 != 0;
$mobile =~ s/(.{2})/reverse $1/eg;
print $mobile;

2,3是一样的
您贴错了吧
多谢各位牛人!  受教育了
6楼 解答的全面,赞一个
可惜 Perl 5 既不支持 zip 和 [1,3..] 这种形式的 range,不然也可以用这种方式给出一个解答。

另外,若 Perl 5 支持一次遍历两个 array,也可以给出一个解答。