Perl's 'if' has to go. It obfuscates needlessly by taking the emphasis of the code away from the conditionals it is trying to highlight. E.g. check out the following typical? code snippet.
if ( $a > $@b and $@b < $c ) {
    for (@b) {
         if (/f(?:o|a)o/) {
              foo($_);
              next;
         }

         if (/b(?:a|u)r/) {
              bar($_);
              next;
         }

         if (/.*/) {
              error($_);
         }
     }
} 
We can refactor that into if-less code as follows:
$a < $@b and $@b < $c and do {
    for (@b) {
         /f(?:o|a)o/ and do  {
              foo($_);
              next;
         };

         /b(?:a|u)r/ and do {
              bar($_);
              next;
         };

         /.*/ and error($_);
     }
};
We can get rid of the leading and detracting 'if' by replacing it with a suffixed 'and', which is logically equivalent. The funny thing is that I keep saying 'if' in my head when I read the lines. ;) But we do end up with a nice replacement for switch/case in perl (without 'use Switch').

Problems with this approach include:

  1. Keeping track of do-ending semicolons.
  2. It'd be nicer if 'and do' was just implied (without a source filter) by
    /foo/ {
        foo();
    }
    
  3. And if...else goes from:
    if($blah){ 
        derrrr();
    }else{
        duhhhh();
    }
    
    to the following not so pretty code:
    $blah ? do {
        derrrr();
    } : do {
        duhhhh();
    };
    
  4. You keep saying 'if' anyway
Arrgh. Why is it so hard to expose logic in code?