home | changes | index | login
see also:
May_21_2007
October_3_2007
PerlCompatibleRegularExpressions
PerlLanguage
search:
wikipedia
google
scholar
books
images
reddit
del.icio.us
everything2
WareLogging. Some bits of PerlLanguage. Also look at PerlCompatibleRegularExpressions.
= one-liners and the like =
$/ = "\n"; # record separator
$re = qr/whatever/; # store a RegEx
# ridiculous (shouldn't cut or basename do this?), but... # in your shell - count uniquely named jpgs: find . -iname '.jpg' | perl -n -e 's{./(.*$)}{$1}; print'| sort | uniq | wc -l
# 'course, find can do the filename trimming by itself: find . -iname '*.jpg' -printf '%f\n'|sort|uniq|wc -l
= return a date-based directory name =
(Edit this page to see brackets in the proper spot, until I fix the crappy markup around here.)
#!/usr/bin/perl use POSIX qw(strftime); my @t = localtime; my $dir = strftime( "%Y/%m/%e", @t ); $dir =~ s/\/0 /\//g; print $dir;
= dispatch table to package subs =
package Whatever::Thing;
my %tags = ( p => \&tag, em => \&tag, small => \&tag, strong => \&tag, table => \&tag, );
# Install appropriate subs in symbol table: for my $key (keys %tags) { *$key = sub { $tags{$key}->($key, @_) }; }
sub tag { my ($tag, $text, $class) = @_;
if (defined $class) { return qq{<$tag class="$class">$text</$tag>}; } else { return qq{<$tag>$text</$tag>}; } }
# should give you '<p class="item"><strong>Some stuff.</strong></p>' print p(strong('Some stuff'), 'item');
= print every so many lines =
#!/usr/bin/perl
@lines = <STDIN>;
$start = 0; # array index not line - first line is 0 $skip = 7; $count = $skip;
for ( @lines[$start .. $#lines] ) { print if ( $count % $skip == 0 ); $count++; }
= recursive file rename =
This still running in the background on about a gazillion images. Let's hope it doesn't break anything. Yes, next time I will stop being an idiot and use find(1).
#!/usr/bin/perl
use strict; use warnings;
change(".");
sub change { my ($dir) = @_; print "Trying $dir\n";
my $dh;
opendir $dh, $dir;
my @files = readdir $dh;
closedir $dh;
for my $file (@files) {
next if ($file =~ m/^\.\.$/);
next if ($file =~ m/^\.$/);
if (-d "$dir/$file") {
# recursion.
change("$dir/$file");
} elsif ($file =~ m/\.jpe?g/i) {
next if ($file =~ m/\.jpg$/);
my $new_file = $file;
$new_file =~ s/\.jpe?g/\.jpg/i;
rename ("$dir/$file", "$dir/$new_file");
print "$dir/$file to: $dir/$new_file\n";
}
}
}
= grep =
$ perl %ignore = (blah => 1); @wog = qw(blah wog tog dog); @wog = grep { ! $ignore{$_} } @wog; print @wog; wogtogdog
$ perl $n = 100; if ( grep { $n % $_ != 0 } (1..10) ) { print $n; } 100
pick a name (required to comment or edit a page)
last edited December 18, 2007