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

February 11, 2008

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

editor.cgi

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#!/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;

tilfin freelance software engineer