なんか俺の偽者がいるから俺の本命Perlでたててみた。
とりあえず読み書きできるようにするか。
そうすりゃ自分で掲示板くらい組めるようになるだろうし。
弐ch編集のPerl講座
1弐ch編集
02/02/15 07:25ID:zi+qnSnN22
02/02/15 07:27ID:oL67ZYlw 氏ね >>1
02/02/15 07:32ID:???
#! /usr/local/bin/perl
print "Content-type: text/plain\n";
print "\n";
print "MegabbsXP!\n";
基本だな。
まずはヘッダを出力。とりあえずプレーンテキストだからtext/plain。
ヘッダと本文の間は一行空けるために改行を入れる。
じゃないとどこまでがヘッダか分からんから。
もちろんこれは"Content-type: text/plain\n\n"ってまとめてOK。
で次は本文を出力してるわけだ。画面にきちんとでれば成功。
print "Content-type: text/plain\n";
print "\n";
print "MegabbsXP!\n";
基本だな。
まずはヘッダを出力。とりあえずプレーンテキストだからtext/plain。
ヘッダと本文の間は一行空けるために改行を入れる。
じゃないとどこまでがヘッダか分からんから。
もちろんこれは"Content-type: text/plain\n\n"ってまとめてOK。
で次は本文を出力してるわけだ。画面にきちんとでれば成功。
02/02/15 07:44ID:???
#! /usr/local/bin/perl
$text = 'MegabbsXP!';
print "Content-type: text/html\n\n"
print qq|<html><body text="#FF0000">$text</body></html>|;
exit;
次は$textに代入してHTML表示だ。HTMLだからtext/html。
printの次がqq||で囲まれてて変だろ。これはとりあえずqqという関数だと思ってくれ。
意味は「値を""で囲まれてるものとして扱う」かな。
なんでこんなめんどくさいことをするかっていうと、""のなかで"を使いたいから。
普通に"text="#FF0000""ってやったらどこが区切りだかわけ分からんからな。
こういう場合は"text=\"#FF0000\""とエスケープするのが普通だが
"を多用するHTMLでいちいちエスケープしてたら見にくいだろ?だから。
まあqq||なので|を使いたいときはエスケープしなくてはならないが…。
ちなみにqq~~とかqq()とかもできるぞ。
最後のexitはまんま終了な。前回書き忘れたが。
$text = 'MegabbsXP!';
print "Content-type: text/html\n\n"
print qq|<html><body text="#FF0000">$text</body></html>|;
exit;
次は$textに代入してHTML表示だ。HTMLだからtext/html。
printの次がqq||で囲まれてて変だろ。これはとりあえずqqという関数だと思ってくれ。
意味は「値を""で囲まれてるものとして扱う」かな。
なんでこんなめんどくさいことをするかっていうと、""のなかで"を使いたいから。
普通に"text="#FF0000""ってやったらどこが区切りだかわけ分からんからな。
こういう場合は"text=\"#FF0000\""とエスケープするのが普通だが
"を多用するHTMLでいちいちエスケープしてたら見にくいだろ?だから。
まあqq||なので|を使いたいときはエスケープしなくてはならないが…。
ちなみにqq~~とかqq()とかもできるぞ。
最後のexitはまんま終了な。前回書き忘れたが。
02/02/15 07:50ID:???
俺はお前の精神構造が理解出来ない
かまって欲しいのか、奉仕の快感を得たいのか
前に自分の板でやってたのと同じ主旨だろう?
正直、初めはお前の企画に期待してたんだが
最近ではウンザリだ
MEGABBS-XP、MEGABBSバグ無し版(現金徴収済)、二編perl講座
他にも企画倒れが有ったら教えてくれ
かまって欲しいのか、奉仕の快感を得たいのか
前に自分の板でやってたのと同じ主旨だろう?
正直、初めはお前の企画に期待してたんだが
最近ではウンザリだ
MEGABBS-XP、MEGABBSバグ無し版(現金徴収済)、二編perl講座
他にも企画倒れが有ったら教えてくれ
02/02/15 08:05ID:???
open(IN, './log.dat') or &error;
@lines = <IN>;
close(IN);
これでファイルが読める。どうだ?Perlは俺と同じくらいすごいだろ?
openでファイルハンドルINとファイルを結びつける。
openは失敗すると偽を返す。そうするとorが反応して&errorが呼ばれる。
&errorはてきとうなエラー表示関数な。or dieとしてdie関数を呼んでもいいが、
掲示板なら「ファイルが開けませんでした」とか表示したいだろ?
だからわざわざエラー表示関数を呼ぶ。
で@lines。ファイルの改行までをひとつのデータとみて
どんどん配列にぶちこまれるってわけだ。
そしてクローズ。これでINとファイルはきれいに手を切ることができる。
ところで、この方法にはいろいろ問題がある。配列にファイルの全データが
読み込まれる点だ。極端な話、ファイルが500MBあったらそれが全部配列に
代入されちまう。メモリ上に500MB読み込まれるってわけ。お前のパソコン
メモリ何MB?64MB?即死だな。お前が一人で勝手に死ぬのはかまわんが、
サーバー上にはお前以外の人も住んでいるから、その人たちも迷惑をこうむる。
最悪だな。そんなんじゃお前は俺と同類だぞ?ようこそMegabbsへ。
じゃあどうすればいいのかっていうと、次。
@lines = <IN>;
close(IN);
これでファイルが読める。どうだ?Perlは俺と同じくらいすごいだろ?
openでファイルハンドルINとファイルを結びつける。
openは失敗すると偽を返す。そうするとorが反応して&errorが呼ばれる。
&errorはてきとうなエラー表示関数な。or dieとしてdie関数を呼んでもいいが、
掲示板なら「ファイルが開けませんでした」とか表示したいだろ?
だからわざわざエラー表示関数を呼ぶ。
で@lines。ファイルの改行までをひとつのデータとみて
どんどん配列にぶちこまれるってわけだ。
そしてクローズ。これでINとファイルはきれいに手を切ることができる。
ところで、この方法にはいろいろ問題がある。配列にファイルの全データが
読み込まれる点だ。極端な話、ファイルが500MBあったらそれが全部配列に
代入されちまう。メモリ上に500MB読み込まれるってわけ。お前のパソコン
メモリ何MB?64MB?即死だな。お前が一人で勝手に死ぬのはかまわんが、
サーバー上にはお前以外の人も住んでいるから、その人たちも迷惑をこうむる。
最悪だな。そんなんじゃお前は俺と同類だぞ?ようこそMegabbsへ。
じゃあどうすればいいのかっていうと、次。
02/02/15 08:19ID:???
open(IN, './log.dat') or die;
while($line = <IN>) {
print $line;
}
close(IN);
$line=<IN>で$lineに改行まで一行だけ読み込まれるから
whileでぐるぐる回して好きな処理をするわけだ。
つまり<IN>が全部返すが一行返すか
自分の相手をみて勝手にやってくれてるようなもんだ。
この「相手が変数か配列か」っていうのはPerlでは結構重要な部分だと
俺は個人的には思っている。だからお前も思え。
話を戻すが、これなら一行づつだからメモリも安泰なわけだ。
6で俺が書いたお前のパソコンうんぬんっつーのは、ローカルでやるならOKってこと。
お前がお前のパソコンで@lines=<IN>するのは問題ない。お前が死ぬだけだし。
だが鯖上には他の人もいるからやめろってこと。
だから例えば少しのデータをお前がローカルで処理したい時は
@lines=<IN>の方が簡単だからそれでいいじゃん、と。頭は使いようだぞ?
while($line = <IN>) {
print $line;
}
close(IN);
$line=<IN>で$lineに改行まで一行だけ読み込まれるから
whileでぐるぐる回して好きな処理をするわけだ。
つまり<IN>が全部返すが一行返すか
自分の相手をみて勝手にやってくれてるようなもんだ。
この「相手が変数か配列か」っていうのはPerlでは結構重要な部分だと
俺は個人的には思っている。だからお前も思え。
話を戻すが、これなら一行づつだからメモリも安泰なわけだ。
6で俺が書いたお前のパソコンうんぬんっつーのは、ローカルでやるならOKってこと。
お前がお前のパソコンで@lines=<IN>するのは問題ない。お前が死ぬだけだし。
だが鯖上には他の人もいるからやめろってこと。
だから例えば少しのデータをお前がローカルで処理したい時は
@lines=<IN>の方が簡単だからそれでいいじゃん、と。頭は使いようだぞ?
02/02/15 08:22ID:???
ゴメン、やっぱり飽きたからやめるよ (=´Д`=) じゃっ
02/02/15 08:36ID:???
open(OUT, "> ./log.dat") or die;
print OUT "MegabbsXP!\n";
close(OUT);
書き込み。>は上書きの記号だ。覚えろ。
print OUTもなんとなく分かるだろ?OUTに書き込むって意味。
で、クローズ。終わり。
注意すべきは>は上書きだということ。openは最初にファイルを
空にして、それからファイルハンドルとくっつけるイメージだ。
だからor dieの時、つまりopenが失敗した時には
ファイルは空、しかも書き込みもできずっていう最悪パターンだ。
常套手段としてはこれ。
$tmp = './log.tmp'; $file = './log.dat';
open(OUT, "> $tmp") or die;
print OUT "MegabbsXP!\n";
close(OUT);
chmod(0600, $tmp);
rename($tmp, $file);
テンポラリに書きだして、それが成功したのを見届けてからリネーム。
これならopenに失敗してもlog.datは生きてる。無関係だから。
ちなみにrenameも失敗する時があるのだが…まあそれは自分でorしてくれ。
chmodは宿題。自分で調べろ。
print OUT "MegabbsXP!\n";
close(OUT);
書き込み。>は上書きの記号だ。覚えろ。
print OUTもなんとなく分かるだろ?OUTに書き込むって意味。
で、クローズ。終わり。
注意すべきは>は上書きだということ。openは最初にファイルを
空にして、それからファイルハンドルとくっつけるイメージだ。
だからor dieの時、つまりopenが失敗した時には
ファイルは空、しかも書き込みもできずっていう最悪パターンだ。
常套手段としてはこれ。
$tmp = './log.tmp'; $file = './log.dat';
open(OUT, "> $tmp") or die;
print OUT "MegabbsXP!\n";
close(OUT);
chmod(0600, $tmp);
rename($tmp, $file);
テンポラリに書きだして、それが成功したのを見届けてからリネーム。
これならopenに失敗してもlog.datは生きてる。無関係だから。
ちなみにrenameも失敗する時があるのだが…まあそれは自分でorしてくれ。
chmodは宿題。自分で調べろ。
10弐ch編集
02/02/15 09:27ID:??? ($name1, $name2, $god) = ('mike', 'mary', 'nihen');
@names = ('mike', 'mary', 'nihen');
@names = qw(mike mary nihen);
%data = (name1 => 'mike', name2 => 'mary', god => 'nihen');
%data = qw(name1 mike name2 mary god nihen);
分かるよな?分かるようになれ。代入の話だ。
qwはqqと同じようなもので「配列として扱う」ものだ。空白や改行が区切りとみなされる。
qw[]やqw~~でもOK。
$line = <IN>;
($no, $name, $comment) = split(/<>/, $line);
ファイルを処理するループの中でこんなのを見たことがあると思う。
splitで配列が返ってきてるからそれを代入してるわけだ。
ファイルの中身は「1<>nihen<>i am god.」こんな感じだろうな。
じゃあちょっとひねってみるか。
($log{'no'}, $log{'name'}, $log{'comment'}) = split(/<>/, $line);
ハッシュに入れてる。OK?さて。ここでハッシュの配列を表すいい方法がある。
@log{('no', 'name', 'comment')} = split(/<>/, $line);
これだ。これをハッシュスライスという。そのままハッシュのいくつかを並べた配列、だな。
見ればなんとなくやってること分かるだろ?勘のいいお前ならこうもいけることに気付くはず。
@log{qw(no name comment)} = split(/<>/, $line);
な。
だがqw(no name comment)をスクリプトのいろんな場所にいちいち書くのはコピペでも面倒だし、
途中で要素、例えばmailとかが増えると全部書き換えなくてはならない。女関係なみの面倒臭さだ。
そこでこうしてみる。
@format = qw(no name comment mail);
$line = <IN>;
@log{@format} = split(/<>/, $line);
これで@formatを書き換えるだけでこいつを使う全ての個所に対応できるようになった。俺のようにCOOLだろ?
@names = ('mike', 'mary', 'nihen');
@names = qw(mike mary nihen);
%data = (name1 => 'mike', name2 => 'mary', god => 'nihen');
%data = qw(name1 mike name2 mary god nihen);
分かるよな?分かるようになれ。代入の話だ。
qwはqqと同じようなもので「配列として扱う」ものだ。空白や改行が区切りとみなされる。
qw[]やqw~~でもOK。
$line = <IN>;
($no, $name, $comment) = split(/<>/, $line);
ファイルを処理するループの中でこんなのを見たことがあると思う。
splitで配列が返ってきてるからそれを代入してるわけだ。
ファイルの中身は「1<>nihen<>i am god.」こんな感じだろうな。
じゃあちょっとひねってみるか。
($log{'no'}, $log{'name'}, $log{'comment'}) = split(/<>/, $line);
ハッシュに入れてる。OK?さて。ここでハッシュの配列を表すいい方法がある。
@log{('no', 'name', 'comment')} = split(/<>/, $line);
これだ。これをハッシュスライスという。そのままハッシュのいくつかを並べた配列、だな。
見ればなんとなくやってること分かるだろ?勘のいいお前ならこうもいけることに気付くはず。
@log{qw(no name comment)} = split(/<>/, $line);
な。
だがqw(no name comment)をスクリプトのいろんな場所にいちいち書くのはコピペでも面倒だし、
途中で要素、例えばmailとかが増えると全部書き換えなくてはならない。女関係なみの面倒臭さだ。
そこでこうしてみる。
@format = qw(no name comment mail);
$line = <IN>;
@log{@format} = split(/<>/, $line);
これで@formatを書き換えるだけでこいつを使う全ての個所に対応できるようになった。俺のようにCOOLだろ?
02/02/15 09:42ID:???
これ以上Perlスレ増やして何する気だ?
02/02/15 09:53ID:???
> 9
> だからor dieの時、つまりopenが失敗した時には
> ファイルは空、しかも書き込みもできずっていう最悪パターンだ。
>
openが失敗したのにファイルが空になるのか?
ファイルが空になるということは空文字を書きこめたということでは?
詳しく説明しろYO!
> だからor dieの時、つまりopenが失敗した時には
> ファイルは空、しかも書き込みもできずっていう最悪パターンだ。
>
openが失敗したのにファイルが空になるのか?
ファイルが空になるということは空文字を書きこめたということでは?
詳しく説明しろYO!
13弐ch編集
02/02/15 10:13ID:??? print OUT join('<>', @log{@format}),"\n";
書き込みは当然こうなるはずだ。分かるな?次はrequire。
#! /usr/local/bin/perl
require './mytext.pl';
print qq|Content-type: text/html\n\n|;
print qq|<html><body text="#FF0000">$text</body></html>|;
exit;
mytext.plを読み込んでる。イメージとしてはスクリプトのその場所に
指定したファイルが展開されてる感じだ。つまりmytext.plが
$text = 'MegabbsXP!';
1;
なら、スクリプトが
#! /usr/local/bin/perl
$text = 'MegabbsXP!';
1;
print qq|Content-type: text/html\n\n|;
print qq|<html><body text="#FF0000">$text</body></html>|;
exit;
と書かれているようなイメージ。なせmytext.plの最後に1;があるかというと、requireは自分が
成功したのか失敗したのか知る時にファイルの最後の式の真偽で判断するからだ。
だから最後にわざと真をおいてやるわけ。まったくうちの子のように手がかかる…。
で、こうもできる。
# mytext.pl
$text = $text . '?';
1;
#! /usr/local/bin/perl
$text = 'MegabbsXP!';
require './mytext.pl';
print qq|Content-type: text/html\n\n|;
print qq|<html><body text="#FF0000">$text</body></html>|;
exit;
出力はMegabbsXP!?になる。簡単だ。
書き込みは当然こうなるはずだ。分かるな?次はrequire。
#! /usr/local/bin/perl
require './mytext.pl';
print qq|Content-type: text/html\n\n|;
print qq|<html><body text="#FF0000">$text</body></html>|;
exit;
mytext.plを読み込んでる。イメージとしてはスクリプトのその場所に
指定したファイルが展開されてる感じだ。つまりmytext.plが
$text = 'MegabbsXP!';
1;
なら、スクリプトが
#! /usr/local/bin/perl
$text = 'MegabbsXP!';
1;
print qq|Content-type: text/html\n\n|;
print qq|<html><body text="#FF0000">$text</body></html>|;
exit;
と書かれているようなイメージ。なせmytext.plの最後に1;があるかというと、requireは自分が
成功したのか失敗したのか知る時にファイルの最後の式の真偽で判断するからだ。
だから最後にわざと真をおいてやるわけ。まったくうちの子のように手がかかる…。
で、こうもできる。
# mytext.pl
$text = $text . '?';
1;
#! /usr/local/bin/perl
$text = 'MegabbsXP!';
require './mytext.pl';
print qq|Content-type: text/html\n\n|;
print qq|<html><body text="#FF0000">$text</body></html>|;
exit;
出力はMegabbsXP!?になる。簡単だ。
14弐ch編集
02/02/15 10:55ID:??? >>12
ああ、書き方がおかしかったな。flockとrenameを抜いてしまっていてはな。
print中にスクリプトが停止された場合というべきだった。
そうするとログが破壊される。途中までしか書けてないから。
ああ、書き方がおかしかったな。flockとrenameを抜いてしまっていてはな。
print中にスクリプトが停止された場合というべきだった。
そうするとログが破壊される。途中までしか書けてないから。
15弐ch編集
02/02/15 11:01ID:??? #! /usr/local/bin/perl
use strict;
$text = 'MegabbsXP!';
print qq|Content-type: text/html\n\n|;
print qq|<html><body text="#FF0000">$text</body></html>|;
exit;
use strictとは文字通りstrictというものを使うという意味だ。
てきとうにいうとstrictとは未知の値が出てくるとスクリプトエラーになる能力を
持っているライブラリってとこかな。この状態でスクリプトを組んでいけば
エラーが分かりやすくなって開発効率もあがる。
ちなみにこのスクリプトもエラーになるはず。なぜなら$textが
いきなり出てきているから。どこの誰なのか明確にしてやる必要があるわけだ。
my $text = 'MegabbsXP!';
これでOK。「どこ」なのかは分からないが、メインスクリプトで「どこ」はmainだということになっている。
そしてmainがmy $text、つまり私の$textですと言ってるわけ。
# mytext.pl
package MyText;
use strict;
my $text = 'god';
1;
#! /usr/local/bin/perl
use strict;
my $text = 'MegabbsXP!';
require './mytext.pl';
print qq|Content-type: text/html\n\n|;
print qq|<html><body text="#FF0000">$text</body></html>|;
exit;
「どこ」はpackageで宣言できる。mytext.plではMyTextだな。たしかあらたにpackageが
宣言されるかファイルの終わりまでがMyTextの世界。出力は「MegabbsXP!」…分かるよな?
暗黙で自分のpackageの変数が呼ばれるからだ。つまりmainもpackageのひとつにすぎなかったということ。
MyTextの$textは正式名称「$MyText::text」だ。どこの誰か、だ。
よく見かける&jcode::convertがいい例だな。あれはpackage jcodeの中のconvert関数という意味。
use strict;
$text = 'MegabbsXP!';
print qq|Content-type: text/html\n\n|;
print qq|<html><body text="#FF0000">$text</body></html>|;
exit;
use strictとは文字通りstrictというものを使うという意味だ。
てきとうにいうとstrictとは未知の値が出てくるとスクリプトエラーになる能力を
持っているライブラリってとこかな。この状態でスクリプトを組んでいけば
エラーが分かりやすくなって開発効率もあがる。
ちなみにこのスクリプトもエラーになるはず。なぜなら$textが
いきなり出てきているから。どこの誰なのか明確にしてやる必要があるわけだ。
my $text = 'MegabbsXP!';
これでOK。「どこ」なのかは分からないが、メインスクリプトで「どこ」はmainだということになっている。
そしてmainがmy $text、つまり私の$textですと言ってるわけ。
# mytext.pl
package MyText;
use strict;
my $text = 'god';
1;
#! /usr/local/bin/perl
use strict;
my $text = 'MegabbsXP!';
require './mytext.pl';
print qq|Content-type: text/html\n\n|;
print qq|<html><body text="#FF0000">$text</body></html>|;
exit;
「どこ」はpackageで宣言できる。mytext.plではMyTextだな。たしかあらたにpackageが
宣言されるかファイルの終わりまでがMyTextの世界。出力は「MegabbsXP!」…分かるよな?
暗黙で自分のpackageの変数が呼ばれるからだ。つまりmainもpackageのひとつにすぎなかったということ。
MyTextの$textは正式名称「$MyText::text」だ。どこの誰か、だ。
よく見かける&jcode::convertがいい例だな。あれはpackage jcodeの中のconvert関数という意味。
02/02/15 11:31ID:???
> 15
> MyTextの$textは正式名称「$MyText::text」だ。どこの誰か、だ。
>
my $text と局所化されているのでパッケージもヘッタクリもないダロウ?
> MyTextの$textは正式名称「$MyText::text」だ。どこの誰か、だ。
>
my $text と局所化されているのでパッケージもヘッタクリもないダロウ?
17弐ch編集
02/02/15 11:37ID:??? my %tmp = ();
@tmp{qw(no name com)} = split(/<>/);
my $log = \%tmp
これで$tmp{'no'}は$log->{'no'}とも表せるようになった。リファレンスだ。
\%tmpで%tmpのアドレスが取得でき、それが$logに代入されているわけだが…
簡単には「○○のところの」が$logに入ったわけだ。$logの指すところのno。つまり$tmp{'no'}。
だから$log->{'no'}を変更すると$tmp{'no'}も変わる。
my %log = %tmp;
の場合、これは単純なコピーなので$log{'no'}を変更しても$tmp{'no'}は変わらない。別物だから当然だ。
%tmpはマイドキュメントにあるフォルダで$logはデスクトップに置いた%tmpへの
ショートカットだと言えば分かるか?%logはデスクトップにフォルダごとコピーしたってとこだな。
my $log = [];
my $log = {};
これで@tmpや%tmpなどを使わずいきなりリファレンスが作れる。上は配列、下はハッシュ。
$logを元のもののように扱うのには@$log、%$logなどとすればいい。簡単だ。
見やすく分かりやすくする意味で@{$log}、%{$log}としてもいいかもな。
具体的には
push(@{$log}, 100);
@{$log}{qw(no name com)} = split(/<>/);
などと使える。
push(@{$log}, \%tmp);
とした時に$log->[0]->{'no'}は$tmp{'no'}だということが分かれば上出来だ。
そうそう、$log = \$textなら$$logか${$log}、な。
で、なぜこんなものを使うかという話だが。一番単純にはメモリだ。
上の例でいえばHDDがもったいないからということ。
まあ他にもいろいろあるがそれは使っていくうちに分かるだろう。
使える場面では使っていったほうがいい。
@tmp{qw(no name com)} = split(/<>/);
my $log = \%tmp
これで$tmp{'no'}は$log->{'no'}とも表せるようになった。リファレンスだ。
\%tmpで%tmpのアドレスが取得でき、それが$logに代入されているわけだが…
簡単には「○○のところの」が$logに入ったわけだ。$logの指すところのno。つまり$tmp{'no'}。
だから$log->{'no'}を変更すると$tmp{'no'}も変わる。
my %log = %tmp;
の場合、これは単純なコピーなので$log{'no'}を変更しても$tmp{'no'}は変わらない。別物だから当然だ。
%tmpはマイドキュメントにあるフォルダで$logはデスクトップに置いた%tmpへの
ショートカットだと言えば分かるか?%logはデスクトップにフォルダごとコピーしたってとこだな。
my $log = [];
my $log = {};
これで@tmpや%tmpなどを使わずいきなりリファレンスが作れる。上は配列、下はハッシュ。
$logを元のもののように扱うのには@$log、%$logなどとすればいい。簡単だ。
見やすく分かりやすくする意味で@{$log}、%{$log}としてもいいかもな。
具体的には
push(@{$log}, 100);
@{$log}{qw(no name com)} = split(/<>/);
などと使える。
push(@{$log}, \%tmp);
とした時に$log->[0]->{'no'}は$tmp{'no'}だということが分かれば上出来だ。
そうそう、$log = \$textなら$$logか${$log}、な。
で、なぜこんなものを使うかという話だが。一番単純にはメモリだ。
上の例でいえばHDDがもったいないからということ。
まあ他にもいろいろあるがそれは使っていくうちに分かるだろう。
使える場面では使っていったほうがいい。
02/02/15 12:01ID:???
ゴメン、やっぱり飽きたからやめるよ (=´Д`=) じゃっ
02/02/15 12:17ID:???
> 1
> なんか俺の偽者がいるから俺の本命Perlでたててみた。
>
18に漏れの偽者もいるんだけど スレはたてないでおこう。
> なんか俺の偽者がいるから俺の本命Perlでたててみた。
>
18に漏れの偽者もいるんだけど スレはたてないでおこう。
02/02/15 12:28ID:???
このスレは一体何がしたいんですか?
間違った知識をひけらかして。
間違った知識をひけらかして。
21あぼーん
NGNGあぼーん
02/02/16 17:51ID:???
まじめな話、無茶苦茶な話をするのは勘弁してくれ。
02/02/16 21:03ID:???
わかんね。
24名無しさん@お腹いっぱい。
02/02/16 21:13ID:7dTs20wP >>1さん、勉強になります!
02/02/16 21:13ID:???
>>23
理解する必要なし。バカにされるっす。
理解する必要なし。バカにされるっす。
26あぼーん
NGNGあぼーん
27”
02/02/17 12:11ID:??? 姫ハケーン!!!ハァハァw
02/02/17 15:41ID:???
>>1
偽物の方が役に立っていたのだが。
偽物の方が役に立っていたのだが。
02/02/17 17:38ID:???
02/02/17 17:39ID:???
>>29
胸だけはだけての方がいいなぁ・・・はぁはぁ。
胸だけはだけての方がいいなぁ・・・はぁはぁ。
31あぼーん
NGNGあぼーん
32あぼーん
NGNGあぼーん
02/02/17 18:21ID:???
open(OUT, "> ./log.dat") or die;
print OUT "姫の尻穴チェーック!!\n";
close(OUT);
print OUT "姫の尻穴チェーック!!\n";
close(OUT);
02/02/17 18:25ID:???
>>33
まさにディスクのゴミだなw。
まさにディスクのゴミだなw。
02/02/17 18:57ID:???
open(OUT, "> ./log.dat") or die;
print OUT "「ふしぎの海のナディア」って感じでやってみるかな。
現在決定したキャストは、
ナディア=弐編姫
ネモ=ひろゆき
ガーゴイル=切込み
かな。
いや、
ネモ=切込み
ガーゴイル=ひろゆき
かな。現実上の役職では、
ガーゴイル=切込み
ネモ=ひろゆき
だが。
\n";
close(OUT);
print OUT "「ふしぎの海のナディア」って感じでやってみるかな。
現在決定したキャストは、
ナディア=弐編姫
ネモ=ひろゆき
ガーゴイル=切込み
かな。
いや、
ネモ=切込み
ガーゴイル=ひろゆき
かな。現実上の役職では、
ガーゴイル=切込み
ネモ=ひろゆき
だが。
\n";
close(OUT);
02/02/17 18:59ID:???
>>35
文字列に改行入れるなよ・・・レベルがばれるぞ。
文字列に改行入れるなよ・・・レベルがばれるぞ。
02/02/17 19:04ID:???
/∵∴∴,(・)(・)∴| うるせー馬鹿!
02/02/17 19:30ID:???
02/02/17 19:38ID:???
>>38
はあ、何逝ってんのオマエ?? 白痴は消えろや
はあ、何逝ってんのオマエ?? 白痴は消えろや
02/02/17 19:49ID:???
いや、ヒアドキュメントで良いじゃん。
02/02/17 20:01ID:???
>>39
姫、生理か?w
姫、生理か?w
42あぼーん
NGNGあぼーん
43くりはらせんせ
02/02/17 21:53ID:??? よろしく
44あぼーん
NGNGあぼーん
45あぼーん
NGNGあぼーん
02/02/18 09:52ID:???
どんな理由があるにせよ、スレ立て荒らしよりコピペ荒らしの方が規制されやすいの法則。
02/02/18 09:53ID:???
そろそろ、うるせー馬鹿を貼りまくってる奴に関して、
削除依頼で対応してみようか?
スレ立て荒らしもカスだが、コピペ荒らしもカス。
削除依頼で対応してみようか?
スレ立て荒らしもカスだが、コピペ荒らしもカス。
48あぼーん
NGNGあぼーん
02/02/18 11:41ID:???
. ∧ ∧
( ´ ・∀・`) うるせー馬鹿!
( ´ ・∀・`) うるせー馬鹿!
50弐ch編者 ◆ZAdjmi0s
02/02/18 23:54ID:hYF5tvk151弐ch編者 ◆ZAdjmi0s
02/02/18 23:55ID:hYF5tvk1 というわけでなんとなーく引き継いでperl講座でも。
多分大体の人はwindows環境でしょうからそれを前提に進めていきます。
多分大体の人はwindows環境でしょうからそれを前提に進めていきます。
02/02/18 23:55ID:???
ワラタ
53あぼーん
NGNGあぼーん
02/02/18 23:57ID:???
>>51
自分の板でやれよ、カマ
自分の板でやれよ、カマ
55弐ch編者 ◆ZAdjmi0s
02/02/18 23:59ID:hYF5tvk1 とりあえず前提知識、環境整備はこれをよんでください
http://www.megabbs.com/perl.txt
去年の4月に漏れが書いてたものです。
いまとなってはちと不備が見つかるのですが、まぁ修正するのはめんどし
たいしたことではないのでそのままで。
http://www.megabbs.com/perl.txt
去年の4月に漏れが書いてたものです。
いまとなってはちと不備が見つかるのですが、まぁ修正するのはめんどし
たいしたことではないのでそのままで。
02/02/19 00:02ID:???
02/02/19 00:09ID:???
>55
不備の修正を面倒がるのにperl講座するの?
不備の修正を面倒がるのにperl講座するの?
58弐ch編者 ◆ZAdjmi0s
02/02/19 00:11ID:NO37p/Zc じゃーまずはお決まりのHello World!でも
##ここから
print "Hello World!\n";
##ここまで
簡単ですね。
printは
print FILEHANDLE list;
という書式で、listをFILEHANDLEに書き出すという機能を持っています。
FILEHANDLEは省略すると'STDOUT'
listは省略すると$_になります。
この場合 FILEHANDLEは省略されているため
print "Hello World!\n";は
print STDOUT "Hello World!\n";
と同意ということになります。
STDOUTとはCGIでいうところのブラウザー、コマンドプロンプト上でいうところでの画面(モニター)ということになります。
listの部分にはlist(配列)というだけあって
(あたりまえだが)配列で指定でき
print "Hello ","world!","\n";
なんてことができます。
##ここから
print "Hello World!\n";
##ここまで
簡単ですね。
printは
print FILEHANDLE list;
という書式で、listをFILEHANDLEに書き出すという機能を持っています。
FILEHANDLEは省略すると'STDOUT'
listは省略すると$_になります。
この場合 FILEHANDLEは省略されているため
print "Hello World!\n";は
print STDOUT "Hello World!\n";
と同意ということになります。
STDOUTとはCGIでいうところのブラウザー、コマンドプロンプト上でいうところでの画面(モニター)ということになります。
listの部分にはlist(配列)というだけあって
(あたりまえだが)配列で指定でき
print "Hello ","world!","\n";
なんてことができます。
02/02/19 00:13ID:???
60弐ch編者 ◆ZAdjmi0s
02/02/19 00:17ID:NO37p/Zc えーちなみに
文字列を""で囲むと「変数」や「エスケープシーケンス」の解釈がおこなわれて、展開されます。
よって\nを改行として出力したい場合は""で囲むことになります。
単に\nとして表示したい場合は''を使います。
こちらは「変数」、「エスケープシーケンス」の展開が行われません。
>>59
STDINとは標準入力で、
CGIでいうところのPOSTやGETリクエストにおける
httpヘッダーの後の空行の後の部分で
コマンドプロンプト上でいうところのキーボード入力になります。
文字列を""で囲むと「変数」や「エスケープシーケンス」の解釈がおこなわれて、展開されます。
よって\nを改行として出力したい場合は""で囲むことになります。
単に\nとして表示したい場合は''を使います。
こちらは「変数」、「エスケープシーケンス」の展開が行われません。
>>59
STDINとは標準入力で、
CGIでいうところのPOSTやGETリクエストにおける
httpヘッダーの後の空行の後の部分で
コマンドプロンプト上でいうところのキーボード入力になります。
61弐ch編者 ◆ZAdjmi0s
02/02/19 00:20ID:NO37p/Zc とりあえず今日はここまで。。。
ではでは
ではでは
02/02/19 00:21ID:???
STDOUT=Standard Out
STDIN=Standard In
STDIN=Standard In
02/02/19 00:22ID:???
print STDOUT "姫一発ヤラセロハァハァw\n"
02/02/19 00:22ID:???
>>60
>GETリクエストにおけるhttpヘッダーの後の空行の後の部分で
例えばCONTENT-TYPE: text/html\n\n以下の通常HTMLソースと呼ばれる部分のことで良いんだよね。先生。
%a.pl < a.txt > b.txt
おいおい、STDOUTは画面でSTDINはキーボード入力だけじゃないのかよ。と不良学生に豹変するテスト。
>GETリクエストにおけるhttpヘッダーの後の空行の後の部分で
例えばCONTENT-TYPE: text/html\n\n以下の通常HTMLソースと呼ばれる部分のことで良いんだよね。先生。
%a.pl < a.txt > b.txt
おいおい、STDOUTは画面でSTDINはキーボード入力だけじゃないのかよ。と不良学生に豹変するテスト。
65弐ch編者 ◆ZAdjmi0s
02/02/19 00:27ID:NO37p/Zc >>64
>例えばCONTENT-TYPE: text/html\n\n以下の通常HTMLソースと呼ばれる部分のことで良いんだよね。先生。
んーとそれはレスポンス部分だよね?
リクエストのボディの部分がSTDINになるんだよ。
%a.pl < a.txt > b.txt
えと、まぁ確かに画面ではないんだけど
本来画面に出力されるものを他のファイル(など)にリダイレクトしてる、、、
んだとおもう。
いや詳しいところは知らないや((≡´Д`≡))
スマソ
>例えばCONTENT-TYPE: text/html\n\n以下の通常HTMLソースと呼ばれる部分のことで良いんだよね。先生。
んーとそれはレスポンス部分だよね?
リクエストのボディの部分がSTDINになるんだよ。
%a.pl < a.txt > b.txt
えと、まぁ確かに画面ではないんだけど
本来画面に出力されるものを他のファイル(など)にリダイレクトしてる、、、
んだとおもう。
いや詳しいところは知らないや((≡´Д`≡))
スマソ
66あぼーん
NGNGあぼーん
67弐ch編者 ◆ZAdjmi0s
02/02/19 00:28ID:NO37p/Zc ま、とりあえず今日のところはでかけまーす。
明日の今ぐらいの時間にまた質問(いじめ質問含)にでも答えながらすすめていきまーす。
明日の今ぐらいの時間にまた質問(いじめ質問含)にでも答えながらすすめていきまーす。
68あぼーん
NGNGあぼーん
02/02/19 00:30ID:???
02/02/19 00:30ID:???
>>67
とっとと帰れ! ケツ掘ったろか
とっとと帰れ! ケツ掘ったろか
02/02/19 00:31ID:???
02/02/19 00:36ID:???
>>65
HTTPリクエストって\n\nが終端記号で後には何も続かないと思ってたよ。アタシの宿題にしようっと。
標準出力とは「データを渡されることができる何か」です。
実体はそのときの状態によって異なります。
例えば、STDOUTが画面に割り当てられている場合(デフォルトのことが多い)は文字列を表示。
プリンタなら文字列を印刷。
ファイルならそのファイルに出力内容を保存。
ロボットの手を割り当てればprintfでロボットの手を制御できたりも。
STDINも同じ概念。
入力元はキーボードだったりファイルだったり温度センサーだったりします。
HTTPリクエストって\n\nが終端記号で後には何も続かないと思ってたよ。アタシの宿題にしようっと。
標準出力とは「データを渡されることができる何か」です。
実体はそのときの状態によって異なります。
例えば、STDOUTが画面に割り当てられている場合(デフォルトのことが多い)は文字列を表示。
プリンタなら文字列を印刷。
ファイルならそのファイルに出力内容を保存。
ロボットの手を割り当てればprintfでロボットの手を制御できたりも。
STDINも同じ概念。
入力元はキーボードだったりファイルだったり温度センサーだったりします。
02/02/19 00:38ID:???
おおー、マトモにやってくれそうな予感ー。
期待してるよー
期待してるよー
02/02/19 00:52ID:???
> 60
> 単に\nとして表示したい場合は''を使います。
> こちらは「変数」、「エスケープシーケンス」の展開が行われません。
>
シングルクウォート内にある ¥¥ および ¥’はどうなんだYO!
> 単に\nとして表示したい場合は''を使います。
> こちらは「変数」、「エスケープシーケンス」の展開が行われません。
>
シングルクウォート内にある ¥¥ および ¥’はどうなんだYO!
02/02/19 01:01ID:???
02/02/19 01:14ID:???
> 75
そんなの次を実行してみればわかるだRO! これを屁理屈レベルといってうやむやに
する人には所詮プログラミングなんて無理無理!
$a= '\\';
$b= '\\\\';
print "\$a=$a: \$b=$b\n";
そんなの次を実行してみればわかるだRO! これを屁理屈レベルといってうやむやに
する人には所詮プログラミングなんて無理無理!
$a= '\\';
$b= '\\\\';
print "\$a=$a: \$b=$b\n";
77弐ch編者 ◆ZAdjmi0s
02/02/19 01:42ID:NO37p/Zc >>72
STDIN、STDOUTの件は了解。
漏れの認識不足でした。
HTTPリクエストの件は
googleで見つけたここらへんを参照
http://docs.iplanet.com/docs/manuals/enterprise/41/ja/ag/esaphttp.htm#1004513
RFCとかを見たほうが確実なんだろうけど
日本語みつかんなかったんで断念。。。もちっとさがせばあるかも。
>>74-76
ここらへんは明日あたりに持ち越しー。
またもや漏れの認識不足があたかも、、、
はぁ、、、だめだな、、、
STDIN、STDOUTの件は了解。
漏れの認識不足でした。
HTTPリクエストの件は
googleで見つけたここらへんを参照
http://docs.iplanet.com/docs/manuals/enterprise/41/ja/ag/esaphttp.htm#1004513
RFCとかを見たほうが確実なんだろうけど
日本語みつかんなかったんで断念。。。もちっとさがせばあるかも。
>>74-76
ここらへんは明日あたりに持ち越しー。
またもや漏れの認識不足があたかも、、、
はぁ、、、だめだな、、、
02/02/19 01:47ID:???
もっと底辺でもわかる講座きぼんぬヽ(´ー`)ノ
02/02/19 01:59ID:???
80弐ch編者 ◆ZAdjmi0s
02/02/19 02:11ID:NO37p/Zc ''とエスケープシーケンスの話、明日にもちこそーかとおもったけど
安らかに眠れそうになさそうなんでちと調べました。
えー、シングルクォーテーションの中で唯一解釈されるエスケープシーケンスとして
「\\」と「\'」
があるようです。
後者はクォーテーション自身をあらわすためにあり
前者はエスケープに使われる\記号をあらわすためです。
てかんじですかねー。
>>79
phpやってないし(笑
>英語勉強しな。
たしかにねー。。。英語のドキュメント読めないのはちと痛いよなー。。。
勉強したいが。。。
安らかに眠れそうになさそうなんでちと調べました。
えー、シングルクォーテーションの中で唯一解釈されるエスケープシーケンスとして
「\\」と「\'」
があるようです。
後者はクォーテーション自身をあらわすためにあり
前者はエスケープに使われる\記号をあらわすためです。
てかんじですかねー。
>>79
phpやってないし(笑
>英語勉強しな。
たしかにねー。。。英語のドキュメント読めないのはちと痛いよなー。。。
勉強したいが。。。
81あぼーん
NGNGあぼーん
02/02/19 20:03ID:???
02/02/19 20:08ID:???
http://isweb37.infoseek.co.jp/sports/genpuku/lobby.txt
姫、
ネタと断っているとはいえ、
元服の野郎がこんなことを書いていたぜ。
懲罰しようか?w
姫、
ネタと断っているとはいえ、
元服の野郎がこんなことを書いていたぜ。
懲罰しようか?w
84あぼーん
NGNGあぼーん
85けんすう ◆al2rSalQ
02/02/19 23:20ID:??? がんばれ(´ー`)y-~~
02/02/20 00:35ID:???
>>85
かねてから弐編へのラブコールをくりかえし、
ホモ疑惑があがっていたミルクカフェの管理人けんすうに、
ホモ確定判決が下った。
同被告人は、これ以外にも弐編姫萌えレスを2chやmegabbsで繰り返しており、
当然の判決だ、との声が高い。
http://lemmingdead.mine.nu/cgi-bin/megabbs/readres.cgi?bo=kensuu&vi=1002867854155
YIPPIEE!! 2001/12/04(Tue) 01:06
つーか、けんすうの分際で
ユメボタンの会合で女子高校生と茶をシバいてるぢゃねーかw
罰として腕立て伏せ200回+ヴァカ駄精神病院全棟全階永久便所掃除の刑なw
160 YIPPIEE!! 2001/12/06(Thu) 03:18
>>155
ただの女子高生じゃない。スタアの恋に出てるアイドル。
164 けんすう 2001/12/06(Thu) 11:51
>160
かわいかった、、、
173 YIPPIEE!! 2001/12/09(Sun) 10:02
>>164
<160>弐編姫とどっちが可愛かったんだ?(マラ
174 けんすう 2001/12/10(Mon) 01:24
>>173
あーーーーーー!微妙。
これ、マジ?(汗
かねてから弐編へのラブコールをくりかえし、
ホモ疑惑があがっていたミルクカフェの管理人けんすうに、
ホモ確定判決が下った。
同被告人は、これ以外にも弐編姫萌えレスを2chやmegabbsで繰り返しており、
当然の判決だ、との声が高い。
http://lemmingdead.mine.nu/cgi-bin/megabbs/readres.cgi?bo=kensuu&vi=1002867854155
YIPPIEE!! 2001/12/04(Tue) 01:06
つーか、けんすうの分際で
ユメボタンの会合で女子高校生と茶をシバいてるぢゃねーかw
罰として腕立て伏せ200回+ヴァカ駄精神病院全棟全階永久便所掃除の刑なw
160 YIPPIEE!! 2001/12/06(Thu) 03:18
>>155
ただの女子高生じゃない。スタアの恋に出てるアイドル。
164 けんすう 2001/12/06(Thu) 11:51
>160
かわいかった、、、
173 YIPPIEE!! 2001/12/09(Sun) 10:02
>>164
<160>弐編姫とどっちが可愛かったんだ?(マラ
174 けんすう 2001/12/10(Mon) 01:24
>>173
あーーーーーー!微妙。
これ、マジ?(汗
02/02/20 00:46ID:???
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| オカマ に ホモ か
| そら目出てえな!!
∧ ∧ |/\_________
(,,゚Д゚)____.
(つ/~ ※ ※ \
/※ ※ ※ ※ \
~~~~~~~~~~~~~~~~~~~
| オカマ に ホモ か
| そら目出てえな!!
∧ ∧ |/\_________
(,,゚Д゚)____.
(つ/~ ※ ※ \
/※ ※ ※ ※ \
~~~~~~~~~~~~~~~~~~~
88あぼーん
NGNGあぼーん
89>>88
02/02/20 01:53ID:??? なんか笑える
02/02/20 02:24ID:???
電網海の弐編姫
予告編
第壱話 うそっ、君、オトコなのか??
時は2002年。
俺は渋谷で3人の男女に追われていた
とある美少女とぶつかり、
ある青い宝石を手に入れる。
それが全ての物語の始まりだったのだ。
予告編
第壱話 うそっ、君、オトコなのか??
時は2002年。
俺は渋谷で3人の男女に追われていた
とある美少女とぶつかり、
ある青い宝石を手に入れる。
それが全ての物語の始まりだったのだ。
02/02/20 12:43ID:???
気持ちはわかるが、ちゃんとやろうとしてる人を邪魔するのは
単なる荒らしだぞ。
とか書くと今まで弐編が〜」とか言い出すやつが出てきそうだけど。
単なる荒らしだぞ。
とか書くと今まで弐編が〜」とか言い出すやつが出てきそうだけど。
92名無しさん@お腹いっぱい。
02/02/20 14:22ID:G1Z6CIrZ_/二二) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
/ / / \ | 弐編の家臣でござる。
iーΥー―i ( | このスレはメガビ領民一同の
i!!!!!!!!!!!!iii( > < 唯一の楽しみでござる。
_ |!!!!!!!!!/ヽ/_ | 何卒、荒らしはご容赦くだされ。
\  ̄ ̄ ̄ ̄ ̄ ̄ ̄ / \_______________
\;;;;;;;;;◎;;;;;;;;;;;;;;; / \
/ | / ノ \
02/02/20 14:48ID:???
02/02/20 15:22ID:???
ΛΛガバッ! / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
(;゚Д゚)ミ < コタツギコを荒らしに使うなゴルァ!
⊆ ̄ιノυ 〇 \____________________
(;゚Д゚)ミ < コタツギコを荒らしに使うなゴルァ!
⊆ ̄ιノυ 〇 \____________________
02/02/20 23:18ID:???
姫ゴメン、
愛してるぜw
ハァハァw
96age ◆/ykUbYQ2
02/02/22 10:04ID:??? age
97あぼーん
NGNGあぼーん
98名無しさん@お腹いっぱい。
02/02/22 16:43ID:w46UEt9c 姫って秋田の大館出身なんだろ?
秋田美人だね、ハァハァw
秋田美人だね、ハァハァw
02/02/22 17:04ID:???
100100
02/02/23 02:13ID:HmclvMIX >>98
違うZO
違うZO
101名無しさん@お腹いっぱい。
02/02/23 07:04ID:ukhfZM5J 姫だ。ハアハア。。。
レスを投稿する
ニュース
- 【W杯】韓国が大窮地 悪夢のシナリオ止まらず 決勝T進出順位ボーダーの8位に転落 セネガル、イランに抜かれる ★4 [尺アジ★]
- 【本】ヘルシーに見えて、「薄毛」リスクが上昇…専門医が「血流の大敵」と名指しする日本人が大好きな”白い食べ物” [少考さん★]
- 【芸能】田中みな実、実名告白「めっちゃ格好いい」「インスタもフォローした」 W杯日本代表にメロメロも「狙ってないからね?」 [冬月記者★]
- 【サッカー】「昔のネイマールでしょ」サッカー日本代表・塩貝健人がブラジル戦へ痛快発言…「王国」の印象を問われ [ゴアマガラ★]
- 【サッカー】「世紀の談合マッチになる予感」J組の一戦が話題…ドローで両チーム決勝T進出の“異例事態” [ゴアマガラ★]
- 小学校で英語必修化→学力の格差拡大が深刻…英語嫌いだった夏目漱石に学ぶ、現代の「迷走する早期教育」への処方箋 [バイト歴50年★]
- 【フジテレビ】2026 FORMULA 1【NEXT】Lap52
- 2026 MotoGP Lap42【オランダGP】
- とらせん10
- わしせん3
- 【フジテレビ】2026 FORMULA 1【NEXT】Lap52
- 西武線
- 嫌儲公認のオクシュリ💊「デパス」、名称の由来は「depression を pass する」というこじつけで選ばれたものだった…… [803137891]
- 経団連「年内には訪中して習主席と面会したい😢レアアースもタングステンももう限界😢」 [931948549]
- 土曜プレミアム・世にも奇妙んな物語’26夏の特別編🏡
- sheのことseeって発音するジャップなんなの?
- 「逆だったかも知れねェ…」の画像あるけどナルトって千鳥使えないよね?
- 【悲報】眞子さま、皇族としての気品のカケラも無くなってしまうwwwwwwwwwwwwwwwwwwww [802034645]