2010-12-31 7 views
0

Dieses Skript gibt "abc" aus. Wie kann ich den FORMAT-Teil von printf ändern, um "123" als Ausgabe zu erhalten?printf Format Frage

#!/usr/bin/env perl 
use warnings; 
use 5.012; 


my $str = 'abc123'; 

printf "%3.3s\n", $str; 

# abc 
+0

Warum bist du abgeneigt um die Zeichenfolge zu schneiden? –

+0

Ich hatte eine plötzliche Inspiration, es mit printf zu versuchen, um eine weitere Option zu haben. –

Antwort

2

Sie können nicht "Truncate links" mit printf ‚s format strings.

Sie müssen den gewünschten Teil entfernen, indem Sie entweder einen Regex oder substr verwenden, je nachdem, welche Logik Sie anwenden, um "123" aus dieser Zeichenfolge zu erhalten.

print substr($str, 3, 3) . "\n"; # Get 3 scharacters from char #4 

oder

print substr($str, -3) . "\n"; # Get last 3 chars 

oder

$str =~ /(\d+)/; # Get the first digits-only substring 
print "$1\n";