Courtesy of Robin Williams
#12 DeMorgan's Rule
Little-known facts about qr// (new with Perl 5.005): it has a magic print value, and it's an object of type Regexp.
Courtesy of Tom Christiansen
Courtesy of Tuomas J. Lukka
#15 Primality Courtesy of Tuomas J. Lukka
#16
Courtesy of Mike Fletcher
#17
Ever wish backquotes didn't interpolate variables? qx() is a synonym for backquotes, but if you use single quotes as a delimiter, it won't interpolate: qx'echo $HOME' works.
Courtesy of Tom Christiansen
#18
Courtesy of Randal L. Schwartz
#19
Courtesy Sean M. Burke
#20 Results of the SunWorld reader survey (4,106 respondents)
#11 The Game Of Life
use PDL; use PDL::Image2D;
use PDL::Graphics::TriD;nokeeptwiddling3d;
$d=byte(random(zeroes(40,40))>0.85);
$k=byte [[1,1,1],[1,0,1],[1,1,1]];
do{ imagrgb [$d]; $s=conv2d($d,$k);
$d&=($s>4);$d&=($s>1);$d|=($s==3);}
while (!twiddle3d);
appeared in Issue 10
if (!$a || $b != $c) { ... }
is equivalent to
unless ( $a && $b == $c ) { ... }
#13
% perl -le 'print "My regex: ", qr/^watch/i'
My regex: (?i-xsm:^watch this)
$rob = qr/red/i;
if ($rob->match("Fred Flintstone")) {
print "Got obj fred!\n";
}
sub Regexp::match {
my $self = shift;
my $arg = @_ ? shift : $_;
return $arg =~ /$arg/;
}
appeared in Issue 11
#14
Transpose a two-dimensional array:
@matrix_t = map{my$x=$_;[map {$matrix[$_][$x]}
0..$#matrix]}0..$#{$matrix[0]};
appeared in Issue 11
use PDL; use PDL::Graphics::TriD; $s=40;$a=zeroes
2*$s,$s/2;$t=$a->xlinvals(0,6.284);$u=$a->ylinvals
(0,6.284);$o=5;$i=1;$v=$o-$o/2*sin(3*$t)+$i*sin$u;
imag3d([$v*sin$t,$v*cos$t,$i*cos($u)+$o*sin(3*$t)]);
appeared in Issue 11
This code converts any GIF to an HTML table--each cell of the table corresponds to a pixel of the image. Use this to make your web advertisements seem like important content and circumvent Lincoln's Apache::AdBlocker. :
This code is online at http://tpj.com/one-liners.
use GD;$f='#ffffff';$T=table;sub p{print @_}
p"<body bgcolor=$f>";for(@ARGV){open*G,$_ or(warn("$_:
$!")&&next);$g=GD::Image->newFromGif(G)||(warn$_,
": GD error"and next);@c=map{$_!=$g->transparent
?sprintf'#'.('%.2x'x3),$g->rgb($_):$f}0..
$g->colorsTotal;p"<$T border=0 cellpadding=0
cellspacing=0>";($x,$y)=$g->getBounds;for$j(0..$y)
{p"<tr>";for($i=0;$i<$x;$i++){$s=1;$s++&&$i++while($i+1
<$x&&$g->getPixel($i+1,$j)==$g->getPixel($i,$j));p"
<td bgcolor=",$c[$g->getPixel($i,$j)],"
colspan=$s> "}}p"</$T>"}
appeared in Issue 11
appeared in Issue 11
"Use m//g when you know what you want to keep, and split() when you know what you want to throw away."
appeared in Issue 11
Count the lines of pod and code in a Perl program:
@a=(0,0);while(<>){++$a[not m/
^=\w+/s .. m/^=cut/s]} printf"%d
pod lines, %d code lines\n",@a;
appeared in Issue 11
Which of the following open source products do you have installed for WORK use?
Perl 83%
Sendmail 74%
Apache 72%
Linux 64%
Tcl 52%
Python 24%
Which of the following open source products do you have installed for PERSONAL use?
Perl 79%
Linux 77%
Apache 63%
Sendmail 61%
Tcl 55%
Python 34%