|
|
- 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
-
|