読者です 読者をやめる 読者になる 読者になる

速攻で簡単なテキストエディタ CGI を Perl で作ってみた

仕事でちょっとということで…。ファイルサーバ上のテキストファイルをブラウザから弄れたら便利だったので、速攻(正しくは即行)で作ってみた。(どっかに落ちてると思って探したものの直ぐに見つからなかったので、作ってしまった方が早そうだったから…)
どこでも動かしたいので Perl にした。こんな感じです。
注意:このスクリプトはセキュリティを無視しています。間違ってもインターネットに公開しているサーバに置かないように。

editor.cgi

#!/usr/bin/env perl

use CGI;

$cgi = new CGI;

$content = "";
$msg = "";
$file = $cgi->param('file');

if ($cgi->param('open')) {
  if (open(FH, "< $file")) {
     while (<FH>) {
       $content .= $_;
    }
    close(FH);
    $msg = "open $file.";
  } else {
    $msg = "not found $file.";
  }
  
} elsif ($cgi->param('save')) {
  $content = $cgi->param('content');
  if (open(FH, "> $file")) {
    print FH $content;
    close(FH);
    $msg = "save $file.";
  } else {
    $msg = "failed to save $file.";
  }
}

print <<EOM;
Content-Type:text/html

<html>
<head>
<title>Text Editor</text>
<style type="text/css">
#msg  { color:blue; }
#file { width:280px; }
textarea {
  font-size:10.5pt;
  width:99%;
  height:95%;
}
</style>
</head>
<body>
<form method="post" action="./editor.cgi">
<div>
<input type="text" id="file" name="file" value="$file"/>
<input type="submit" name="open" value="Open"/>
<input type="submit" name="save" value="Save"/>
<span id="msg">$msg</span>
</div>
<textarea name="content">$content</textarea>
</form>
</body>
</html>
EOM

exit;