Perl打印格式

Jea*_*ean 3 string formatting perl

我想在Perl中打印时将字符串格式化(用字符截断/追加)到指定的长度.

例如

$string='my_string';
printf("%04s",$string);
Run Code Online (Sandbox Code Playgroud)

应该打印

my_s
Run Code Online (Sandbox Code Playgroud)

如果

$string='my';
Run Code Online (Sandbox Code Playgroud)

我应该得到

00my
Run Code Online (Sandbox Code Playgroud)

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

ring
Run Code Online (Sandbox Code Playgroud)

如果字符串是

$string='my';
Run Code Online (Sandbox Code Playgroud)

它应该打印

00my
Run Code Online (Sandbox Code Playgroud)

Mic*_*nen 13

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

printf ("%04.4s", $string);
Run Code Online (Sandbox Code Playgroud)

你需要.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
Run Code Online (Sandbox Code Playgroud)

这是使用错误格式字符串的输出.如您所见,字符串不会被截断.

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