String 偏移量反向的子串

String 偏移量反向的子串,string,perl,substring,String,Perl,Substring,我查看了Perl中substr的文档,看到了“偏移量”是开始的位置,“长度”是多长。如果“length”为负数,则表示字符串右端要保留的字符数。如何在“偏移量”之前获取子字符串?范例 my $string = "HelloWorld"; my $sub = someFunction(string=$string, offset=5, lengthBefore=2); # I know this is not Perl syntax for sub-routine but wanted to sh

我查看了Perl中substr的文档,看到了“偏移量”是开始的位置,“长度”是多长。如果“length”为负数,则表示字符串右端要保留的字符数。如何在“偏移量”之前获取子字符串?范例

my $string = "HelloWorld";
my $sub = someFunction(string=$string, offset=5, lengthBefore=2); # I know this is not Perl syntax for sub-routine but wanted to show the inputs I need
print "$sub\n";
我想去

oW
在Perl中有这样做的函数吗?任何帮助都将不胜感激!多谢各位

sub someFunction {
   my ($s, $i, $j) = @_;
   my $start = $i-$j+1;
   $start = 0 if $start < 0;
   my $length = $i-$start+1;
   return substr($s, $start, $length);
}
这假设
someFunction(“012345”,2,4)
应该返回
012


假设
someFunction(“012345”,2,4)
应该返回
012

Re“如何在“偏移量”之前获得子字符串?”从技术上讲,这不是位置5之前的2;这是第6位之前的第2位。这是一个令人困惑的界面。
($string=~/^..{5}(?@ikegami抱歉,我的意思是我想要一个类似substr的子程序,但方向相反。因为使用substr($string,5,2)会给出“Wo”。嗯,现在我想起来,可能不是最好的示例字符串使用…但是谢谢!我会接受你的答案,因为它起作用了“如何在‘偏移量’之前获得子字符串?”,从技术上讲,这不是位置5之前的2,而是位置6之前的2。这是一个令人困惑的接口。
($string=~/^..{5}(?@ikegami对不起,我的意思是我想要一个类似substr的子例程,但方向相反。因为使用substr($string,5,2)我会给出“Wo”。嗯,现在我想起来了,可能不是最好的示例字符串…但是谢谢!我会接受你的答案,因为它起作用了!
sub someFunction {
   my ($s, $i, $j) = @_;
   return substr(substr($s, 0, $i+1), -$j);
}