#!/usr/bin/perl -w use strict; my $string = "foo.bar.blah.di.doh"; print "string: $string\n"; my @string; @string = rev_split('.',$string,2); print join(', ',@string)."\n"; @string = rev_split('.',$string,3); print join(', ',@string)."\n"; @string = rev_split('.',$string,4); print join(', ',@string)."\n"; $string = "foo:bar:blah:di:doh"; print "string: $string\n"; @string = rev_split(':',$string,3); print join(', ',@string)."\n"; sub rev_split{ my ($sep,$string,$cnt) = @_; $cnt--; my @string = split(/\Q$sep\E/,$string); $cnt = $#string if $#string < $cnt; my @array = ( join("$sep",@string[0..$#string-$cnt]), (@string[$#string-$cnt+1..$#string]) ); } __END__ prints: string: foo.bar.blah.di.doh foo.bar.blah.di, doh foo.bar.blah, di, doh foo.bar, blah, di, doh string: foo:bar:blah:di:doh foo:bar:blah, di, doh