http://www.perlmonks.org?node_id=165763


in reply to Carp::Scooby

If you're feeling REALLY bizarre, you could indulge in a little argument-munging...
sub ruhroh { @_ = map { my @words = split(/\s/); foreach my $word (@words) { $word =~ s/^([aeiou])/r$1/ and next; $word =~ s/^([AEIOU])/'R' . lc($1)/e and next; $word =~ s/^[a-z][^aeiou]?/r/ and next; $word =~ s/^[A-Z][^aeiou]?/R/; } join(' ', @words); } @_; push @_, ', Raggy!'; goto &croak; }
Then, if you say
ruhroh("And I'd have gotten away with it, too, if it weren't for you m +eddling kids");
You'll get
Rand Ri'd rave rotten raway rith rit, roo, rif rit reren't ror rou red +dling rids, Raggy! at test_ruhroh.pl line 5

stephen

Update: A little testing made me change my scheme entirely...