Perl打印格式

Perl打印格式,perl,string,formatting,Perl,String,Formatting,我想在用Perl打印时将字符串格式化为指定长度(截断/附加字符) 比如说 $string='my_string'; printf("%04s",$string); 应该打印 my_s 如果 $string='my'; 我应该 00my 00my 有没有办法打印最后四个字符 ring 如果字符串是 $string='my'; 应该打印出来 my_s 您想使用此格式字符串而不是您的: printf ("%04.4s", $string); 您需要.4,因为它指定了最大长度。(开头的

我想在用Perl打印时将字符串格式化为指定长度(截断/附加字符)

比如说

$string='my_string';
printf("%04s",$string);
应该打印

my_s
如果

$string='my';
我应该

00my
00my
有没有办法打印最后四个字符

ring
如果字符串是

$string='my';
应该打印出来

my_s

您想使用此格式字符串而不是您的:

printf ("%04.4s", $string);
您需要.4,因为它指定了最大长度。(开头的4仅指定最小值)

以下是一些测试的输出:

$ perl -e "my \$string = \"my_string\";print sprintf(\"%04.4s\", 22);"
0022
$ perl -e "my \$string = \"my_string\";print sprintf(\"%04.4s\", \$string);"
my_s
$ perl -e "my \$string = \"my\";print sprintf(\"%04s\", \$string);"
00my
以下是使用错误格式字符串的输出。正如您所看到的,字符串没有被截断

$ perl -e "my \$string = \"my_string\";print sprintf(\"%04s\", 22);"
0022
$ perl -e "my \$string = \"my_string\";print sprintf(\"%04s\", \$string);"
my_string

您是否尝试过Perl的内置
printf
sprintf
?我从未想过使用%s进行字符串拉伸和填充。我会用一个正则表达式和substr还有一堆数学+1给你。