--- title: 修正してみた author: kazu634 date: 2008-07-12 wordtwit_post_info: - 'O:8:"stdClass":13:{s:6:"manual";b:0;s:11:"tweet_times";i:1;s:5:"delay";i:0;s:7:"enabled";i:1;s:10:"separation";s:2:"60";s:7:"version";s:3:"3.7";s:14:"tweet_template";b:0;s:6:"status";i:2;s:6:"result";a:0:{}s:13:"tweet_counter";i:2;s:13:"tweet_log_ids";a:1:{i:0;i:4137;}s:9:"hash_tags";a:0:{}s:8:"accounts";a:1:{i:0;s:7:"kazu634";}}' categories: - Perl - Programming ---
こっちの方がいいか。
- 「perl」に関連する最近のエントリ
#!/usr/bin/perl # === use === use strict; use warnings; # 引数が指定されていなければ終了 exit if ($#ARGV == -1); # 検索するディレクトリの指定(絶対パス) my $init_dir = "/Users/simoom634/Documents/hatena/"; # 表示させる個数 my $num = 3; # ファイル名を格納する配列 my @filenames; # 出力用文字列を格納する配列 my @outputs; # 検索する文字列格納用変数(正規表現可能) my $expr = shift(); # サブルーチンの呼び出し # -->ファイル名の列挙 &list($init_dir); # サブルーチンの呼び出し # -->整形して、@outputsに格納 &prnt_titles(@filenames); if (($num + 1) < @outputs) { print ($outputs[]); for (my $i = ; $i < $num; $i++) { print(pop(@outputs)); } } else { print @outputs; } # 終了 exit; # ==================== # === サブルーチン === # ==================== # --->ファイル名列挙 # 引数として与えられたディレクトリの中から # 「\d+」に該当するものだけを列挙して # @filenameに格納する sub list { # 引数を$dirnameに代入 my $dirname = shift; # ディレクトリを開いて、一つ一つ処理 opendir(DIR, $dirname) or die "$dirname: $!"; foreach my $entry (readdir(DIR)) { # 隠しファイル・ディレクトリだったらパス next if ($entry =~ /[\.]+/); # バックアップや設定用ファイルならパス next if ($entry =~ /[0-9]+\~/); next if ($entry =~ /.*\@hatena/); push @filenames, $entry; } closedir(DIR); } # --->整形して表示 # はてなのリスト形式で検索結果を表示する。 # 引数にはファイル名を格納した配列を指定する。 sub prnt_titles { push @outputs, "- 「$expr」に関連する最近のエントリ\n"; while (@_) { my $part_filename = shift; # パスの区切り文字を指定 my $delim = '/'; # $dirnameの最後が「/」or「\」だったら、区切り文字をnullに if ($init_dir =~ /[\/\\]$/) { $delim = ''; } # 表示 my $full_filename = "$init_dir$delim$part_filename"; open (FILE, $full_filename) or die "$!"; while (<FILE>) { if ($_ =~ /$expr/i){ my $tmp = "-- "; $tmp = $tmp . "[http://d.hatena.ne.jp/sirocco634/"; $tmp = $tmp . $part_filename; $tmp = $tmp . ":title]\n"; push @outputs, $tmp; last; } } close (FILE); } }