我想.
从除了最后一个之外的字符串中删除所有字符串.
它可以在JavaScript中完成
var s='1.2.3.4';
s=s.split('.');
s.splice(s.length-1,0,'.');
s.join('');
Run Code Online (Sandbox Code Playgroud)
但是当在Perl中尝试相同时
my @parts = split /./, $s;
my @a = splice @parts, $#parts-1,0;
$s = join "", @a;
Run Code Online (Sandbox Code Playgroud)
我明白了
Modification of non-creatable array value attempted, subscript -2 at ./test.pl line 15.
Run Code Online (Sandbox Code Playgroud)
题
任何人都可以弄清楚如何在Perl中做到这一点?
我会使用正面预测的正则表达式perl
来完成任务:
perl -pe 's/\.(?=.*\.)//g' <<<"1.2.3.4"
Run Code Online (Sandbox Code Playgroud)
结果:
123.4
Run Code Online (Sandbox Code Playgroud)
编辑以使用split
以下方法为您的解决方案添加修复:
use warnings;
use strict;
my $s = '1.2.3.4';
my @parts = split /\./, $s;
$s = join( "", @parts[0 .. $#parts-1] ) . '.' . $parts[$#parts];
printf "$s\n";
Run Code Online (Sandbox Code Playgroud)