Landscape トップページ | < 前の日 2003-04-17 2003-04-18 次の日 2003-04-19 >

Landscape - エンジニアのメモ 2003-04-18

ChangeLog メモ整形スクリプト


* ChangeLog メモ整形スクリプト

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Perl]

- 先頭にタブが入っていない場合で、日付の行ではなかった場合にタブを付加する。

#!/usr/bin/perl
use strict;

defined($ARGV[0]) or die __FILE__ . ": target file not specified\n";
my $memo_file = $ARGV[0];
my @line = &ReadFile($memo_file);
my $str = '';
foreach my $buf (@line) {
  if ($buf =~ /^[^\t]/) {
    if ($buf !~ /^\d{4}-\d{2}-\d{2}\s+.*?<.*>$/) {
      $buf = "\t" . $buf;
    }
  }
  $buf =~ s/\s+$/\n/;
  $str.= $buf;
}
&WriteFile(1, $str, $memo_file);

# 引数で指定されたファイルを読み込み、呼び出し側のコンテキストに応じた形で返す
sub ReadFile($) {
  my $target_file = $_[0];
  my @lines = ();

  if (! -e $target_file) {
    die(__FILE__ . ": error: ReadFile(): $target_file not found.");
  }
  if (! -r $target_file) {
    die(__FILE__ . ": error: ReadFile(): $target_file: permission denied.");
  }
  open(FILE, $target_file) or die(__FILE__ . ": error: ReadFile(): can not open $target_file.");
  flock(FILE, 1);
  @lines = <FILE>;
  close(FILE);

  return (wantarray ? @lines : join('', @lines));
}

# テキストデータをファイルに書き込む
# 引数1 : 0のとき追記、1のとき上書き
# 引数2 : データ (スカラー)
# 引数3 : ファイル名
# 返り値 : 書き込み成功のとき 1
sub WriteFile($$$) {
  my ($overwrite, $data, $target_file) = @_;
  if (-e $target_file) {
    if (! -w $target_file) {
      die(__FILE__ . ": error: WriteFile(): $target_file: permission denied.");
    }
  }

  my $err_msg = __FILE__ . ": error: WriteFile(): Can not open $target_file.";
  if ($overwrite) {
    open(FILE, ">$target_file") or die($err_msg);
  } else {
    open(FILE, ">>$target_file") or die($err_msg);
  }
  flock(FILE, 2);
  print(FILE $data);
  close(FILE);

  return 1;
}


すべての記事の見出し (全1029件)
全カテゴリの一覧と記事の数
カテゴリごとに記事をまとめ読みできます。記事の表題だけを見たい場合は、すべての記事の見出し (カテゴリ別表示) へ。

直近30日分の記事
2007-04-23 (Mon)
2007-03-07 (Wed)
2007-02-27 (Tue)
2007-01-17 (Wed)
2007-01-15 (Mon)
2007-01-14 (Sun)
2007-01-08 (Mon)
2006-12-01 (Fri)
2006-11-22 (Wed)
2006-11-20 (Mon)
2006-11-19 (Sun)
2006-09-30 (Sat)
2006-08-29 (Tue)
2006-08-04 (Fri)
2006-07-27 (Thu)
2006-07-23 (Sun)
2006-07-17 (Mon)
2006-07-10 (Mon)
2006-07-06 (Thu)
2006-07-03 (Mon)
2006-06-29 (Thu)
2006-06-28 (Wed)
2006-06-27 (Tue)
2006-06-25 (Sun)
2006-06-19 (Mon)
2006-06-18 (Sun)
2006-06-15 (Thu)
2006-06-11 (Sun)
2006-06-01 (Thu)
2006-05-30 (Tue)
プロファイル
斎藤 宏明。エンジニアです。宇都宮市に住んでいます。
リンク
RSS
スポンサードリンク
Powered by
さくらインターネット

© 斎藤 宏明 Saito Hiroaki Gmail Address
Landscape - エンジニアのメモ http://sonic64.com/
Landscape はランドスケープと読みます。
ひらがなだと らんどすけーぷ です。