今日のPerl

無名関数っぽいものとか。

/Users/syou6162/config/.emacs.d/elisp% perl -MPerl6::Say -e 'map {say $_->("hoge")} @{[sub {shift}, sub {my $s = shift; $s x 10}]}'
hoge
hogehogehogehogehogehogehogehogehogehoge

Devel::REPLが便利

perlshとかでなんとか頑張ろうとしていたけど、複数行ができないとか言うのがあれなので、いらいらしていたらid:tor_ozakiにDevel::REPLというものを教えてもらった!!

ディレクトリを再帰的にたどっていって、ルールにマッチしたものだけコピーしてくる

バイトでいつも使っているのになぜかBlogに残っていない系もの。

use strict;
use warnings;

use File::Copy;
use File::Basename;
use File::Find::Rule;

my @files =
  File::Find::Rule->new->name('*.txt')->in('/Users/syou6162/Desktop/pne_copy');

foreach my $file (@files) {
    my ( $name, $dir, $ext ) = fileparse( $file, ('\.txt') );
    my @dirs = split( /\//, $dir );
    if ( $dirs[5] =~ /(\d{4})/ ) {
        copy( "$dir/$name$ext", "/Users/syou6162/dbcls/pne2/$1/" );
    }
}

その後にnkfをかましたりとか。

find . -type f | xargs -n1 -t nkf -S -w --overwrite