Drkcore

29 03 2009 perl Tweet

perlスクリプト実行中に外部エディタを利用してデータ入力をおこなう

Config::Pitでデータを追加する時に外部エディタが立ち上がって便利なので、ソースを読んでみた。

File::Tempでテンポラリファイルを用意しておいて、system関数で、環境変数Editorに指定されているプログラムで、テンポラリファイルを開く。そのときのタイムスタンプと修正時刻を比較して、更新があったときファイルの内容を読み出す(Config::PitだとYAML::Syckで出し入れ)。

簡単のためにFile::Slurpで。

use File::Temp;
use File::Slurp;
use Path::Class;

my $text;
my $f = File::Temp->new();
close $f;
my $t = file($f->filename)->stat->mtime;
system $ENV{EDITOR}, $f->filename;
if ($t == file($f->filename)->stat->mtime) {
  print STDERR "No changes.";
} else {
  $text = read_file($f->filename); #外部エディタで入力したデータを読み込む
}

print $text;

File::Tempだと、テンポラリファイルの面倒をきちんと見てくれるので安心なので、よく使うんだけど、editorを組み合わせることが出来るんだったら、gamessとかのインプット用のテンプレートを用意しておいて、実行時にeditorでチョロチョロっと追加してそのままrunできるようなものがつくれてよいかもしれない。

About

  • もう5年目(wishlistありマス♡)
  • 最近はPythonとDeepLearning
  • 日本酒自粛中
  • ドラムンベースからミニマルまで
  • ポケモンGOゆるめ

Tag

Python Deep Learning javascript chemoinformatics Emacs sake and more...

Ad

© kzfm 2003-2021