#!/usr/bin/perl use strict; my ($full, $part) = @ARGV; my ($left) = leftover($full, $part); if (defined($left)) { print "$full - $part = $left\n"; } else { print "$full - $part = undef\n"; } #----------------------------------------------------------- sub leftover { my ($full, $part) = @_; my ($ch, $left); my ($regx) = join('+.*', (split('', $part))); if ($full =~ m{$regx}) { my (@fulls) = split('', $full); my (@parts) = split('', $part); while ($ch = shift(@fulls)) { ($ch eq $parts[0]) ? shift(@parts) : ($left .= $ch); } } else { $left = undef; }; return $left; }