Regex 如何减少变量';Perl中的长度为20个字符?

Regex 如何减少变量';Perl中的长度为20个字符?,regex,perl,Regex,Perl,基本上我有一些很长的变量,只需要前几个字符 我试着用这个正则表达式,但不起作用 $var =~ s/(^.{20})?/$1/g; 它对它没有任何作用 任何帮助都将不胜感激 substr($var, 20) = ""; 删除$var中位置20以外的字符这是您可能想到的替换: $var =~ s/^(.{20}).*/$1/; 请注意,更简单的是: substr($var,20) = ''; 如果字符串少于20个字符,将发出咯咯声 或使用替代(假设5.10+): 或使用解包: $var =

基本上我有一些很长的变量,只需要前几个字符

我试着用这个正则表达式,但不起作用

$var =~ s/(^.{20})?/$1/g;
它对它没有任何作用

任何帮助都将不胜感激

substr($var, 20) = "";

删除
$var

中位置20以外的字符这是您可能想到的替换:

$var =~ s/^(.{20}).*/$1/;
请注意,更简单的是:

substr($var,20) = '';
如果字符串少于20个字符,将发出咯咯声

或使用替代(假设5.10+):

或使用解包:

$var = unpack 'a20', $var;

你期待什么样的逻辑?例如:只取前5个字符,如果有重复的字符,则追加一个数字(不管变量范围如何)?到底是什么让你认为正则表达式替换有任何作用?代码匹配前20个字符。。。然后将它们放回原处。或者更好的是,使用
+
,因为没有点匹配正好20个字符的字符串。但是
substr
是一个更好的解决方案。从微观上看,使用
+
更好。此外,可能需要/s。如果字符串长度小于20,
substr
将发出警告(启用
使用警告)。如果已执行此验证,我同意
substr
更好。我只是想向OP展示如何使用
s//
@toolic实现它:不,将substr完全超出字符串警告的范围;试着让一个人死,你是对的。我看到了(W),我认为这只是一个警告。
$var =~ s/^.{20}\K.+//s;
$var = unpack 'a20', $var;