sub prematch { return unpack "a$-[0]", $_[0]; } sub postmatch { return unpack "x$+[0] a*", $_[0]; } sub match { my $len = $+[0] - $-[0]; unpack "x$-[0] a$len", $_[0]; } #### use strict; use warnings; my $string = "This is some pretty darn boring text"; if ( $string =~ /darn/ ) { print prematch($string), "\n"; print postmatch($string), "\n"; print match($string), "\n"; } #### my ($pre, $match, $post) = split /\b(word)\b/, $string, 2;