Tag Archives: CGI

2ch ジャンプ確認 再現 ime.nu

全く同じ働きをするCGIを書いてみました。
※私の妄想にしか過ぎないので間違ってる可能性もあります。

#!/usr/bin/perl
#===================================
#スクリプト名:ジャンプCGI
#作者:ORBIT
#===================================

# URLの後ろパスがついているかチェック
if ($ENV{'PATH_INFO'} eq ""){&error;}

# パスにhttp:/が含まれている場合削除
$ENV{'PATH_INFO'} =~ s/http:///;

# URLの作成
$PATH = "http:/$ENV{'PATH_INFO'}";

# 出力
print "Content-type: text/htmlnn";
print <<EOT
<html><head>
<title>jump</title></head>
<body>
以下のURLに飛びますよろしいですか?<br>
<a href="$PATH">$PATH</a>
</body></html>
EOT
;

# パスが見つからなかった場合は下記を出力
sub error {
print "Content-type: text/htmlnn";
print <<EOT
<html><head>
<title>jump</title></head>
<body>
test
</body></html>
EOT
;
exit;
}

これをエラーページにしてるのかリダイレクトしてるのか多分そんなところかと思います。

Perl CGI プログラム専用 エディタ

現在、掲示板を作成しようと
日々ちょっとした時間を見つけノートにアイデアをまとめてる日々ですが

実際作成する時間が無く色々と困らされている分けで中々進みません。

そんな中
Perlプログラム専用に作られたエディタを見つけて案外使いやすかったので紹介します。
PerlEditor
とにかく見やすくて扱いやすいです。

今まで使ってたソフトは
ezhtml
Apsaly
etc…..

ezhtmlは気づけばリンクウエアになってましたし
Apsalyは色分けされてません
しかもどちらにも言える事ですが検索機能が使いづらい・・・・・・
検索する文字は合ってるのに確答しないなど

おぃ・・・・^^;
と思う事が度々ありまして困ってました

変数やサブルーチンそれから連想配列など隣に表示してくれるので
わざわざ探す必要が無いです^^

ws000049

ws000050

Perl 解説 ifステートメント 関係演算子

先ずは以下のスクリプトを見てください。


#<ファイル名>
#test.pl
#<スクリプト内容>
#ifステートメントの構文を利用した簡単な
#プログラムを作ってみました。

print “ORBITの年齢はいくつでしょう?n”;
$number = <STDIN>;
#改行コード削除
chomp ($number);

#ifステートメントによる実行の分岐
if ($number == 17) {
#入力された値が17に等しい場合
print “正解です。平凡な学生です^^n”;
}else{
#入力された値が17と異る場合
print “残念!! 正解は17才です^^n”;
}

print “ORBIT SPACEの現在のアクセス数は一日最低何人でしょうかn”;
$number = <STDIN>;
#改行コード削除
chomp ($number);

#ifステートメントによる実行の分岐
if ($number >= 200) {
#入力された値が200以上の場合
print “正解です。記事を読んで頂感謝申し上げます。n”;
}else{
#入力された値が200以下の場合
print “残念!! 記事を読んで頂感謝申し上げます。n”;
}


このスクリプトを実行すると以下のように返ってきます。(一部文字化け有り)
ws000011

if ($number == 17) {
#入力された値が17に等しい場合
print “正解です。平凡な学生です^^n”;
}else{
#入力された値が17と異る場合
print “残念!! 正解は17才です^^n”;
}

のifとは、英語で訳されるように
もしも~たっだら
という意味があります。

if (判定文<式>) {
#入力された値が式の条件に合ってる場合下のステートメントを実行
====ステートメント====
}else{
#入力された値が式の条件に異なってる場合下のステートメントを実行
====ステートメント====
}

