#!/usr/local/bin/perl -wl use strict; use Test::More qw'no_plan'; my %strings = ( XAA => 'XAA', YXAA => 'YXAA', YXAAXAA => 'YXAA', XAAXAA => 'XAAAA', VXAAXAA => 'VAAAA', AA => 'AA', YAA => 'YAA', YXX => 'YX', ); while (my ($orig_string, $result) = each %strings) { my $string = $orig_string; $string = scalar reverse $string; # last or directly before a Y $string =~ s/X(?!Y|\Z)//g; $string = scalar reverse $string; is($string, $result, "$orig_string => $result"); }