Vorwort: damit auch Strings ungerader Länge verarbeitet werden können, wird in meiner Lösung einfach die Hälfte der String-Länge auf die nächste Ganzzahl aufgerundet. Ist also je nach Anwendungsfall nicht ganz sauber.
In Perl gibt es bekanntlich viele Wege, um etwas zu erreichen. Im Folgenden mittels regulärem Ausdruck und alternativ "unpack":
Code:
use POSIX; # für Aufrunden via ceil
my $string = "foobar123";
my $len = ceil(length($string)/2);
my @splitted_by_regex = $string =~ m/(.{1,$len})/g;
my @splitted_by_unpack = unpack("a$len a$len", $string);
use Data::Dumper;
print Dumper(\@splitted_by_regex);
print Dumper(\@splitted_by_unpack);
Ausgabe:
Code:
$VAR1 = [
'fooba',
'r123'
];
$VAR1 = [
'fooba',
'r123'
];