Well why does Perl win:

Ready for this?

The way I see, Any other way of doing regular expressions sucks more badly. In fact if you are look to replace your regular expressions with something else you are likely to inherit a thick verbose pile of junk. Now why do regular expressions work.

Look at this thing below:

$line =~ m/<some regex>/;

This can also be written as,

$line =~ m'<some regex>';

or

$line =~ /<some regex>/;

This matches the line with <some regex>, Why is this special? Because it just allowed to you match a line without first compiling the regex, and then matching it. Not just that it saved you from writing several tens of lines of code before using a regex which you generally have to do in other languages. So you can do something like:

if ($line =~ /regex/)
{
}

or

do_something() if $line =~ /regex/;

This is a bit of natural language way..

In case of file operations:

while(<FILE>)
{
chomp;
#Do your stuff
}

There are some amazing things that Perl does like

my @file_content = `cat somefile`;

Suddenly all contents are in an array in your program.

Worried about removing new lines from that array? Just do

chomp(@file_content)

Want to go over that file now? Just do

foreach my $line(@file_content)
{
#Do your stuff here
}

Want to deal with that line? You have,

my @fields = split( /<some regex>/, $line );

Want to do more matching/extracting from lines?

my @processing = map { do_something($_) } @fields;

Want to find something in that array?

my @results = grep { /some regex/ } @fields;

Want to handle exceptions?

eval
{
#Some operation
}
if $@
{
#Handle exception
}

open( FILEHANDLE , '<' , $file ) or die "Cannot open file";

Just felt the need to create a small database?

use strict;
use warnings;

use DB_File;
use Fcntl;

my %some_hash
tie (%some_hash, "DB_File", $dbm_file, O_RDONLY or die "Unable to open dbm file $dbm_file: $!";
#change your hash
untie(%some_hash);

You just got a key-value database.

Want to execute a shell command?

`/some/command/execute`;

or

system('/some/commmand/execute');

Need to create a function?

sub function_name
{
my ($var1,$var2..) = @_;

}

Need to create a Class or a Package?

package Name;

#do stuff here

1;

You can also create anonymous functions

my $function = sub {};
$function->();

This also means you can create a closure:

sub function1
{
my $function = sub {#does something};
return \$function;
}

In latest versions of Perl, there are some cool features like:

given($some_data_structure) #what ever that is array, reference etc
{
when ( #some match operation ) { #do something }
...
...
}

this serves both as a smart matching loop/switch statment.

All the above gives you quick scripting tools.

You also have your usual set of ternary operator,if..else, you can also quote regular expressions.

Now why did I write this, I wrote this to tell that. Perl's motto is to get stuff done. In a no BS way. It adapts to your style, its Object oriented, its functional etc. You decide the style the language bends to you.

You get Best of the OO features from Moose(http://search.cpan.org/~doy/Moose-2.0402/lib/Moose.pm), You get modules like Devel::Declare and DBIx::Class, You also get a framework like catalyst. At the same time you can write in funtional programming techniques. You can do cool stuff like Memoization and higher order parsing. For more information read Mark Jason Dominus's Higher order Perl - (free ebook) http://hop.perl.plover.com/

At the same time you as a novice can begin with programming with what you understand Read Chromatic's Modern Perl Book - (free ebook) - http://onyxneon.com/books/modern_perl/

You can do Object oriented programming, Functional programming, Declarative programming all without shoe horning things using frameworks. You can build big to medium sized apps. Its difficult to demonstrate all that in a post, Hence read MJD's book.

But at the very same time you can use it as a scripting language in which you can cook scripts are at a very quick pace, You can quickly prototype, solve data/text processing problems. You can make it behave like awk, sed and what not. You can create quick databases.

No wonder its still among the top programming languages in the world even after 25 years since its release.

Last but not the least, Its killer app : http://www.cpan.org/