#! /usr/bin/perl use strict; use warnings; use 5.020; my $text = do { local $/; }; my @parts = split m/(\s+)/, $text; my @sms_to_send; my $new_sms = ""; while ( my $p = shift @parts ) { # add part if length is valid if ( length($new_sms) + length($p) < 160 ) { $new_sms .= $p; } else { # store message and reset $new_sms push @sms_to_send, $new_sms; # prevent starting with whitespaces $new_sms = $p =~ m/^\s+$/ ? "" : $p; } } push @sms_to_send, $new_sms if $new_sms; say ">$_<" for @sms_to_send; __DATA__ Dies ist ein SMS Text mit Umbruch und anderen Dingen. Vielleicht ist er sogar zu lang, um in eine einzelne SMS mit 160 Zeichen zu passen. Wenn sie noch viel laenger wird, kann es passieren, dass sie aufgesplittet wird in mehrere Nachrichten.