小ネタ
Perl関連の小ネタとかその他いろいろ



[Perl][ワンライナー]カレントディレクトリの全てのディレクトリ・ファイルを小文字にする
 $ perl -e "rename $_, lc $_   for glob '*'" 

[Perl][ワンライナー][*sh]環境変数の中で重複する要素を削除する
function rmdupenv() {
    if [ $# = 0 ]; then return; fi
    local env="$1"
    local sep="$2"

    eval "export $env=$(perl -e 'my ($e, $s) = (shift, shift || q(:)); #\
                            for(split $s, $ENV{$e}) { #\
                                $h{$_} or $h{$_}=++$i #\
                            } #\
                            $,=$s; #\
                            %h=reverse %h; #\
                            print map { $h{$_} } #\
                                  sort { $a <=> $b } keys %h' \
                        $env $sep)"
}

echo $PATH       # => /bin:/usr/bin:/usr/X11R6/bin:/usr/local/bin:/home/tyru/bin:/usr/local/bin/
rmdupenv PATH    # => /bin:/usr/bin:/usr/X11R6/bin:/usr/local/bin:/home/tyru/bin
export TEST="foo-bar-baz-foo-baz"
rmdupenv TEST -  # => foo-bar-baz

[Perl][ワンライナー]カレントディレクトリ以下の全てのファイルの改行コードをCRLF → LFにする

Linux系なら

$ find -type f -exec perl -pe 's/\015\012$/\012/' {} \;

WindowsでなんらかのPerl環境がある場合は

$ # find2perlは多分インストールされてるはず
$ find2perl -type f -exec perl -pe 's/\015\012$/\012/' {} \; | perl

[Perl][ワンライナー]行中の数字でソート
$ skkdic-count /usr/share/skk/SKK-JISYO.* | perl -e 'print sort{do{$a=~/.*D(d+)/;$1}<=>do{$b=~/.*D(d+)/;$1}}<>'
こっちのがいいような
$ skkdic-count /usr/share/skk/SKK-JISYO.* | perl -e 'print sort { ($A, $B) = map { /.*D(d+).*/; $1 } ($a, $b); $A <=> $B } <>'


随時追加予定?








TOP