==や<=など簡単な関係演算子を紹介しておきます。
a == b
aとbの数列が等しい場合、真を返す
a <= b
数列aが数列b以上の場合、真を返す
a >= b
数列aが数列b以上の場合、真を返す
a < b
数列aより数列bの方が大きい場合、真を返す
a > b
数列aより数列bの方が小さい場合、真を返す
a != b
aとbの数列が異なる場合、真を返す
a eq b
aとbの文字列が等しい場合、真を返す
a le b
文字列aが文字列b以上の場合、真を返す
a ge b
文字列aが文字列b以上の場合、真を返す
a lt b
文字列aより文字列bの方が大きい場合、真を返す
a gt b
文字列aより文字列bの方が小さい場合、真を返す
a ne b
aとbの文字列が異なる場合、真を返す

Perl 基礎解説(ユーザーの入力)

まあ、先ずは以下のプログラムを読み取って行きましょう。


#<ファイル名>
#test.pl
#<内容説明>
#スクリプト実行中にユーザーの入力を要求するするスクリプト。

print “好きなアニメのヒロインの名前を入力してくださいn”;
#ユーザーの入力を待機

$heroine = <stdin>;
#ユーザーからの入力の改行コードーを削除
chomp($heroine);

print “なるほど~$heroineですか~n”;
print “主人公に怒られますよ(爆n”;


まだまだ基礎過ぎて何もプログラムらしいことは書かれてませんが
なんか、ぱっと見はプログラムらしく見えるようになりましたねw

$heroine = <stdin>;
で、入力された数列や文字列を$heroineに代入すると考えてください。

ここで、ユーザーが数列、文字列を入力後[Enter]を入力します。
エンターだけならいいのですが、実はエンターを打つと改行されます。
出力結果の見栄えが実に悪いです。
そこで、改行コードのみ削除するためにchomp関数を利用します。
chomp($heroine);
こう入力することで、変数$heroineに含まれる改行コードを削除して
次の行に移ります。

syanaと入力した場合の実行結果

ws000010

Perl 基礎解説(#コメント)

基本的にプログラムの説明や紹介に使われます。
間違ってもこれから説明するような馬鹿な使い方はしないよう願いたい。

#と入力すると後ろに続く一行はコメントとみなされ無視されます。

#コメント入力してみました。
$mane = “ORBIT”;
print “勉強熱心な$maneは教科書を読んでいますn”;
#そんなの真っ赤な嘘です。
#ORBITは今教科書の後ろに隠した同人誌を熱心に読んでいます。
#第一に彼が勉強なんかするはずありませんじゃないですかwww
#プギャーwwww

こう入力すると以下のような結果が返ってくる。
ws000009

あッ、もちろん#を入力しないでコメントを書くとErroとなる。

Perl 基礎解説 ($~)

代入してみましょう。
$mane = “ORBIT”;
このように入力すると$maneはORBITであると処理されます。
これを使い以下のように入力すると
print “ただいま頭の悪い$maneは補習を受けていますn”;

ただいま頭の悪いORBITは補習を受けています
と、このように出力されます。

では、このように入力するとどうでしょうか。
print ‘あの$maneは補習を受けていますか?n’;

この結果は以下のようになります
あの$maneは補習を受けていますか?n

つまり、’で括ると$やも普通の文字として扱われます。

簡単なおさらい
$mane = “ORBIT”;
print “ただいま頭の悪い$maneは補習を受けていますn”;
print ‘あの$maneは補習を受けていますか?n’;

ws000008

Perl 基礎解説(Print)

このごろ休みがちでしたが、Perlの勉強を再開します。
まず、直接サーバーで試すわけにはいかないので母艦にActivePerl
をここからダウンロードしてインストールします。

インストール後コマンドプロントで
perl -v

と入力しましょう。
インストールに成功していればバージョンが表示されます。

では早速簡単なプログラムを書いてみましょう。
print 1234;
この記述で実行すると
1234
と表示されます。

しかし、この状態で
1234
1234
と表示させたくて
print 1234;
print 1234;
と記述しても12341234
と結果はなるだけです。

改行を行う場合は
n
で行います。

print “n”;
このように記述した場合
改行の入力を出力します。
この時文字の始まりと終わりを表す

で括りましょう。

以上で説明したとおり
Perlは自由型なので以下のように記述しても
print

こんにちは
;

こんにちは
と正常に出力されます。

おさらいとして以下のように記述して試してみましょう。

print 1234;
print “n”;
print “1234n”;
print

こんにちは
;
ws000007