Hallo Muffi,
ich habe mich mal dran versucht:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
use strict;
use warnings;
use 5.010;
my $key = 'foo';
my $value = 'bar';
my $str = sprintf('%-50s%s', $key, $value);
say $str;
my ($k, $v) = (substr($str, 0, 50), substr($str, 50));
say "'$k'";
say "'$v'";
die "wrong pattern: $str" if ($k !~ s/\s+$// or $v =~ /^\s+/);
say "'$k'";
say "'$v'";
Ich bin mir aber nicht sicher, ob das das ist, was Du willst.
Hier wird der String bei 50 gesplittet, dann wird geprüft, ob der erste auf n Leerzeichen endet und der zweite am Anfang keine Leerzeichen hat.
Wenn beides ok ist, werden key und value ausgegeben.
Vielleicht geht es auch eleganter, bin gespannt was noch kommt.
HTH
Grüße
payx