הלינקייה: מגזין חודשי למפתחים

רוצה לשמוע על כל האירועים, המדריכים, הקורסים והמאמרים שנכתבו החודש ?
הלינקייה הינו מגזין חופשי בעברית שמשאיר אותך בעניינים.
בלי ספאם. בלי שטויות. פעם בחודש אצלך בתיבה.

Advanced Regular Expressions

# Long version
$lotr = $hobbit;
$lots =~ s/Bilbo/Frodo/g;
 
# Short version
($lotr = $hobbit) =~ s/Bilbo/Frodo/g;
 
# Replacing for array elements
s/Bilbo/Frodo/g for @chapters;
 
# Reducing spaces - long version
$string =~ s/^\s+//;
$string =~ s/\s+$//;
$string =~ s/\s+/ /;
 
# Reducing spaces - shorter version
for ($string) {
  s/^\s+//;
  s/\s+$//;
  s/\s+/ /;
}
 
# When will this fail ? How can you solve this ? 
s/\b(\w+)\1\b/$1/gi;
# Using positive look-ahead
s/ \b (\w+) \s (?=\1\b) //gxi;
 
# Look-around syntax:
#  (?=...) Positive Look Ahead
#  (?!...) Negative Look Ahead
#  (?<=...) Positive Look Behind
#  (?<!...) Negative Look Behind
 
s/(?<!c)ei/ie/g;
use Modern::Perl;
 
my $N;
 
for ($N = ('o' x shift); $N =~ /^(oo+?)\1+$/; $N =~ s/$1/o/g) {
	print length($1), " ";
}
 
print length($N), "\n";
use Modern::Perl;
 
my $vowels = 'aeiouy';
my $cons = 'bcdfghjklmnpqrstvwxyz';
my ($char, $re, $class, $pat);
 
my %map = (C => $cons, V => $vowels);
 
for $class ($vowels, $cons) {
        for (split //, $class) {
                $map{$_} .= $class;
        }
}
 
for $char (split //, shift) {
        $pat .= "[$map{$char}]";
}
 
$re = qr/^$pat$/i;
print "REGEX is $re\n";
 
while(<>) {
        print if /$re/;
}