281 :
デフォルトの名無しさん :
02/07/17 12:04 初心者です。 Linuxのマシンのperlで「dbmopen」を使用したいのですが、動きません。perlがdbmopenを使う場合に必要なライブラリや設定について教えてください。 (実は、Yukiwiki2をインストール中です)
>>281 動きません、じゃわかりません。
エラーメッセージを書いてください。
でもdbmopen()は標準ライブラリがあれば動くはずなんだけどな?
283 :
デフォルトの名無しさん :02/07/17 12:31
>>282 そうですね、すいません。実はこのプログラムはCGIでして、エラーの結果は簡単なメッセージしかでないんです。
別にdbmopen関数を使ったスクリプトを動かした方がいいでしょうか?
284 :
コギャル&中高生 :02/07/17 12:33
285 :
デフォルトの名無しさん :02/07/17 12:33
>>282 といっても、全くのPerl知らずでして、「dbmopen関数を
使ったスクリプト」も分からないんです。(^^;
「全くのPerl知らず」がCGIスクリプトを動かすのは非常に危険なことだよ。 まさか共用サーバでテストして無いだろうね? とりあえずスクリプトの冒頭に以下の分を追加してエラーメッセージを表示させてみて。 use CGI::Carp qw(:fatalsToBrowser);
287 :
デフォルトの名無しさん :02/07/17 14:05
条件分岐のことについてなんですが、 「$Aが1か、3か、もしくは5の時…」と表現したい時、 $A==1 || $A==3 || $A==5 …と何度も書かなければいけないのでしょうか? カンマなどで区切って省略するなどの方法があったら、ぜひ教えてください。
288 :
デフォルトの名無しさん :02/07/17 14:11
>>286 スクリプトには、既に use CGI::Carp qw(:fatalsToBrowser)が
あります。でもエラーメッセージ自体はブラウザに表示され
ません。
(dbmopen) ./diff <-- こんなメッセージはでます。
PS Apache の方の設定も見ています。
>>287 残念ながら、省略することは出来ないよ。
ハッシュや配列を使えば若干分かりやすくなるかもしれないけど。
sub ok(){ 1 };
my %test = (
1 => ok,
3 => ok,
5 => ok,
...
);
if($test{$A}){
...
}
>>288 「こんなメッセージ」ってどこに出るのさ?
エラーメッセージは表示されてないんじゃないの?
もう少し分かりやすく状況を説明して。
そのPerlはキミがインストールしたの?
もしそうだとしたら何故dbmopenが使えないのかは分からない。
そうじゃないとしたら標準モジュールがあるか確認して。
291 :
デフォルトの名無しさん :02/07/18 23:10
cgiで Premature end of scrip t headers が直りません 可能な対処法を教えてください
292 :
デフォルトの名無しさん :02/07/18 23:12
26文字から3文字ピックアップして列べる場合の数は 26P3で計算出来るのは当たりまえだけど、その中身を Perlで実際に全部プリントアウトする方法は簡単ですか? やり方が全く皆目検討つきませんでした。 ちなみに10文字あたえてその並べ換えをプリントアウト は何とかなりそうです。
>>292 普通に三重ループにすればいいと思うが。
294 :
デフォルトの名無しさん :02/07/18 23:41
use LWP::Simple;
$URL0 = "
http://messages.yahoo.co.jp/bbs?.mm=CP&action=m&board=1835099&tid=perla4ja4sa4ga4bbcaldha2&sid=1835099&mid=1&type=date&first=1 ";
$start = 1;
$end = 50;
@a =split(/&/, $URL0);
$URL = "
http://messages.yahoo.co.jp " . shift(@a);
while(@a) {
$tmp = shift(@a);
if(!($tmp =~ m/^(mid=|type=|first=)/)) {
$URL .= "&" . $tmp;
if($tmp =~ m/^board=/) {
$tmp =~ s/board=//;
$board = $tmp;
}
elsif($tmp =~ m/^tid=/) {
$tmp =~ s/tid=//;
$tid = $tmp;
}
}
}
$logdir = "C:\\yBBS\\log";
mkdir $logdir . "\\" . $board;
$dir = $logdir . "\\" . $board . "\\" . $tid;
mkdir $dir;
$out = $dir . "\\" . $start . "~" . $end . ".html";
open(OUT, "> $out");
print OUT "<body black link=blue alink=red vlink=#660099><dl>";
for($i = $start; $i <= $end; $i++) {
$text = get($URL . "&mid=" . $i);
$text =~ s/\n//g;
$text =~ m/<big><b>([^>]+)<\/b><\/big>/;
$msgTitle = $1;
$text =~ m/<small>([0-9\/ :]+)<br>[^:]+: (\d+) \/ \d+<\/small>/;
$date = $1;
$msgNum = $2;
#
$text =~ m/<a href="
http:\/\/profiles[^ >]+>([a-zA-Z0-9_]+)<\/a>/;
$user = $1;
#
$text =~ m/<\/small><\/td><\/tr><tr><td colspan=2> \;<br>(.+)<\/td><\/tr><tr><td colspan=2> /;
$msg = $1;
#
$text =~ m/<small>[^>]+<a[^>]+>(\d+)<\/a>[^>]+<\/small>/;
$resNum = $1;
print OUT "<dt>" . $msgNum . " :<a href=><b>" . $user . "</b></a> :" . $date . "<dd>";
print OUT "<b>" . $msgTitle . "</b><br>";
if($i != 1) {
print OUT "<a href=>>\;>\;" . $resNum . "</a><br>";
}
print OUT $msg . "<br><br>";
}
print OUT "<\/body>";
close(OUT);
本文忘れた。
Yahoo!の掲示板を取ってくるスクリプト(
>>294 )を
ヘタレなりに書いてみたんだけど、これではいまいち使いにくい。
使いやすくするために何かアイデア貸してください。
というか、誰か初めから書き直してください。
・・・の悪寒。
>>294 > print OUT "<a href=>>\;>\;" . $resNum . "</a><br>";
">\;>\;"は
&gt¥;&gt¥;
です。
298 :
コギャル&中高生 :02/07/18 23:49
あーーーーーーーーーー。 たしかにオレ、この板の人間じゃないけどさ。 VBでも勉強しよう。
300 :
デフォルトの名無しさん :02/07/19 00:35
>>293 292です。
書き方が悪かったです。
x文字からy文字(x>y)使って(同じ文字を複数回使ってよい)の順列
を全て求めるというのが出来ませんです。
ワシは一般化すると全く手が出ない程度のレベルですんで・・・
サンプルもしくは適当なモジュール教えていただけたら幸です。
>>291 です
書き方が詳しくなかったので
補足します
その前にスレ違いな質問だったのでしょうか?
もし,そうでしたらすみません
今日perlを始めたばかりなのでご容赦ください
それで内容ですが
アクセスログを取得するパールを書きました
でheaderは
#!usr/bin/perl
だと思うのですが
>>291 のようなエラーが出てしまいます
また/usr/binにperlがあるのは確認しました
また
perl ファイル名
とすると普通に通ります
あとログはちゃんと取れています
しかし,error_logを見ると
>>291 のような
エラーが出力されているのです
検索したのですが文字コードを
変換せよ,というページを
みつけてnkfをしたのですが
直りません
初歩的な質問かと思いますが
もし,アドバイスして頂けたら
うれしいです
302 :
デフォルトの名無しさん :02/07/19 01:22
age
>>301 > #!usr/bin/perl
#!/usr/bin/perl
>>291 HTTPヘッダをきちんと出力していない。
>>303 >>304 >>303 すみません ここに書き間違えました
実際は#!/usr/bin/perlと書けてました
>>304 さんのいわれた通りでした
基本的な知識が無かったです
お騒がせしました
306 :
デフォルトの名無しさん :02/07/20 15:05
ブラクラチェッカーのような、他のサイトのhtmlソースを取得するスクリプトは どのように記述するのですか?
LWP::UserAgent
>>306 緑色をしていて、蝉の絵が描いてある本を買うのもいいです。
。。。実をいうと持っていないので書名を知らないです。間抜けな漏れ。。。
309 :
デフォルトの名無しさん :02/07/24 09:39
配列の要素との一致を調べたいのですが $check =~ /join('|', @date)/; つまり↑のようなニュアンスのこと。 しかし、これではうまくいかないみたいです。 お願いします。
難しく考えず、一時変数を使うといいよ。 $re = join '|', @date; $check =~ /^$re$/;
312 :
デフォルトの名無しさん :02/07/24 10:11
>>310 ありがとうございます!
うまくいきました(激感謝)
しかし、直接記述出来ない理由や
^$re$ の^ と $ がないとうまくいかない理由が
いまいちわかってない...
314 :
デフォルトの名無しさん :02/07/24 18:44
Perl5.8.0 が出たというので ActivePerlを待ちきれず、自分でコンパイル してみた。Windows環境の ActivePerl5.6.1 で駄目駄目だった print "表示"; が改善されてないなぁ。しくしく。。。
>>314 ソースをUTF8にするとか
use encoding 'hoge';
とかしてもダメ?
GUI作るときは何を使うのがベストでしょうか? GTK?それともTk?
win2000でvc6持ってるんですが ActivePerlのperlccがうまく行きません。 なんかPerlcc.batに設定することとかあるのでしょうか? .Net SDKのclをかってに使ってしまってるかもしれないんですが。
>>317 割れwin2000じゃ、うまくいきませんよ。
>>318 うそかなんだか知らんが答えられない奴がしゃしゃり出るな。
CygwinのPerlcc[gcc]じゃはなしにならんかったのよ。
320 :
デフォルトの名無しさん :02/07/25 10:04
>315 ダメみたい。 もとより、SJISコードの「表」には \x5f のコードが入っている ので SJISに完全対応しないと 生書きでは 化けてしまう。回避方はいくつか あるんだけど 面倒で。。。
>>317 つーかperlccなんか何に使うんだ。
実験か? Perlの勉強か? perlfaq3は読んだのか?
In general, the compiler will do nothing to make a Perl
program smaller, faster, more portable, or more secure.
In fact, it can make your situation worse.
つーかちゃんと調べてれば割れとか言われて逆ギレしないか。
世の中にはperl2exeっつーのもあるらしい。
http://www.indigostar.com/perl2exe.htm おいらは使ったことないんでこれ以上のことは知らない。
Perlの勉強ですね、linux[elf]ではまぁうまくいきました。
perl2exeはフリーじゃないですよね。
>>321 もう一回だけ言う
答えられない奴がしゃしゃり出るな。
そうやって自分がわからん問題になると自分が理解できてもない
FAQ読めとかURL差し出して問題スルーさせるんだよな。
それで自分はわかったつもりになってんだよ、お笑いだね。
たてよみじゃないよ、嵐でもない、ねたでもないからくだらんつっこみよして答えろヤ。
何でそんなえらそうなんだ。
>>323 自尊心をくすぐって答えを引き出そうとする高等戦略のつもりなのだろう。
>>322 ここで質問&煽りをして時間を無駄にしている暇があったらソースを読むか作者に訊け。
perlcc なんか使わないからな。
>>322 =317
答えられないけどもう一度しゃしゃり出るぞ。
勉強が目的なのなら、perlccが出した「Cコード」を読んだだけで、
何をやっているかわかっただろう。Windowsで実行するまでもなく、
perlccが中途半端で、未来があまり望みのないものだってこともわかるはず。
本当にperlccが出したCコードを読んだのか?
perlのバイトコードの逆アセンブル結果と比べてみたことはあるか?
perl2exeがフリーではないのは知ってるよ。
>>322 の目的がわからなかったから示した。
perlfaq3を読んでないでperlccを使おうとする人にとって
ベストなツールが(ヲレの少ない経験上)perl2exeだというだけ。
(すまん、「ベスト」は言いすぎ。正直に告白する。
もうひとつくらいPerl2exeと同様の仕事をする
プロプライエタリツールがあったと思うがど忘れ)
勉強目的とわかった今、これだけは言いたい。
「win2kでperlccを使おうとしてあれこれ悩む時間で、
他のことを勉強した方が
>>322 のため世のため人のため」
>>322 の目的は「win2kでperlccを動かすこと」であり、
ヲレの目的は「perlccを動かしたところで利が少ないことを
>>322 以外の者に示すため」である以上、このポストでも
>>322 は満足するまい。
しかしヲレはヲレの目的のためにこれをポストするものである。
お目よごしごめん! 気を悪くした方は荒らしの一種とでも思ってくれい。
327 :
デフォルトの名無しさん :02/07/26 06:47
正規表現でPerl5では、/あいうえお/ は問題なく使用できますが、 [あ-ん]は うまく機能しません。 どーにかなりません???
あ-ん♥
(あ|い|・・全部書く・・|ん)
jperl使ったとしても [ぁ-ん] にしないと。
331 :
デフォルトの名無しさん :02/07/27 00:21
s/あーん/イクイク逝っちゃう!/g;
332 :
デフォルトの名無しさん :02/07/29 02:37
[あぁやっいぃ-ん]
cgiをPerlにて作成しているのですが、 FileのOPENした内容の1行だけをPOSTデータに書き換えたいのですが、 OPEN時に『>』では新規POSTデータしか残らず、『>>』ではデータが追記され・・・。 すみません、かなりとんちかんな事を申し上げているとは思いますが よろしくお願いいたします。 スレ・板違いでしたら申し訳ありません。
>+
336 :
デフォルトの名無しさん :02/07/30 23:36
質問です。 #!/usr/bin/perl while (<STDIN>) { chomp ; ($a, $b) = (split / /)[0] ; print $a ; } ってソースで、my name is hoge って打ったらどーして$aがmyになりますか? split は@_の配列に入った後、その後の正規表現で0個にマッチだから$aに該当するものは無しで、@_がそのまま$aに行って、配列の数が入ると思うのですが。今回だと4個。 誰か知恵を分けて下さい。宜しくお願いします。
splitで指定してるのは区切り文字の正規表現でしょ。 普通にマッチするじゃん。
>>337 レスありがとう。
フィールドに分解された後の話なんだけど、0個にマッチのところでつまづいてます。
field 1(my),field 2(name), field 3(is), field 4(hoge)
ではなくて
field 0(my),field 1(name), field 2(is)....
って事ですか?
たとえば{0,2} って書いてもmy にマッチしてるし範囲指定部分が不明です。
宜しくお願いします。
>>338 [0]って、splitでできた配列の0番めってことじゃないの?
($a, $b)の$bって意味ない気が。 @x = split / /; $a = $x[0]; $b = $x[1]; を ($a, $b) = (split / /); @x = split / /; $a = $x[0] を $a = (split / /)[0]; とか、でしょ?
($a, $b) = split / /; か。あと ; 忘れた。
>>340 有難う。
鉤括弧[]は理解ですが、中括弧{}の事で悩んでいるのです。
配列に対する中括弧の中の数字の適用範囲なんです。
あ、ちなみこれって、「初めてのperl 第2版 オライリー出版社」の7章正規表現の7.7.3の練習問題で分からないので質問しました。
「/etc/passwd ファイルのログイン名の実名を出しなさい」 って問題。
模範解答では
#!/usr/bin/perl
while (<STDIN>) {
chomp ;
($user, $gcos) = (split /:/)[0,4] ;
($real) = split(/,/, $gcos) ;
print "$user is $real \n";
}
らしいんですけど、{0,4} の所がどうしても分かりにくくって。
理解ですが → 理解できるのですが ログイン名の実名 → ログイン名と実名
>>342 その模範解答の[0,4]は
@x = split /:/;
$user = $x[0]
$gcos = $x[4]
を
($user, $gcos) = (split /:/)[0,4];
って話でしょ。{}はそこに使えるの?
あーーーーー!
本文も鉤括弧だったーーー!
>>337 340
ごめんなさい。 本当にごめんなさい
346 :
デフォルトの名無しさん :02/07/31 23:14
>>314 これでどう?
use encoding 'shiftjis', Filter=>1;
use utf8;
use encoding 'shiftjis';
print join ' ', split //, 'あいうえお';
347 :
デフォルトの名無しさん :02/08/01 14:14
$a = 'abcdef123ghi'; などとなっているところから数字の部分だけを $iに取りたいのですが、どうやったら良いのかさっぱり。 というわけで教えな兄ちゃん(w
348 :
デフォルトの名無しさん :02/08/01 14:52
正規表現をつかいなさい
$a =~ /[0-9]+/ こんな感じ?
>>347 教えるので漏れのことは兄チャマと呼ぶように。
$a =~ m(\d+);
$i = $&;
で取れた。数字がとびとびに複数回出てくるなら、
while ($a =~ m(\d+)g) {
push(@i, $&);
}
かなぁ。
352 :
デフォルトの名無しさん :02/08/01 17:38
> 346 どうもありがとう。あなたは神。 単に use encoding 'shiftjis', Filter=>1; use utf8; use encoding 'shiftjis'; print "表示"; の部分だけで充分なんだけどね。 いまいち上の3行部分が何を意味してるかわからないから これから 勉強します。
353 :
Perl初心者 :02/08/02 13:32
CONTIG join(AP001046.1:1..158063,AP001047.1:2891..38102, AP001048.1:468..16588,AP001049.1:3222..36589, AP001050.1:20683..98992,AP001051.1:27854..84904, AP001052.1:17810..145540,AP001053.1:15589..161920, AP001054.1:26009..120871,AB001523.1:28023..122638, AB001517.1:8601..43051,AP001055.1:5998..36483, AP001056.1:9890..36252,AP001057.1:168..3729,AP001058.1:100..39553, AP001059.1:10880..36230,AP001060.1:9339..42133, AP001061.1:1343..15847,AP001062.1:6219..36931, AP001063.1:6606..45311,AP001064.1:4259..37061, AP001065.1:25196..115798,AP001066.1:13493..39203, AP001067.1:21334..148845,AJ011930.1:98247..333303, complement(AJ239325.2:1..70301),AP001505.1:724..70282, AP001579.1:1240..139270,AL133499.2:90483..128868, AL163301.2:252851..340000,AL163302.2:1001..340000, AL163303.2:1001..21522,AL133492.2:1..154157,AL592528.1:6352..37428, complement(AJ011931.1:24401..98443),AJ239328.2:10925..41625, AJ011932.1:1241..37818,AP001479.1:1..38936,AP001476.1:2028..32025, AP001472.1:486..26467,AP001474.1:489..4628,AP001470.1:79..2476, AP001471.1:550..7855,AP001467.1:616..7456,AP001101.2:1153..32331, AP001473.1:1643..4299,AP001475.1:44..13697,AP001468.1:170..67332, AP001469.1:480..47859,AP000471.2:1314..75008,AP001477.1:444..38399, AP000335.1:102..26919,AP000336.1:903..36277,AP000337.1:25..53553, AP000338.3:707..82117,AP000339.1:100..77774,AP000340.1:923..35932, AP001478.1:1009..10338) // ↑のデータがあるんですが→例:AP003351.1¥t102..26919¥n のように取り出してデータを整理したいのですがわかりそうでわからない状態です。 誰か教えてください。
354 :
デフォルトの名無しさん :02/08/02 13:48
質問の意味がわからないです
355 :
Perl初心者 :02/08/02 13:59
うまく説明でいなくて申し訳ないです<<354 CONTIG join()の中身だけ取り出して ○○○○:□□..□□□, ↓ ○○○○「タブ」□□..□□□「改行」 というように出力したいということなんですが これで分かってもらえたでしょううか?
>355 s/^(.*?):(.*?),$/$1\t$2\n/g
> CONTIG join(AP001046.1:1..158063,AP001047.1:2891..38102, とか > AP001478.1:1009..10338) の行はいらんのか? あとこんな行はどうすんだ。 > complement(AJ011931.1:24401..98443),AJ239328.2:10925..41625, …ところでCONTIGってなに?
358 :
Perl初心者 :02/08/02 15:09
>356 試してみましたができるところとできないとこがありました。 >357 ファイル内のデータの一部なのでよくわかりません。
>>358 おまえが分からんのに他の奴に分かるわけがあるか。
>>358 あなたがSE(のたまご)だとしたらあなたを殴らなくてはいけない。
>359 まさかそりゃないでしょう。
>358 >354 ああ、意味わかった。まず、データを整形しる。join()を削ってから、中身だけを s/,/\n/g; にかけてから、>356の正規表現を適用しる。 ただ、complementの扱いをどうするか言ってくれんと、これ以上進めん。
いや、待てよ。 ...で〜きた。 while (<>) { chomp; @data = m/(A[A-Z]\d+?\.\d):(\d+?\.\.\d+)/g; while (@data) { print shift @data, "\t"; print shift @data, "\n"; } }
364 :
Perl初心者 :02/08/02 19:07
ほんとに質問の仕方が悪くてすみません。 complement()も削りたいです。
>364 おーい、363でうまくいくでしょ? テストしてみたよ。
366 :
Perl初心者 :02/08/02 19:33
>365 ありがとうございます。 できました。 みなさん、ご迷惑をおかけしました。
367 :
デフォルトの名無しさん :02/08/02 23:49
ファイルロックについて質問なのですが、普通マルチタスクOSはプロセス間の デバイスの排他制御をしていますよね。でもPerlでは明示的にファイルのロック をするようですが、これはなぜですか?
Windowsプログラムも複数起動すると同様の問題が生じ得るよ。 「ファイルロック」で検索したら?
検索したら何となく分かりました。 つまりopen~closeの間、プロセスがストリームを独占できる訳じゃないって事 ですか。そういえばflockはsystemcallでしたね。どうもです。
370 :
デフォルトの名無しさん :02/08/03 11:27
perlを本格的に勉強したいんだけど何かいい本てないかかな? まだ独習Perlでしか勉強してません。
>371 独習Perlをマスターしたんなら、あとはひたすら書いて読むのがいいんじゃないかと 思いますよ。ラクダ本とかは「引く」本だと思う。 漏れはプログラミングPerl、実用Perlプログラミング、Perlクックブックを章ごとに 切り刻んだものを机の引きだしに入れていつも「使って」(読んで、ではない)いる。
s/371/370/;
374 :
デフォルトの名無しさん :02/08/05 11:35
hashの値からキーを取り出すうまい方法って何かありますか?
375 :
デフォルトの名無しさん :02/08/05 12:12
>>374 補足です。
具体的にはハッシュの値(昇順)にハッシュの要素を並べ替える
うまい方法を知りたいです。
sortすれ。
>375 標準関数keysで keys %hash; とやると、ハッシュのキー一覧のリストが返ってきます。これを同じく標準関数sort に与えて sort keys %hash; とするとソートされたハッシュのキー一覧のリストが返ってきます。
ありがとうございます。 ハッシュキーそのものではなく、値の方でキーをソートしたかったんです。 質問が不備ですみません。 foreach $val (sort {$b <=> $a} values %hash){ foreach $ky (keys %hash){ if($val == %hash{$ky}){push @hashkey, $ky;} } } とりあえずこんな方法でいいのかな。
それなら、標準関数reverseを使ってみてはどうでしょうか。 %reversed_hash = reverse %hash; で、キーと値を反転できます。ここでsortしてから、また反転して戻すとか。 あと蛇足ながら、ハッシュの値が数値でないなら比較するときはeqですよ。
>>379 おー、そんな方法が!
早速試してみます。ありがとうございました。
>>375-380 perldoc -q sortを実行してみちくり。
Found in /usr/local/perl/lib/5.8.0/pod/perlfaq4.pod
(中略)
How do I sort a hash (optionally by value instead of key)?
(中略)
@keys = sort keys %hash; # sorted by key
@keys = sort {
$hash{$a} cmp $hash{$b}
} keys %hash; # and by value
>>379 eqじゃなくてcmpだよ。
私は、 >foreach $val (sort {$b <=> $a} values %hash){ の部分ではなく、 >if($val == %hash{$ky}){push @hashkey, $ky;} の部分に対してレスしたまで、とむきになってみるテスト。
>>381 ありがとうございます。
おかげさまで完全解決。
ちなみにソート対象のハッシュの値は数値なので問題なしです。
>>382 文字列の比較の辺り、私自身素人でして
見落としがちな部分だなぁと思います。ご指摘感謝です。
>>382 >>if($val == %hash{$ky}){push @hashkey, $ky;}
>の部分に対してレスしたまで、とむきになってみるテスト。
をを! わし気づいてなかった。
そしたらperldoc -q valueを見てくらさい。
めんどくさいので全文引用。長くてゴメン。
How do I look up a hash element by value?
Create a reverse hash:
%by_value = reverse %by_key;
$key = $by_value{$value};
That's not particularly efficient. It would be
more space-efficient to use:
while (($key, $value) = each %by_key) {
$by_value{$value} = $key;
}
If your hash could have repeated values, the meth-
ods above will only find one of the associated
keys. This may or may not worry you. If it does
worry you, you can always reverse the hash into a
hash of arrays instead:
while (($key, $value) = each %by_key) {
push @{$key_list_by_value{$value}}, $key;
}
print printf ↑この違いって何?
>>387 やっぱり!
漏れもそう思ってたYO!
さっそく、ひろゆき君に教えてあげなくちゃ!
>>387 ビデオではfが最後っていうことはあまりないようですが、実際には
よくあるのですか?
>386 printfだとフォーマットを指定することで出力形式を変えられる。 '2ch'を'002ch'と出力したい時とかに使う。
391 :
デフォルトの名無しさん :02/08/08 07:09
終わった話かもしれないけど、
>>379 $hash{'foo'} = 1;
$hash{'bar'} = 1;
な場合反転して戻すと違うモノにならないかい?
>391 はい、値が一意でなければ使えません。しかし「値でソート」と言っているので 値は一意であると仮定しました。
それはどうだかなー
>393 ご不満ですか? それなら値が一意でない場合はこうします。 while (my($key, $value) = each %hash) { push(@{$rev_hash{$value}}, $key); } 反転させたハッシュの値は配列へのリファレンスとして、そこへ元のハッシュの値に 対応するキーを格納していきます。これで、値 => (複数のキー)というハッシュが 作れます。
395 :
デフォルトの名無しさん :02/08/08 20:49
「リファレンス」って要するにCでいう「ポインタ」みたいな物なんですよね?
396 :
デフォルトの名無しさん :02/08/08 21:26
関数からハッシュ二つを返すにはどうすればいいのでしょう? これだとうまくいきません。 (%a, %b) = func(); sub func{ my %a = (a, 1); my %b = (b, 1); return (%a, %b); }
kent-webのスクリプトを細かく解説しているサイト知りませんか?
>396 ハッシュをそのまま返すことはできませんので、リファレンスで返します。 sub function { my %a = (a => 1); my %b = (b => 1); return(\%a, \%b); } my ($ref_a, $ref_b) = func();
399 :
perl初心者1 :02/08/09 01:18
yahooとかにキーワードを渡して、検索結果のページをゲットする というものは、perlスクリプトでできますか?
できます。
>>400 すんません。
ヒントを教えて頂けないでしょうか?
402 :
デフォルトの名無しさん :02/08/09 01:36
Webプログラム板かどこかでGoogle.pmっていうの開発してた人がいたね。
>>402 ありがとうございます。
探してみます。
404 :
デフォルトの名無しさん :02/08/09 03:31
405 :
デフォルトの名無しさん :02/08/09 10:47
> 404 (399とは別人です) でね、HTTP モジュール見ても LWP モジュール見ても プロクシ噛ませる 場合の処理がよくわからないのです。 ヤフオクから 複数キーワードを組み合わせて いくつかのカテゴリ駆け 回って (自分好みの)出品物一覧を取得する ツール開発中。。。
406 :
デフォルトの名無しさん :02/08/09 14:17
>>395 は無視ですか…(ショボボボボボーン
407 :
デフォルトの名無しさん :02/08/09 14:18
パールモジュールpmはuse XXXXで plは requie 'XXX'でOKですか? あと、pmってCPANとかいろいろ書いてるけど、 ふつーにはダウソできないのですか?
>>406 ポインタ演算できないけど、位置付けは一緒とおもって良いと思うが。
どっちかってーとJavaのそれを思い出したほうが適切だが。
>>407 いーんじゃん?
Hoge.pm でも require Hoge; って書くことは多々有るが。
ふつーにCPANからダウソできます。
411 :
デフォルトの名無しさん :02/08/09 20:39
ビデオ?
僕は現実を知らない、ただの子供なのだろうか…
つーかビデオってなんのことだ。マジな話。
近くのツタヤとかにない? 「初めての真珠」。
415 :
デフォルトの名無しさん :02/08/10 00:06
>>398 ふとおもったんですが
sub function {
my %a = (a => 1);
my %b = (b => 1);
return(\%a, \%b);
}
my ($ref_a, $ref_b) = func();
%a = %$ref_a;
%b = %$ref_b
って$ref_aと$ref_bを一度しか使いませんよね。
もう少し簡潔にできないのかといってみるテスト
そういう場合は普通ハッシュリファレンスのまま使うかな my($ref_a, $ref_b) = func(); print $ref_a->{a}; またはタイプグロブとか。私は使わないけど。 our(%a, %b); (*a, *b) = func(); print $a{a};
>>389 いや、わかるんだが、fってもいろいろあるし…
>>405 言ってる意味がよくわからんのだが
LWPモジュールでプロキシに対して処理したいってことか?
それとも、LWPモジュールとかで作ったやつをプロキシサーバとして
動かしたいってことか?
前者なら、プロクシサーバであってもWWWサーバであるときと同じ
と考えていいぞ。ってか気にすんな
後者なら、ブラウザからHTTPが送られてくるからそれを解析
して適切に処理してやればいい
>>419 なんについて?
プロキシサーバとして扱いたいなら、ブラウザからの要求を
解析する必要がある。
あと、プロキシサーバに対してなんかしたいときに特に
プロキシサーバであることを意識する必要ないんじゃないの?
じゃないとプロキシじゃないし・・・・
#UserAgentのなんかのメソッドにぶち込むだけでいいかも知らんがその方法は
#俺はよく知らんから調べるか、博識の人のレスをまつ
紛らわしかった。
>>419 は
>>405 の
>でね、HTTP モジュール見ても LWP モジュール見ても プロクシ噛ませる
>場合の処理がよくわからないのです。
に対するレスね。
>>421 なるほど。
ああ、俺も質問の意図を激しく誤解してるな・・・
Λ||Λ
>>407 >> パールモジュールpmはuse XXXXで
>> plは requie 'XXX'でOKですか?
>>
>> あと、pmってCPANとかいろいろ書いてるけど、
>> ふつーにはダウソできないのですか?
use Module;の場合、Module.pmというファイルがあると仮定する。つまり自動的に
拡張子を補う。requireはそういうことはしないので、拡張子をつけないといけない。
また、useの場合コンパイル時に処理を行うので、重いスクリプトを何度もテストする
場合はこの方がいい。というか今は特殊な事情がない限り、useを使うのがいい。
この端末では半角カナが読めないので後半には答えられない。
424 :
デフォルトの名無しさん :02/08/10 22:29
csh上でPerlを使っています。 Perlからcshのプロンプトを変更したいのですが上手くいきません。 どのように記述すればよいのでしょう? 「試したこと」 system("set prompt=abcd"); とか、 system("source プロンプトを変更するシェルスクリプト名"); など。
reauire = #include だったと思うのだが・・・・
>>424 子プロセスから親プロセスの環境を直接いじることは不可能。
eval `perl -e 'print "set prompt=abcd"'`
とでも*cshから*やる以外にはない。
428 :
デフォルトの名無しさん :02/08/11 11:11
>427 そうだったんですか、、、 残念だけど仕方ありませんね。 どうも有難うございました。
429 :
デフォルトの名無しさん :02/08/11 23:46
レス削除依頼を簡単にまとめられるJperlで動くスクリプトを作ってください。 おながいします。 ・削除理由によってスレッドをまとめる ・同じスレッドのレスは、一つのスレッドにまとめる ・重複依頼は一つにまとめる こんな感じ
すんまそん。嘘つきました。requireでも拡張子pmを補います。ただし、plでは補わない ことを確認しますた。requireときたらライブラリの拡張子はplだったんで勘違いして ますた。マジすいません。
432 :
デフォルトの名無しさん :02/08/13 01:26
自分のサイトのファイルのダウンロード数を カウントするCGIってどっかにありますか?
アクセスログ見たら
ファイルの中身を真っ白にする方法はありますか? 中身がある既存のファイルを、何にも書いていない空ファイルにしたいのです。 seek関数を使ってポインタを最初に戻してからcloseしてもそのままでした。
open(FILE,">file.txt"); close(FILE);
>>435 試してみたら出来ました。
書き込みモードに設定すればよかったんですね。
マジで助かりましたよ。ありがとうございました。
>>432-433 analog というツールがあるので、それを探しましょう。
http://www.analog.cx/ UNIX用のツールですがWinにも移植されています。
アクセスログを提供してくれないプロバイダだとちょっと難しいかもしれない。
あとは、ファイルへの直接リンクを禁止して、
一度 *.cgi なページを踏ませることにしたらどうですか。で、
*cgi なページではページを踏んだ回数をカウントする、と。
438 :
デフォルトの名無しさん :02/08/15 12:56
すみません、ちょいと聞きたい事があるのですが、ここに任意の 数の要素を持つ任意の数の配列(@array[1], @array[2], ...) が あったとして、全ての配列要素の順列組合せを出力する場合、 何か良い手はあるでしょうか? ちなみに要素の数は配列毎にばらばらです。 WEB 上でいろいろ探してみたのですが、perl 上での多次元配列の 順列組合せについて書かれているページを見付ける事はついに 出来ませんでした... 鬱氏
あとでちょっと調べたりして、自分自身 perl の事が良く 分からないまま質問したなぁ、と反省しています。多分、質問の 意図も理解されないような気がしますので、具体例でしたい事を 書いてみます。 たとえば、 @array[1] = 0.5, 1.0, 1.5, 2.0 @array[2] = 1, 2, 3 として、 (0.5, 1), (0.5, 2), ..., (2.0, 3) という出力が欲しいんです。配列は a, b だけでなく不特定で、 各配列の中身もてんでんばらばらです。 perl の入門書とかを読みながら考えているのですが、配列だの リストだのがだんだんごっちゃになって来てしまっています。 誰かここ読めゴルァで構わないので教えて下さい。
とりあえずだ、 配列は@test=(4,5,6,) こう とりだすのは print $test[0] とかそういうのは分ってるんだね?
>>440 なんとか。
ところで、
@test=(4,5,6)
を
@test[1]=[4,5,6]
と書いても間違いではないでしょうか? 配列自体の数も不特定なので、
配列自体をある配列の要素として扱いたいのですが。< なんか自分で言ってて良く分からない...
@test[1]=[4,5,6]??構文エラーにはならないけど、普通はこんな書きかたしないよ。
とりあえず「プログラミングPerl」を買って読んだ方がいいね。
で、
>>339 はその通りにやろうとすると激しく面倒だから多次元配列の簡単な説明だけね。
my @foo = (1, 2, 3); # 通常の配列
my @bar = (\@foo); # barは要素を一つ持つ配列。その唯一の要素は配列への参照(リファレンス)
push @bar, [4, 5, 6]; # barの要素は二つになった。 [ expr, ...] は配列へのリファレンスのリテラル表現
print $bar[0][0]; # barのindex 0をデリファレンス。 1が表示される。
print $bar[1][2]; # 同様に、6が表示される。
$bar[0][0] = 0; # 代入も同様
少しは分かってもらえたかな?
まぁこのあたりはPerlでもCでも凄く難しいところだよね。
なるほど、質問者とは別だけど そういう風にやるのね…。 リファレンスって便利だね。
__ , ―― '  ̄ ̄ ̄ ̄`――、___ / ̄ ̄__________ ) ) ) `\ ( ,/' ! i l l l l | | | | l l l l l !i`~ーー、、 \ ヽ_ (〆――――-〜//⌒~ヽヽミシヽ、`ヽλ__l 、 ~ λλ___、丶ヽ/'~ヽ、。~ハwwヾ 〉〉 `、ー―――――-丶// /⌒~⌒ヽ、ヽ、 `ーヽく〃 ,//  ̄ ̄ ̄ ̄ ̄ ̄~`( | λ\ヽ冫ノ,冫~ 《丿/ 、 、_______| | \__丶´/lノ冫 l / ` ー――ヽニ_ーl\_、\\\冫 /,〆 `ヽl\___ ̄ \ヽ\ /ノ/ 、`――――――ヽ\__ ̄ ̄、, \ヽ\ ,/イ/  ̄ ̄`――、_ー、!\_ ̄ ̄ノ \ヽ∨'〃/  ̄\ 〉 ノ 〉 ヽο冫 ,〉// ノ,| ~~ (/,/ '/'l ったく馬鹿がつられやがって、この板で決着つけようか?
445 :
foobar :02/08/15 23:09
>>439 @array1=(0.5, 1.0, 1.5, 2.0);
@array2=(1, 2, 3);
for $i (@array1) {
for $j (@array2) {
print "($i, $j), ";
}
}
446 :
デフォルトの名無しさん :02/08/15 23:16
@array = ( [0.5, 1.0, 1.5, 2.0], [1, 2, 3], ); foreach my $foo (@array) { foreach my $bar (@$foo) { print "($foo,$bar), "; } } 日本語キーボード超ウゼー
447 :
デフォルトの名無しさん :02/08/15 23:17
>>446 あ、適当に書いたけど、これじゃ全然ダメだな…
$fooに入ってるのはリストへのリファレンスだ
俺のアホ
448 :
デフォルトの名無しさん :02/08/15 23:25
@array = ( [0.5, 1.0, 1.5, 2.0], [1, 2, 3], # これ以上増えたら、下のコードじゃ対応できない。ヘボいね。 ); for (my $a=0 ; $a<@{$array[0]} ; $a++) { for (my $b=0 ; $b<@{$array[1]} ; $b++) { print "($array[0]->[$a],$array[1]->[$b]), "; } } これでいいか… 日本語キーボード超ウゼー
>>442 むむむ、では、
@test[0]=[1,2,3]
@test[1]=[4,5,6]
ではなく
@test=([1,2,3],[4,5,6])
が正解なんですね。で、さらに配列を追加するには push を使う、と。
@var=(7,8,9,10)
push @test,(\@var)
なーるほど。なんかすごく納得できました。どうもありがとう!!
あとはこれを全部なめるやり方を考えるだけかな。
と言ってもそれが一番面倒そうだけど。
>>448 さんも書いているけど、不特定の配列要素を全部なめるとなると
普通に for を使うだけではダメですよね。
sub recursive ($$$) { my ($matrix, $left, $stratum) = @_; foreach my $oe (@{$matrix->[$stratum]}) { my @tube = (@$left, $oe); if ($stratum+1 >= @$matrix) { print (join(',', @tube), "\n"); } else { recursive ($matrix, \@tube, $stratum+1); } } } my @matrix = ( [1, 2, 3], ['a', 'b', 'c'], ['X', 'Y', 'Z'], ); recursive (\@matrix, [], 0); これでmatrixが二次元配列である限り大丈夫かな
>>449 @test = ($ref1, -> [1,2,3]
$ref2) -> [4,5,6] (概念図、コードとしては不正)
で、配列の要素は配列じゃなくて、それを指すリファレンス(スカラーの一種)です。
それから、配列の要素を指定する場合は接頭記号が$になります。
@test[1] じゃなくて $test[1] です。
>>さらに配列を追加するには push を使う、と。
>>@var=(7,8,9,10)
>>push @test,(\@var)
の場合、配列を追加してるわけじゃなくて、リファレンスを追加しているのです。
分かってたらおせっかいスマソ。
>>450 おお、すごい!!
そっか、再帰的に関数を呼び出すと言う手が使えるんですね!!
うーん、しかし、すぐにはわけわからんですな。少し考えてみます。
455 :
デフォルトの名無しさん :02/08/16 20:41
>>375 遅レスだが
foreach $key (sort {$hash{$b} <=> $hash{$a}} keys %hash){
// some operations
}
でどうか
457 :
デフォルトの名無しさん :02/08/17 11:56
いろんなソースを見たほうが勉強になる。
>>456 失敬失敬。問題だけ見て他の人の解答を見てなかったよ。
459 :
デフォルトの名無しさん :02/08/18 09:46
LWP::UserAgentをつかってProxyのテストをするスクリプトを書いたのですが、 $ua->timeout('30');としても30秒で終わらない(へたすると何分もかかる)状態 になります。 たぶん、$ua->timeout()はHTTPでリクエストを送信するときにヘッダに timeoutを指定して送るだけだからなんじゃないかと思うんですが、 30秒したら、強制的にコネクションを切断して次のプロクシのテストを したいときにはどうすればよいでしょうか? callbackというのを使えばいいのかとも思ったのですが、これだと 何バイトか返ってくるたびにサブルーチンを呼び出すということなので、 ぜんぜん返事が返ってこない場合は意味のないような気もします。 どなたかヒントだけでもお教えくださいませ。よろしくお願いします。
LWPは忘れてalarm関数とかを使ってみる、とかかしら。 うまくいったらフラグをたてとくようにして一定時間後にそれを見ると。
なるほどー my $res; eval { local $SIG{ALRM} = sub { die "timeout" }; alarm $TIMEOUT; # Pass request to the user agent and get a response back $res = $ua->request($req); alarm 0; }; if ($@ =~ /timeout/) { print STDERR "time out\n" if $DEBUG; return; }; こんな感じで書いて見ました。 ただ、これでもたまに1分ほど固まるときがあるんですよね。。 はじめてalarmを使ったので使い方を間違えてるのかな? もうちょっといろいろ試してみます。どうもありがとうございました。
462 :
デフォルトの名無しさん :02/08/26 01:00
CGIをPOSTモードで呼び出したいんですが、どうすればよいでしょうか? GETなら簡単ですけど、それはなしで。 print "Location: hoge.cgi\n\n"; こういうのつかうのかな?
463 :
デフォルトの名無しさん :02/08/26 09:20
print "Location: hoge.cgi; post=mode\:form\n\n"; とかやってみたけどダメだ〜。 それとも不可能でしょうか?
>>463 ちゃんとCGIの勉強したほうがいいかと。
Locationヘッダは関係ないよ。
POSTは標準出力から読み込むんだから。
<FORM ACTION="./hoge.cgi" METHOD="post"> 糞スレを立てた奴の名前を入れて下さい<INPUT TYPE="text" NAME="kusosure"> <INPUT TYPE="submit"> </FORM>
466 :
デフォルトの名無しさん :02/08/26 10:05
うむ、そうですね。
>>465 いや、CGIから呼び出したいんですが。
467 :
デフォルトの名無しさん :02/08/26 12:28
やっぱりわからないなぁ。 参考になるサイトありませんか?
CGIから? CGIを? どっち?
469 :
デフォルトの名無しさん :02/08/26 13:27
CGIからCGIを です。
---foo.cgi--- print <<"__EOM__"; Content-type:text/html <HTML><BODY> <FORM ACTION="./bar.cgi" METHOD="post"> 糞スレを立てた奴の名前を入れて下さい<INPUT TYPE="text" NAME="kusosure"> <INPUT TYPE="submit"> </FORM></BODY></HTML> __EOM__ これで bar.cgi を POST メソッドで呼べるYO!
×これで bar.cgi を POST メソッドで呼べるYO! ○これで foo.cgi から bar.cgi を POST メソッドで呼べるYO!
そのformにnameとかidとかを入れてやって、 <script language="JavaScript"> document.form[hoge].submit </script> 的なJavaScriptを差してやれば目的のことができるのでは?
473 :
デフォルトの名無しさん :02/08/26 16:19
Content-type:text/html <HTML><BODY> <FORM name="form1" ACTION="./hoge.cgi" METHOD="post"> <INPUT TYPE="text" NAME="txt"> <INPUT TYPE="submit" name="btn"> <script language="JavaScript"> document.FORM[form1].submit[btn] </script> </FORM></BODY></HTML> あわせるとこんな感じだが・・ 動いてくれない。 Javaはさっぱりでして。 というかこういう方法しかないんでしょうか?
単にパイプ付きでopenすればいいだけぢゃねーの? 環境変数に適当なものを与えれば、コマンドプロンプトで実行できるのと同じで。
475 :
デフォルトの名無しさん :02/08/26 19:45
お。 パイプ付きでopen・・・ すみません、全然分かりませんです。
えーと、今手元にperlがないので、間違えているかもしれないが。 open(CGI, "|post.cgi"); print CGI "hoge=hage"; みたいなことでは? POSTはcgiに標準入力を食わせることになるから、 そのcgiプログラムを元のperlのcgiから直接実行してやる、と。
477 :
デフォルトの名無しさん :02/08/26 21:20
おお、核心に近づいてきた気がするな。 っていうかPOSTってCGIのことだったのか・・・ でもActivePerlのファイルをみるとpost.cgiってファイルは無いようです。 CGIの呼び出しはどこにいれるのやら print "Location: hoge.cgi\n\n"; open(CGI, "post"); print CGI "mode=form"; こういうことではないですよね?
>>476 それだと同一サーバ上のプログラムを呼んでるだけ。
CGI プログラムを POST で呼ぶには、Web サーバの port 80
とかに Socket 繋いで HTTP でお喋りしなきゃダメ。
もし環境に恵まれているなら、LWP 使うのが楽。
475 はペリカン本 (O'REILLY 「Web クライアントプログラミング」)
読むべし。細かい部分は RFC 2616 参照。
いらすまですう せいきひょうげんというのわぁ おちんちんとかぁ おまんことかぁ /$.*^/とかぁ
480 :
デフォルトの名無しさん :02/08/26 22:16
は〜。 難しそうですねぇ・・ っていうか、 ログイン→データ一覧表示→データ削除→ ”削除しました”画面表示→元のデータ一覧表示に戻る ってやるとページの有効期限切れってなっちゃうじゃないですか。 それをどうにかしたいってことだったのですが。
>>473 を見ると、自サーバかなと思ったけど、実際はどうなん?
元質の
>>462 の発言が、どれかわからない。あげてるやつか?
>>480 Perl の話じゃないから板違いだが…。
有効期限切れ? JavaScript で back してない?
1. ログインページから login.cgi を呼ぶ
2. login.cgi でログイン処理後、処理終了ページを出力
3. 処理終了ページから list.cgi を呼ぶ
4. 出力されたデータ一覧ページから delete.cgi を呼ぶ
5. delete.cgi でデータ削除後、処理終了ページを出力
6. 処理終了ページから list.cgi を呼ぶ
7. 出力されたデータ一覧ページから…
2. や 5. で処理終了ページを一々出したくなかったら、
login.cgi や delete.cgi に list.cgi と同じ機能を持たせれば OK。
データ持ち回りたかったら Cookie なり隠しフォームなり。
はじめまして。 当方文系でプログラム全然わかんない人ですが、恥を忍んでうかがいます。 ネットで公開されているスクリプトを使いたくて ActivePerlをインストールしたんですが、 スクリプトの実行方法がよくわかりません。 プログラミングをしない単なる利用者として perlの仕組みを勉強したインですが、 おすすめの本・サイトがあったら 教えてもらえませんでしょうか…(一応グーグルで検索したんですが)
ちなみにそれはどんなスクリプトなのでしょう。 それがわかると説明しやすいんじゃないかな。
>484さん さっそくのレス、恐れ入ります。 スクリプトの内容は、 辞書データを間引くスクリプトです。 perlはDドライブにインストールしてあるんですが、 スクリプトをDL・解凍した後どこに持っていけばいいのかとか スクリプトを実行する書式とか わかんないことだらけで・…
>>485 まず perl そのものが実行できるかどうか
これはコマンドプロンプトから perl -v と入力して反応があるかどうかを調べる。
バージョン番号などの反応があれば、次へ、無ければパスの設定をする。
次にそのスクリプトを実行する。
付属ドキュメントにインストール方法が書いてなければ、
これは適当なディレクトリに *.pl ファイルを放り込み、
perl スクリプト名 を入力すれば実行できる。
モジュールを別にインストールする必要があるばあいは、
付属ドキュメントによく目を通すこと。
488 :
デフォルトの名無しさん :02/08/27 12:05
i-mode絵文字対応フォームメールを設置したいのですが、 文字化け対策がうまく行きません。 (文字化けする絵文字としない絵文字がある。) 処理をうまくしてる人はどうやってやってます?
>486さん アドバイス、ありがとうございます。 ご指導の第一ステップはクリアできているみたいです。 もうチョット調べれば、なんとかなりそうです。 助かりました。
windowsで子プロセスを起こした場合 プロセスの終了を親プロセスで知ったり、あるいは出力をうけとったり できないでしょうか.
説明不足でした 親プロセスも子プロセスもパールスクリプトで systemは子プロセスの終了待ちをしますから、 まずいです。 Win32::Processモジュールを使って、子プロセスを 作っているんですが、、、、
>489 参考になりました。 ありがとうございます。
494 :
デフォルトの名無しさん :02/08/29 12:59
2ちゃん用ブラウザで読める掲示板を作ろうとしているんですが、なかなかうまく読めません。 大抵のブラウザで読めるようにするために、最低限必要なファイルはなんでしょうか? 今作ったのが、read.cgi、index2.html、subback.html、read[1-9].datです。 datファイルの名前が良く分からなかったので、read1.dat〜read9.datまでとりあえず作りました。
>>494 0ch参考にしてみ。ソース公開してるんで。
496 :
デフォルトの名無しさん :02/08/31 22:32
MacOS8.6で、WEB共有とMacJPerlを使ってローカルでCGIを動かしています。 Linuxサーバーなどでは、スクリプト中で外部のサブルーチンなどを呼ぶ場合は require './sub.txt'; などと記述しますよね。 これをやりたいのですが、Macだとディレクトリを:で表すせいなのか require './sub.txt'; や require '.:sub.txt'; ではエラーになってしまいます。 エラー内容は # sub.txt did not return a true value. File 'Macintosh HD:Desktop Folder:test:index.cgi'; Line 3 です。 どのように記述すればいいのでしょうか?
Perlやってみたいんですけど、何を落とせばいいんでしょうか? あと、エディターは何がいいですか?
>>497 Unix系OSを入手、Perlが標準で入っている。
そうなるとエディタはEmacsかvi、好きな方使え。
書いてあるじゃん。原因が。 > エラー内容は > # sub.txt did not return a true value. > File 'Macintosh HD:Desktop Folder:test:index.cgi'; Line 3 なんでしょ。 「sub.txt did not return a true value」だって。 ラクダ本の641ページ見てごらんよ。持ってないなら本屋で。 あと、この板の上のほうに「CGI は Web プログラミング板へ。」って書いてありますけど。
502 :
デフォルトの名無しさん :02/09/01 14:54
>>501 !=499だけども
らくだ本はやっぱり基本だし買っといたほうがいいかなぁ。
技術評論者のCGI/Perlしかないし。
CGI以外にも結構便利なんだが。
>>502 >sub.txt did not return a true value
の意味がその本読んでもわからないようだったら、
らくだ本買ったほうがいいね。
ただし、今らくだ本は新版の翻訳中。
504 :
デフォルトの名無しさん :02/09/02 21:22
Formで渡された値が半角英数かどうかを 判断したいんだけど... 検索してもなかなか見つからないので 誰か知ってる人、知恵を貸してください。
if ($hoge =~ /^[a-z]+$/) { print "HANKAKU EISUU DESU"; }
[^\W_]
...
>>511 早速のスレ有難うございます。
現在テスト環境がないので、明日試してみたいと思います。
有難うございました。
505-508 出来ました!ありがとうございました! man ascii も勉強になったよ〜
514 :
デフォルトの名無しさん :02/09/04 21:31
datファイルに出力する際、 open OUT,">>datfile.dat"; print OUT "aaaaaa\n"; close OUT; これで実行すると、datfile.datの中に元々あった文章の下の行にaaaaaa\nが入りますよね。 これを1番上の行に挿入したいのですがどうすればいいでしょうか?
>>514 ファイルの途中に挿入するのは原理的に無理じゃない?
>>515 無理なんですか…残念です。
もう一つ質問なのですが、
open IN,"datfile.dat";
while(<IN>){
(省略)
でファイルを読み込んだ時、datfileの上の行から読み込みますよね。
それを下の行から読み込むことは出来ますか?
>516 seek とか使えば出来ないことはないと思うけどちょっとしんどいかな...... datfile がそんなに大きくないなら open FH, "datfile.dat"; @file = <FH>; for ( $i = $#file; $i >= 0; $i-- ) { print $file[$i]; }
素直にreverse使え。
>>514 open TMP, ">datfile.tmp" or die;
open DAT, "<datfile.dat" or die;
print TMP "aaaaaa\n";
print TMP <DAT>;
close TMP;
close DAT;
rename "datfile.tmp" => "datfile.dat" or die;
一番上に追加できりゃ、
>>516 の処理はしなくていいと
読んだんだけど。これでいい?
520 :
newbie :02/09/05 10:21
1234567,犬,222,1 2345678,猫,333,2 というCSVファイルを食わせて、最後の数字の行だけ 前から三つまでのフィールドを書き出したいのですが、 どうやったらよいのでしょうか ちなみにMacPerlのドロップレットにしようと思ってます
tail と sed をつかったらどうよ。
PerlスレッドはWebProgに隔離されます。 おまえら半端言語のくせに生意気だ。
523 :
デフォルトの名無しさん :02/09/06 02:03
perlのコマンドが一覧で乗ってるところを教えてください。 もしくは初心者用ページを。
524 :
名無しさん@Meadow :02/09/06 05:53
525 :
デフォルトの名無しさん :02/09/06 17:55
2chのトリップと同じ処理ができるスクリプトを作りました。 しかしサーバーのOSがFreeBSDだったため、cryptの処理がLinuxと違い、困っています。 なにかうまく同じ処理結果を出す方法はないでしょうか?
>>525 Linuxのソースからcryptだけとってくるか、
FreeBSDのLinuxエミュレータ使えばいいんじゃねーの?
528 :
デフォルトの名無しさん :02/09/06 19:43
ある変数に格納されているテキストを, 外部コマンドに標準入力から入れ,結果をまた 別の変数に格納したいのですが,良い方法ないでしょうか. $result = `echo '$a' | foo`; としたのですが,$aに「'」が入っていたりすると,まずいようです. 何か良い方法があれば,教えてください.
DESのとMD5のとあるんじゃなかったけ。
>>529 ごめん。そだね。
>>525 cpanにcryptモジュールがいくつかあるからそっちでやってみて。
ちなみに、linuxでもDebianはDES、MandrakeはMD5みたい。
>528 どうして $a を ' で括る必要があるの?
532 :
デフォルトの名無しさん :02/09/06 21:47
>531 $aはHTML文書で,spaceやら"&"などを含んでいるのです... 何かいい方法は無いでしょうか?
^"^?" ^"^??" かな?
>532 " で括るようにしてもダメ? それか、\Q$a\E とか......
535 :
デフォルトの名無しさん :02/09/06 22:11
>534 \Q$a\Eでいけました. ありがとうございました.
536 :
デフォルトの名無しさん :02/09/06 22:49
#!/usr/bin/perl print<<"HERE"; Content-type: text/html <html><body> ■□■□■ index ■□■□■ </body></html> HERE exit; こういうスクリプトを書いてサーバーに送った所、サーバーエラーになりました。 その後、■□■□■ index ■□■□■の部分の「 index 」の 全角スペースを取った所、正常に動くようになりました。■□■□■index■□■□■ これはPerlの仕様でしょうか?それとも、サーバー側の問題でしょうか?
>>537 の方法でうまくいきました。
皆さん、どうもありがとうございました。
全角の空白の二バイト目に「@」が入ってるからエラーになるんじゃないかな。 Perlの仕様だね。全角の空白以外の文字でも運が悪ければエラーになると思うよ。 Perl5.8.0だと面倒なことしないでスクリプト中にUnicodeとかで日本語書いて ラクーにシフトJISに直して出力できたりするんだろうか?
540 :
デフォルトの名無しさん :02/09/07 18:55
crypt で暗号化されたものを なんとか解析したいんですけど・・・ やはり無理ですか?
実質不可能と考えてよい。
ん? ちゃんと計算せずに勘で書くけど、 賞金出すほど大変? Perlで適当にやっても一ヶ月ぐらいで何とかなったり する程度の分量だったりしないのかな。
だれか5.8使ってる人いる?
546 :
デフォルトの名無しさん :02/09/10 14:11
ログのを変換する作業をしています。 Sep 9 14:06:24 hogeという感じで表示されるので if (/^(\w+ \d+ \d+:\d+:\d+ ) という感じに拾っています。 しかし10日から31日の間は Sep 10とログが出るようです。 if (/^(\w+ \d+ \d+:\d+:\d+ )これでしか拾えません 差がSepと日にちの間が1日から9日の間は半角スペース二つ 10日から31日の間は一つになってしまいます。 どのように書けば両方とも拾えるようになりますでしょうか? 教えてください。
if (/^(\w+ {1,2}\d+ \d+:\d+:\d+ )
\s+で1個以上の空白文字になる。
>>547 {1,2}って手があったか。
(氏ね){1,999}
550 :
foobar :02/09/10 15:08
ありがとうみなさん {1,2}と\s+どちらでもいけました。 でもスペースが一つか二つと限定されてるので一応{1,2}でやってみました。 ありがとうございました。
>>545 Gentooだとデフォルトで5.8だよ
553 :
デフォルトの名無しさん :02/09/11 04:18
>>552 システム総入れ替えはいくらなんでもしんどいよ。
>>550 xs関係以外でなにか問題出てる?
unicodeをフルに使いたい用途があるんで移行したい気持ちはあるんだけど、
なぜか周りに移行するって人が全然いないんで、ちょっとびびってた。
移行が一段落したらどんな感じがレスしてくらはい。
PerlスレはWebProgに逝け。 さもないと荒らすからな
>>554 WebやるときはC/C++で、テキストファイルの一括処理やるときはPerl使ってますが何か?
556 :
デフォルトの名無しさん :02/09/11 08:37
>>554 Webやるときもテキストファイル、データベースもPerl使ってますが何か?
>>554 Perlのことよく知らないんだろうなこいつは。。
まあ正規表現書き方教室みたいのは向こうでやってほしいが
厨房言語は隔離板でやってほしい。
562 :
デフォルトの名無しさん :02/09/11 17:53
foreach (@tmp) { if(/hoge/) { インデックス+= 3; } } とかする事はできないのでしょうか? つまり for ($i = 0; $i< @tmp; $i++ ) { $_ = $tmp[$i]; if(/hoge/) { $i += 3; } } の様な事がforeachで記述できないでしょうか?
for (;;)な形式で書けば良いじゃん。。。
糞スレ PerlはWebProgへ
>>564 CGIってどういう意味か知ってます?
CGI=Perlって脳内変換されてるなら病院逝ったほうがいいですよ。
PerlなんかCGI以外の用途はないだろヴォケが Rubyとは違うんだよ。Perl糞厨房ども
ずいぶんヘタクソな煽りが現れたね。山田君、566の座布団全部もってって。
少しぐらい間違えてもC言語みたいに暴走しないし、 標準入出力、ファイル入出力、文字列操作等使いやすいし、 UNIX系のマシンには高い確率でインストールされてるし、 ちょっとした処理にはとても使いやすいよPerl。 (だからCGIに向くのかも、、)
Perlで2chのスレを読んでますよ。
>564はム板のrubyスレでPerl隔離運動やってるよ。 どうも賑わっているPerlスレが気に入らなくて仕方ないようだ。 目障りだから、そのうち書込み禁止にしてもらった方がいいだ ろうけど・・・
shigeが復活したようだ
プログラム板でのRubyスレの惨状は全てPerlユーザの責任なんだから WebProgにでも逝って反省の念を示したらどうだ?糞虫ども
Rubyファンってこんなに下品なの。 Rubyスレ行ってみて書き込みの品の悪さに読む気もしなかった。
言語のチョイスと性格って関連あるような気がするんだけどどうだろ。 Java == あたらし物好き Perl == 化石 C == 堅実 .NET関係 == 寄らば大樹の陰 LISP == 屁理屈こねるメガネ Pascal == 杓子定規 SQL == 5時から男 さてRubyは・・・?
Ruby == 真のUNIXハッカー
なるほど。ワナビーが寄り付くわけね。
おれはこうだと信じて疑わないが。 Java == 流行に流されやすく主体性が無い。 C == 井の中の蛙の危険性アリ。 .NET == 盲目的な期待を抱きがち。 Ruby == Perlの真似しかできない。 もち、仕事で使わざるをえないケースは別。 Javaまわりは「押さえとかなっ」といった強迫観念が うまくループしているが、それがいつまで続くかは謎。
foreach (<IN>) { ($id, $data1, $data2) = split /\t/; %data = ($id => { data1 => $data1, data2 => $data2}); } として、$data{0}{data1}みたいにアクセスしたいのですが、 %dataに最後に読み込んだ物しか保存されてないようです。 0 256 256 1 128 128 とあったとき、0を読み込んだ直後だと$data{0}で中身が取り出せるのですが、 1を読み込むと0が消えてしまいます。 なにかおかしい(勿論私が)と思うのですが、なにがまずいのか教えて下さい。 ちなみに、@data[$id]とした場合は動いています。
ageます
それだと、ループの中で毎回ハッシュを初期化してしまいます。 $data{$id} = { data1 => $data1, data2 => $data2}; とするとうまくいきますた。
RubyとPHPって、なんであんなに嫌われるんだろう。
>>582 即レス感謝です、ありがとうございました。
しかし、配列だと初期化されないんですね。 ちょっと納得いくような行かないような。
>>562 あんたのコードでちゃんと動きましたが、何か?
@tmp = ('hoge', 'moge', 'boke', 'giko', 'mona', 'hoge');
$counter=0;
foreach (@tmp) {
if(/hoge/) {
$counter += 3;
}
print "$counter", "\n";
}
print "result $counter", "\n";
結果は6。
>>585 %data = ですと、「ハッシュ全体」みたいな意味になります。
@data[$id] ですと、「配列の要素」って意味です。
(しかしこの書き方だとワーニングが出るはずです。正しくは$data[$id])
$data[$id]にあたるのが、$data{$id}ということです。
確認してませんけど、@data = ($id, $data1, $data2);
なんて書くとやっぱり毎回消えるはずです。
丁寧にありがとうございます。 >しかしこの書き方だとワーニングが出るはずです ワーニング出ませんでした、スカラーコンテキストだから$が正しいんですね。 全然気にしてませんでした。 ちなみに、ActivePerl v5.6.0 Build616使ってます。 古いかも知れませんが。
>>588 -wオプションをつけてみては?
> perl -wc hoge.pl
みたいな感じで。
590 :
デフォルトの名無しさん :02/09/13 23:48
base64形式でエンコードされたeuc文字列$keyをもとの eucに戻すには: $keyw =~ s/%(..)/pack('c', hex($1))/ge; と1行で済みますが、 base64形式でエンコードされたshift-jis文字列$key を簡単にもとのshift-jis文字に戻すperlコードを教え ていただけないでしょうか?(Jcode.pmでやろうと しましたが、うまく行きません...)
単にtosjis関数かませばいけたはずだけど
RubyもPHPも別に嫌われていないし。
単に 2ch 上で、嫌われるように仕向けている奴がいるだけで。
>>583 はその張本人か、そうでなければ嘘を嘘と見抜けなくて 2ch に向いていない
かどっちか。
いや、だから、 >>単に 2ch 上で、嫌われるように仕向けている奴がいる なんでこういうのがいっぱいいるのかなと。他の言語よりはるかに目立つ。
・実際に嫌っている奴が結構いる ・嫌っているヤシが必死 くらいしかありえないんじゃないの
>・嫌っているヤシが必死 こっちのほうがありそう。 ほかに常駐してるスレでたったひとりのためにひどい雰囲気になったことがあって、強制IDに変更されたとたんにまともに戻ったりしたよ。
____ /∵∴∵∴\ /∵∴∵∴∵∴\ /∵∴∴,(・)(・)∴| |∵∵/ ○ \| |∵ / 三 | 三 | / ̄ ̄ ̄ ̄ |∵ | __|__ | < うるせー馬鹿! \| \_/ / \____ \____/
597 :
デフォルトの名無しさん :02/09/15 13:17
>>591 > 単にtosjis関数かませばいけたはずだけど
tosjis関数の前に、base64をデコードする必要とあるはず
ですが、この方法が分かりません。
perldoc Jcodeの説明を参考にして、次のようなコードを
作りました
#$sjkeyは、base64に変換されたshift-jis文字列
$jcode = Jcode->new($sjkey);
$jcode->mime_decode;
$euc = $jcode->euc;
これで、$eucには、eucに変換された文字列が入るはず
なのですが、実際には次のようなbase64のままの文字
しか$eucには入りません。
%uFF95%uFFFA%uFF91%uFF97
base64をデコードして、それをeucに変換する、のは
cgiの基本の基本のはずなのですが、分かりやすい書籍
などでも、分かりやすく説明したものが見つかりません。
ご指導いただけると、助かります。
「CGI は Web プログラミング板へ。」 って書いてあるのにしつこくしつこく CGIの話をし続けるのはどうしたわけだろうか。 ていうか、シフトJISなのか? それ。
599 :
デフォルトの名無しさん :02/09/15 14:06
>598 ご指導ありがとうございます。 (1) %uFF95%uFFFA%uFF91%uFF97 >ていうか、(1)はシフトJISなのか? 上のコードは「放送」という文字に対応しています。 MacOSX用Internet Explorer5.2で「放送」をperl/cgiで 処理する過程で出てきたものです。シフトJISではないかも しれませんが、とにかく(1)をeucに戻したいのです。 MacOSX用Netscape7.0だと素直なbase64/eucでは、 「放送」は、 %CA%FC%C1%F7 でした。
なんか物凄い勘違いというかまるでわかってない気がするんだけど。 %xxx%xxx...ってのはbase64じゃないよ? それは普通URIエンコードとかURIエスケープとか呼ばれる物だけど。 しかももしかしてJavaScriptでエンコードしてる? %uFF95はShift_JISでもなくEUC-JPでもなくUnicodeだよ。
…ってUnicodeじゃないじゃん…? じゃあそのuは何だろう。謎だぁ…。 とりあえず以下のコードでデコードできるけど、どうやってエンコードしてるのさ? $s1 = '%uFF95%uFFFA%uFF91%uFF97'; $s1 =~ s/%uFF([A-F0-9]{2})/pack 'H*', $1/eg; print $s1;
602 :
デフォルトの名無しさん :02/09/15 15:08
>>600 > しかももしかしてJavaScriptでエンコードしてる?
その通りです。私が作成しているソフトでは、文字列を
cgi/perlへ渡す際に、
(1) <FORM METHOD="get" ACTION="$main::myname">
から直接、perl/cgiに渡す方法、と
(2) Internet Explore5.2のJavaScriptでエンコードして、その
エンコードした値をCookieに保存して、そのCookieをperl/cgi
が読み込む、という方法、
の2つを採用しています。
MacOSX用IE5.2では、
(1)の方法では、「放送」とうい文字が:
%CA%FC%C1%F7 (euc)
なのに、(2)の方法では、
%uFF95%uFFFA%uFF91%uFF97 (unicode)
となり、混乱してしまいました。
> $s1 =~ s/%uFF([A-F0-9]{2})/pack 'H*', $1/eg;
ご指導ありがとうございます。これで成功しました。
この問題を解決するのに数十時間を費やし、書籍も2冊購入し、
googleで何十回も検索しましたが、どれも無駄でした。
この掲示板の皆様からのご指導がなければ、解決できませんで
した。深くお礼を申し上げます。
603 :
デフォルトの名無しさん :02/09/15 19:44
先生、教えて。 ファイルハンドルから実際のファイル名を取得できますか? perl5.0系です。
JavaScriptでescapeしたものはブラウザによってUnicodeだったりSJISだったりするよ、ちなみに。
SJISで書いてね。。。
606 :
デフォルトの名無しさん :02/09/15 22:50
>>603 そのファイルハンドルはどうやって取得したの?
>>606 open( INFILE, "test.txt" ) ;
で。
別にあるサブルーチンで、このINFILEを受け取って、そのファイル名を
取得したいのです。(もちろん、引数でファイル名指定ってのはナシで)
608 :
デフォルトの名無しさん :02/09/16 02:11
引数でファイル名指定ってのがナシな理由がわからない
Win2kじゃ使えないんですか?>Perl
ああ、使えないんですね。ありがとうございました。
612 :
デフォルトの名無しさん :02/09/16 03:35
>>612 "No additional requirements"
と、あるみたいですが・・・。
あ、そういうことでしたか。 翻訳してみて漸く分かりました。 お世話様でした。 NTのやつでいいんですよね?
ありがとうございました。 以前、Win98対応のやつしか入ってない本を買いまして、 自分のPCがWin2kだったため諦めてたんです。 これで本が無駄にならずに済みそうですw 明日からPerl始めてみます。
>>617 ありがとうございます。
お陰様で今週はPerl週間になりましたw
ソースいじりながら参考にさせて頂きます。
>>617 このページ参考になりそうです。
ありがとうございました。
>>618 がんばれ。
もしHPで使うならインストールディレクトリは合わせといたほうがいいよ。
’\usr\bin’とか
activeperlについて質問させてください。 chdir("../"); ってactiveperlでも動くんですか? linuxだと普通に動いてるんだけどactiveperl だと動いてないっぽいのは気のせいでしょうか。
>>621 どうやって「動いてないっぽい」事を確かめたの?
use Cwd;
@dir = qw(foo bar baz);
mkdir $_, 777 and chdir $_ for @dir;
print(cwd(), "\n"), chdir '../' for @dir;
↑コレ走らせたら、ActivePerl build 522 on Win98SE
で問題なく動作したけど。
きっとIISのCGIつかったスクリプトで カレントディレクトリが予想外の場所にあったんだよ。
624 :
デフォルトの名無しさん :02/09/17 21:25
鼻毛が出る程くだらない質問かと思いますが… サブルーチンの中で my 宣言された変数は、そのサブルーチンを抜けた時点で消滅しますよね? 「メモリの節約」は、my を使う事によって得られる恩恵の一つと考えて良いのでしょうか?
>>624 > サブルーチンの中で my 宣言された変数は、そのサブルーチンを抜けた時点で消滅しますよね?
とは限らない。
>>625 見事に鼻毛が出たという訳ですね。
ちなみに、どういった場合に消えずに残るのでしょうか?
>>626 >>625 はメモリ上から消えるとは限らないと言っているだけなんじゃないの?
使えるとは思えないんだけど・・・
あ・・・・でもデータがメモリー上に残っていたとしても、変数は消えるか・・・・
「変数の消滅 = メモリの開放」…とは限らないという事でしょうか?
630 :
デフォルトの名無しさん :02/09/17 22:08
じゃぁオレも便乗。 無名{}で一度だけのループを作ってその中でmyとかlocal宣言したら そのブロックを抜けたら使えない=メモリの節約になりますよね?
631 :
デフォルトの名無しさん :02/09/17 22:12
うわぁ、ログが中途半端に取得されてて オレだけ間抜けみたいじゃないか。
closure というのがあるので my に関しては 「消滅」しない場合があるということかな。 perldoc -q closure man perlref とか
>>632 なるほど、そういう物があるのですか…
ちょっと調べてみます、ありがとうございました。
ふらっと寄ってみた。MSNメッセンジャー作ってるのどこー?
>>624 % perl -le 'sub main{ my $a = 1; $b = \$a; } main(); print $$b;'
1
"変数"は消滅するが"値"は消滅しない、とか細かいことはしらん。
>>632 perldoc ややこい...
635 :
デフォルトの名無しさん :02/09/17 23:32
微々たるメモリの節約を気にしなきゃいけないような条件下なら スクリプト言語なんて使わない。
sub a { my $a = 0; b(); print "a=$a\n"; } sub b { my $a; $a = 10; } で結果に a=10 と表示されたんですが、これは正常なんですか?
637 :
デフォルトの名無しさん :02/09/18 00:15
正常に a=0 と表示されたけど
>>627 リファレンスがあれば使えるよ。
単に my のスコープの外に出れば my した変数名で参照できなくなるだけで、
リファレンスカウントが0にならない限りデータそのものは消えないし
リファレンス経由で使うこともできる。
キーボード入力って while(<>){ if($_ =~ /aaa/) } とかやるじゃないですか。 でも、このスクリプトを実行する際に引数を渡すとその引数をファイル名として そのファイルの中身が読み込まれてしまうんです。 たとえば、 %test.pl filename とか実行するとfilenameのファイルが読み込まれてしまう。 キーボード入力とコマンドライン引数の両立の方法ってないのですか?
>>639 >>640 とはちょっと視点を変えて。
undef @ARGV; とかで引数を失くしちゃえば?
引数を他の用途で利用したいならshift使えばいい。
最初に<>を使う前にgetopt等で@ARGVを加工してやればいい。
WebProgのperlスレよりも建設的なム板のperlスレ。
そろそろWebProgに移住しよう!
>>643 CGI 関係を排除しているからだろうな。
646 :
デフォルトの名無しさん :02/09/19 05:48
Perl = CGIは定説 WebProgに引きこもってろよカスども
↑ また出てきたぞ、こいつ
648 :
デフォルトの名無しさん :02/09/19 06:00
WebProgにいけ。 それがプログラム板の総意だ。糞虫ども
> それがプログラム板の総意だ ぷぷぷ そればっかり
650 :
デフォルトの名無しさん :02/09/19 06:03
CGI以外に存在意義のない言語なんかム板から消え失せろ
--------------------------------------------------------------- 終了 --------------------------------------------------------------- 続きはWebProgで
>>650 Perlは、windowsAPIや各種データベースとの連係、自然言語処理
(例えばChasen)などに幅広く利用されている。
一般的には、Perl>Ruby
圧倒的なライブラリ数、世界的な広がり、速度などの点で
Perlが勝る。Rubyはオブジェクト指向プログラミングを
簡単にできるようにしたが、スクリプト言語で作成する
規模のプログラムではそれほど必要不可欠な部分ではない。
Ruby >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Perl お前らがどんなに現実逃避しようがこれは事実。ぷぷぷ
>>652 馬鹿の典型
糞Perlに出来ることは全てRubyでもできますが。しかも遙かにエレガント且つ迅速に。
>>655 できるけどできてないよな
Rubyは所詮Perlの後追いよ
Perlは糞えrぴおえryひおうーい45wyg:w54「83y」w「@・gかにの゛かきけいすんくすかむれりく゜゛えおのなみ゛やちまらいきく゜よにうてむせいひんくうえん゛くえう うかうあかうあせまかわなんきいぼはのひせしとのひらしとみひにいてれすらんかきれあせうまらかせあうすかうあかあうまかうな゛あういなはとしはほとにはたてあのれもねけてるれしけいてもれきりかすまくきんすいにらg
それぞれ、「開発陣の勢い/厨房のわめき声」をS/N比として定義してみよう。 質の良い方はどっちになるだろう。
Rubyです。
Perlデス
ジサクジエンの粘着基地外は置いといて、、
>>624 実用Perlプログラミング(オライリー)という本の第1章
データリファレンスと無名のメモリ領域
のp.13あたりがそのものズバリの説明なので一度読んでみるとよろし。
Perlは糞 お前らも糞
663 :
デフォルトの名無しさん :02/09/19 17:40
Perlで料理のレシピを登録して、料理名や使用材料で検索できるようなものが作りたいです。 テキストの全文検索は自前でやったことあるけど、こーゆーのはSQLとか使ったほうが楽ですよねー? SQLの構文自体は分かります。ただ、Perlが初めてなだけで(汗)普段はC++。
664 :
デフォルトの名無しさん :02/09/19 17:54
>>663 ヤット,マトモナシツモンガキター!!
665 :
デフォルトの名無しさん :02/09/19 17:57
実行環境はRedHat6とかでしょうか。 Webで公開するためのCGIサーバは後で用意するつもりなので。 今はWinのActivePerでやります。 オススメの環境とかあれば、便乗させてもらいます。
>>663 なにがアンケート調査CGIじゃ
ヴぉけが
Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby! Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby! Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby! Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby! Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby! Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby! Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!Ruby!
>>666 普段c使ってるならcでやんなよ。
>>663 の処理ならコーディングの手間を減らせるメリットと
慣れない言語を扱うことのデメリットを天秤にかけりゃ
そのほうがて手っ取り早い。
670 :
デフォルトの名無しさん :02/09/19 18:28
>>669 まあそうだがRedHatなら定番MYSQL+PHPというのもある。
彼のスレを読んでる限りじゃデータベース使うならどうせ覚えることは多いし
参考書籍はこっちのほうが多い。
>>669 別に、早く仕上げたいという気持ちは無いです。
半分は勉強目的です。
>>670 MYSQLですか・・・。ちょっと調べてみます。
OSに標準で入ってるか、もしくはどこのプロバイダでも
アクセスを許可しているような感じのものであれば使ってみたいです。
672 :
デフォルトの名無しさん :02/09/19 18:46
>>671 レンタル鯖?
海外なら大抵使えるよ。
自宅に置いてWEBサーバのCGIでアクセスってのもある。
>>671 いずれにせよ、板違いだ。
WebProg板へいきな。
>>672 海外はまったく考えていなかったです。
WEBサーバのCGIでアクセスするのは面白いかもしれませんね。
処理速度が落ちるとは思いますが、今回の規模ならそれでも十分です。
外部のDBと連携するのではなく、Perlプログラム中に組み込むような
形のデータベースエンジンって無いんですかね?
675 :
デフォルトの名無しさん :02/09/19 19:30
半角カタカナが入力されたらエラーがでるような チェックサブルーチンを作りたいのですが、 jcode.plを使わずにShiftJISのままで それを作るにはどうしたらよいですか? お知恵を貸して下さい。
676 :
デフォルトの名無しさん :02/09/19 19:37
文字コード表とか検索してみ。
>>674 WebProg板の初心者質問スレにレス移動したのでよろしく。
二度と戻ってくるな。
>>675 純粋な質問だが本気でお知恵を借りたいと思っているのか?
思っているなら貸さないでもないのだが。
>679 思ってない
681 :
675 ◆iuNtvKQI :02/09/19 21:18
>>679 思ってます?。今もまだ出来なくて調べてました。
0x00A0-0x00DFが半角カタカナのコードらしい、まで調べたのですがそれで
チェックしてみると全角カタカナがチェックの対象になってしまって…
>>680 偽者
>>681 半角カナって1バイトじゃなかったっけ ?
683 :
デフォルトの名無しさん :02/09/19 22:01
ばかばっか
( ´_ゝ`)フーン
自治厨うざい。 Perl は WebProg へ逝けというのなら、 CGI に使える言語なら Ruby でも C/C++ でも WebProg に逝かないといけないね。 神とか漢とか言われてる人は CGI を C で書くでしょ。
>>688 DBIの具体的な使い方の話ならともかく、
cgiサーバがどうしたなんて話は完全に板違い。
690 :
デフォルトの名無しさん :02/09/20 09:58
>>688 PerlにCGI以外の*まともな*使い道ってあるの?嘲笑
ないだろ?ばぁぁか
691 :
デフォルトの名無しさん :02/09/20 10:00
>>690 Perlは結構使えますよ。
こないだ生ゴミ燃やすのに使いますた。
692 :
デフォルトの名無しさん :02/09/20 10:06
>>690 おれは688ではないが、ここはプログラム板だから使い道うんぬんの話だけじゃない。
そういう話こそWebProgやプログラマ板でやればよい。
でも、PerlはCGIの実行に使われるのが多いのも確か。
688は質問者のその辺を理解してやれよ。すぐ板違いというのはちょっとイタイ。
693 :
デフォルトの名無しさん :02/09/20 10:08
>>690 2ちゃんのスレッドをGETしてNNTPにPOSTするというデーモンを動かしてます。
TeX2HTML はどの言語で書かれていますか(プ Ruby で書かれたプログラムがあったら教えてください
気づいているのか知らんが、WebProg板へ行けとかいっているやつは 自治厨でもなんでもなく単なる荒らしだから相手をするな。 しかもジサクジエンしまくりなので注意。
RD >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> perldoc=糞豚
IO::File("-"); とやると標準入力のファイルハンドルが作られますが、 同じように標準出力、標準エラー出力のファイルハンドルはどう作るんでしょうか?
stdout ">-" stderr ">&STDERR" ないし $io_obj->fdopen(fileno(STDERR), "w") など
STDIN, STDOUT, STDERRはそれぞれIO::Handleオブジェクトとして扱えるから require/use IO::Handle;でSTDOUT->print(...)というふうにメソッドを呼んだりできるよ。 # 今更気付いたけど、 "-"や">-"はfdの複製はしないんだね。
PerlはUnix系OSでは根幹部分にも多く使われていて、 それ無しではインストールでも苦労すると思うのだが。
あ、質問がまずかった。ごめんなさい。 やりたいこととしては STDERR を読み込んでそれをもとに処理を行いたいのです。 $io_obj->fdopen(fileno(STDERR), "r") でいいのでしょうか?
なんだ、そういうことか。 それは「標準エラー出力のファイルハンドルを作る」のとは何の関係も無いよ。 読み込みモードでfileno(STDERR)を開いても望みの結果は得られないでしょ。 やってみれば一発で分かると思うけど。 とりあえずそれをするにはIO::Scalarが使える。Perl5.6じゃないと多分失敗するけど。 #!perl use IO::Scalar; my $stderrbuff; tie *STDERR, IO::Scalar => \$stderrbuff; warn "warn 1"; warn "warn 2"; die "die"; END{ print $stderrbuff; } __END__ Version500.5以下だとSTDERRを他のファイルにリダイレクトするしかないかも。
Version500.5 -> Version5.005
706 :
デフォルトの名無しさん :02/09/20 23:01
perlってダサイ
またきみか。
俺がお前らのことをどれだけ憎んでいるかお前らには分かるまい perlユーザは死ねperlユーザは死ねperlユーザは死ねperlユ ーザは死ねperlユーザは死ねperlユーザは死ねperlユーザは死ねp erlユ ーザは死ねperlユーザは死ねperlユーザは死ねperlユーザは死ね perlユーザは死ねperlユーザは死ねperlユーザは死ねperlユーザは 死ねperlユーザは死ねperlユーザは死ねperlユーザは死ねperlユーザ は死ねperlユーザは死ねperlユーザは死ねperlユーザは死ねperlユーザ は死ねperlユーザは死ねperlユーザは死ねperlユーザは死ねperlユーザは 死ねperlユーザは死ねperlユーザは死ねperlユーザは死ねperlユーザは死 ねperlユーザは死ねperlユーザは 死ねperlユーザは死ねperlユーザは死ねperlユーザは 死ねperlユーザは死ねperlユーザは死ねperlユーザは死ねperlユ ーザは死ねperlユーザは死ねperlユーザは死ねperlユーザは死ねpe rlユーザは死ねperlユーザは死ねperlユーザは死ねperlユーザは 死ねperlユーザは死ね
709 :
デフォルトの名無しさん :02/09/21 15:39
Ruby >>>>>>>>>>>>>>>>>>>>>> Perl
webprogに引きこもっているなら許してやる。 プログラム板で糞言語の話をするな!
/<<Ruby使い / _ /◎)、_______∠l / /◎ヽ | 「....;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;| |,,. ` -_´/ .彡⌒ー/| \___;;;;;;;;;;;;;;;;;;;;;;| |;;;;, " i ̄ ̄i /´⌒ヽ_____\ ̄ ̄ ̄ .|;;;;;;, /Ruby ゙、 ,/´ ! ヲ=℃/ ̄ |;;;;;;;;, /_,-..‐..-、_゙、 /_レ‐ー――‐" ̄ ̄) ヾ;;;;;;;;,,,.. /':::::::::::::::::::::`i / __ r'~ ̄ ヾ;;;;;;;;;;;;,,,.トー――――-! / _) ヾ;;;;;;;;;;;;;;,,,,.... | 、 ノ ヾ;;;;;;;;;;;;;;;;;;;;;;;;;,,,,.... ゙、;;;,,..  ̄" );;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......
どうして、、、、こんなことを、、 rubyユーザさん、、かわいそうな人。 あなたは人から愛されたことが無いのでしょう。
PerlもRubyも使うが、どうして言語をこんなに憎めるのか理解不能。
RubyユーザのふりをしてPerlをののしり、Rubyユーザの評判を落とそうと仕向けている 粘着基地外がいます。放置をお願いします。騙されたり煽られたりした人がいたら フォローしてあげてください。
715 :
デフォルトの名無しさん :02/09/22 10:17
perlには言語実装としての美意識が全くありません 書かれたコード!それは世にも醜い姿を晒します 悲劇はperlプログラマはそう思っていない事です あとインタープリタ方式で遅いのによく使っていられることです サーバの資源を無駄に使うperlを使うのをやめましょう せめてJava ServletまたはCが書けるようになってください ちなみに私は 709 ではありません 706です
「インタープリタ方式」(w 「perlプログラマ」(w 「Java ServletまたはC」(w 突っ込みどころ満載だな。 Perl使いこなしてる奴だってこれが 美しいと思って使ってる奴はいないよ。
>>715-716 > Perl使いこなしてる奴だってこれが
> 美しいと思って使ってる奴はいないよ。
そうか ? C 程度には、きれいに書けるよ。確かに、いくらでもぐちゃ
ぐちゃに書けるけど、それって C でも同じだろ ?
718 :
デフォルトの名無しさん :02/09/22 11:06
そんなあなたにDelphiです!! どんなヴァカでも同じようにしか書けません COBOLには負けるけどなー
確かにCだって、ぐちゃぐちゃにかけるんだけど、人によるよね。 仮にCを美しいとしたときに、Perlは言語の仕様自体が美しくないと 俺は思うけどな。 美しくないお陰で使い勝手がいい(ことになっている)というか。
>>715 インタープリタ方式で遅いのに=>rubyはコンパイル言語でしたか。
>>719 使い勝手がいい=>上等。
721 :
デフォルトの名無しさん :02/09/22 11:20
#!/usr/bin/perl study, write, study, do review (each word) if time. close book. sleep? what's that?
>>719 > 確かにCだって、ぐちゃぐちゃにかけるんだけど、人によるよね。
まあね。どんな言語でもぐちゃぐちゃに書く奴はいるのは確か。
> 仮にCを美しいとしたときに、Perlは言語の仕様自体が美しくないと
> 俺は思うけどな。
ほぼ同意。
> 美しくないお陰で使い勝手がいい(ことになっている)というか。
いいか ? まあ、作者はいいと思ってるんだろうからから問題ないけ
どね。
遅いって言われてもなぁ。 グリグリの3DゲームをPerlで作ってるわけじゃないし、、 普通の人はPerlで十分の内容のときにPerlを使い、スピードがほしい時に C++使ったり用途に分けて使い分けてると思うが。
お前ら釣られすぎ。
>>723 俺はcgiもCで書くけどね
最近はApacheで動かすmod_isapi Cで遊んでいるよ
726:名前:デフォルトの名無しさん
>>725 だから?
727 名前:715[] 投稿日:02/09/22
>>726 ネタにマジレスカコイイ(・∀・)イイ!
、、、( ノ ≧∇≦ )ノ ぷはははっ!
CGIをCで書くことは滅多にないなぁ。 もしもポインタ周りのバグがあると大変だし。 PerlとかphpだのCだのは必要に応じて使い分けないと。
728 :
デフォルトの名無しさん :02/09/22 21:11
envp操作して 文字コード周りのめんどうさえみれば ソケットも自在に使えるし 作ったあと美しい perlだと軽自動車みたいな品のないコードが嫌い ポインタとバッファオーバフローのチェックができない Cプログラマが多すぎるからね だからそういう人たちのためのperlなんだろうけどね 727は見込みありそうだけど 726は低脳そうだね
Q.具体的にどの辺が美しくないですか?<perl
>>729 > Q.具体的にどの辺が美しくないですか?<perl
switch 文がない。
同じ動作をする書き方のバリエーションが多すぎる。(書き易いけど、読み難い。)
sort() が $a, $b を使ってしまう。
多次元配列が無い。
構造体が無い。
ファイルハンドの扱いが特殊。(通常の変数じゃなくて、独自の名前空間をもつ。)
最近、Perl 使ってないから、今のバージョンだったら改善されているところはあるかもしれない。また、個人の好みによるところもある。とりあえず、今すぐ思いつくのはこんなところ。
まあ、多次元配列、構造体的な役割のものは増改築の温泉宿的に使えなくはないんだけど、 ほとんど同意。 同じ動作のバリエーションが多いっていうところが、 英語圏の人が「こう書けたら便利かなー(もしくは面白いかなー)」と 思って付け加えたんじゃないのか? って感じのところが美しくないんだな。 とってつけたような。
sort が $a, $b を勝手に使うって仕様はかなりびっくらこいた。
構造体もどきではだめ? 某サイトからパクッたサンプルソース push @persons, { "name" => "tanaka", "age" => 24 }; push @persons, { "name" => "suzuki", "age" => 28 }; foreach $person (@persons) { print "$person->{'name'} $person->{'age'}\n"; }
>>732 だよねー。俺もこの仕様が一番違和感ある。
>>733 > 構造体もどきではだめ?
ダメ。メンバの名前間違えても、コンパイルエラーにならないし、構造体の配列とか、
配列を含む構造体とかになると収拾がつかなくなるから。
>>733 常識だよ。リファレンスで多次元配列が無名ハッシュで構造体が扱える。
>>730 switch文なんてifの羅列で十分。gotoもあるけど。
バリエーションが多いから書きやすい=上等。
ファイルハンドルは別のほうが便利。
736 :
デフォルトの名無しさん :02/09/22 22:26
いいぞ。もっとperlを叩け!
おとなしくSwitch.pm(>5.8)使え
Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞 Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞 Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞 Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞 Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞 Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞 Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞 Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞Perlは糞
ばーぁ>>Perler
程度低すぎるよ。この糞スレ。 おとなしくWebProgに逝ったら?
>>714 の指摘があって以来Rubyをほめなくなったね
>>735 > バリエーションが多いから書きやすい=上等。
と言うわりには、switch が無いのが謎なんだなー。
> switch文なんてifの羅列で十分。
と言うなら、for/foreach どっちかにしろよ。ここら辺の、いいかげんさがちょっと嫌い。
> ファイルハンドルは別のほうが便利。
まあ、これに尽きるね。要は、書きやすい事にかなり比重を置いている。これは、これでいいとは思うけど、その分保守はやりにくい。(= 大規模開発にはダメ言語)
従来 awk なんかで書いていたちょっとしたツールや、GCI から呼び出されるプログラムなんかにはなかなか便利。
Ruby >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
俺の中ではforはiを使って繰り返し、foreachは配列の要素をいじる、 って感じで使い分けるので必要。
万人にとって万能な言語なんかないのはあたりまえだが、やっぱり不満はいろいろ あるもんだな。 Perl は、たしかに書きやすいけど読みにくい。でもそれをわかってて適所に使う 分には良いものだと思う。 あと自分で作るプログラムなら、スタイルを決めて書けばそれなりに保守しやすい ものにもできる。それなりにセンスや経験はいるかもしれないけど。
747 :
デフォルトの名無しさん :02/09/23 01:54
このすれの人って いい人多いね がんばれ
つうか、複数でコーディングする場合って、言語を問わず コーディングスタイルを統一しないか?普通。 一貫したコーディング規約を維持できればかなり読みやすいと思うんだが<Perl
749 :
デフォルトの名無しさん :02/09/23 13:35
めっちゃ低レベルなプログラムの質問していいですか スキルがないもんで、、、、
そなこと書かんで早くやれYo
ああ、もう待ちくたびれた。俺はもう答えん。
俺は待ってるよ。どんとこい
753 :
デフォルトの名無しさん :02/09/23 14:42
matsuda math matsuda hiro saito masa saito hiro inoue maithi これに while(<STDIN>){ /(\$+) (\$+)/; $m = $2; $m =~ tr/a-z/A-Z/; print "$2, $1\n"; } これをやったら 何も出てこないのですよ、
入力をこれ↓に差し替えるといいかも $$$$$$$ $$$$ $$$$$$$ $$$$ $$$$$ $$$$ $$$$$ $$$$ $$$$$ $$$$$$
これでOK? while(<>){ /([^ ]+) (\w+)/; my ($fam, $name) = ($1, $2); $fam =~ tr/a-z/A-Z/; print "$name, $fam\n"; }
756 :
デフォルトの名無しさん :02/09/23 14:58
>>756 さん
ありがとうございます
STDINを抜くっていうのは何かしら利点があるのでしょうか
後二行めがよく分らんです、、、
勉強不足ですいません、、、
正規表現については自分で調べてください。 [^abcd]はabcd以外 \wはワードマッチ
どうもありがとうございました。 sage忘れてました、 申し訳ありません
使用可能文字:半角英数 最大文字数:20桁 を全て表示するプログラムを教えてください!! おながいします!!
760 :
デフォルトの名無しさん :02/09/23 19:44
馬鹿まるだしだな セキュ板にでも帰れ もしくは隔離板(php板)へどうぞ
>>759 > 使用可能文字:半角英数
> 最大文字数:20桁
> を全て表示するプログラムを教えてください!!
最大文字数って何のだ ? 表示幅のことか ? だったら...
print "0123456789ABCDEFGHIJ\n";
print "KLMNOPQRXTUVWXYZabcd\n";
print "efghijklmnopqrstuvwxyz\n";
でいいと思うが。
perl -e "print A .. Z, a .. z, 0 .. 9"
RubyユーザのふりをしてPerlをののしり、Rubyユーザの評判を落とそうと仕向けている 粘着基地外がいます。放置をお願いします。騙されたり煽られたりした人がいたら フォローしてあげてください。
みんな HTMLタグをperlに埋めるときどうしてるの? エディタでごりごり書くの? それが知りたいYO
>>764 ゴリゴリは書かん。
1.テキストエディタでブリブリ書く。
2.HTMLエディタでプリプリ書き、
print <<XXXXX のところにペーストする。
>>765 なーる
だるい方法でがんばってるんだね
printのところにペーストするときって
結構コマイ作業で悲しくなったりしない?
変換するツールとか使ってないの?
なんで? print <<'EOF' hogehoge EOF でいいじゃん。
全然関係ないけど << って普通に書き込めるんですね Aboneで下が化けたもので全角にしてしまった。 print <<XXXXXXX
>>768 ん
タグ変換ツールどこにあるの?
HTMLをデザインしたら
ごそっとprint文にはさんでくれるようなつーるって無いの?
リンク先みたかぎりじゃないようだけど
まっとうなエディタ使って頭使えば そんなツールは要らんけどね。
>>770 そのままペーストすればいい、変換する必要ない。
print <<XXXXX
<HTLM>
<HEAD>
うんたらかんたら
</HEAD>
<BODY>
ちんらかんたら
</BODY>
</HTML>
XXXXX;
間違った下記ね print <<XXXXX; <HTLM> <HEAD> うんたらかんたら </HEAD> <BODY> ちんらかんたら </BODY> </HTML> XXXXX ようは、print <<XXXXX; から XXXXX までをそのまま標準出力してくれる。
>>773 そっか
perlだとごそっとこぴぺできるんだ
perlの美点があったじゃない
Cだとprintf("<html>...............</html>");
にはさむから長くなると醜くなるからある程度で細切れにしないと
いけないその点perlのほうがよいね
>>774 これを美点と見るかどうかは人それぞれ。
まぁPerlはsed,awkやらから受け継いでる部分もあるし。
777 :
デフォルトの名無しさん :02/09/24 02:04
>使用可能文字:半角英数 >最大文字数:20桁 >を全て表示するプログラムを教えてください!! >おながいします!! ん?全ての組み合わせって事か? パスワードでもクラックするのか?(藁
ちなみに漏れは分からんがな・・・。 ヘタレなのでsage
>>778 簡単だよ。
print "00000000000000000000\n";
print "00000000000000000001\n";
print "00000000000000000002\n";
:
:
print "zzzzzzzzzzzzzzzzzzzy\n";
print "zzzzzzzzzzzzzzzzzzzz\n";
一桁からって事じゃないのか? print "0\n"; print "1\n"; print "2\n"; : : print "a\n"; print "b\n"; : : print "zzzzzzzzzzzzzzzzzzzy\n"; print "zzzzzzzzzzzzzzzzzzzz\n"; まぁ、どちらにしても漏れには分からん。っていうか質問が意味不明だYO!!
ていうかfor文をいっぱい使うだけだろ。。
783 :
デフォルトの名無しさん :02/09/24 09:42
>>774 リテラルに設定しておけばいい。
printfでだらだら書くなど愚の骨頂。
Perl2exeで変換の仕方どうスルんですか?
785 :
デフォルトの名無しさん :02/09/24 11:11
#!/usr/bin/perl #main() { .... .... } と、c言語風に書く俺は邪道ですか? こういうインデントがついてないと読みづらいから。
786 :
デフォルトの名無しさん :02/09/24 11:41
>>782 ここは質問箱だろ。疑問を投げかける前に質問に答えれ!!
>>785 どうせなら
sub main(@)
{
blah blah blah...
}
unshift @ARGV, $0;
main @ARGV;
VisualPerlって VisualStudio.NETいれないと使えないの?
789 :
デフォルトの名無しさん :02/09/24 13:05
>>787 それいいですね、今度から使わせてもらいます。
790 :
デフォルトの名無しさん :02/09/24 13:40
perlではハッシュの値としてリストを突っ込む事はできないんですか?
程度の低い糞スレ
それを見てるお主も糞尿
フンニョーッ!!! キャハ★
>>790 $hoge{abc} = [0, 1, 2, 3];
みたいな。
んで、
@list = @{$hoge{abc}};
みたいな。
八種のリファレンスだよね。
リファレンスになってるのは配列で、 ハッシュの値が配列のリファレンス。
Java ServletもServlet engineをちゃんと選ばないと遅いよ。 FFのサイトはTomcatつかってたけどありゃアホだね。
Perlにswitchが無いのはLarryの趣味というかポリシーを反映した結果だよ。 if .. then .. else ..とかは英語的に読むことができるが、 switchは唐突に分野の違う言葉だからキモイ みたいなことをカンファレンスで言ってた
>>793 さん
ありがとうございます。昨日からPerlを使いはじめたばかりで
あたふたしていました。リファレンス使えばよいんですね。
>>797 Perl はぼくの好きな言語だけどたまに開発者の趣味が露骨に現れるから嫌い
C に似せてあるくせに break; が last; になっていたり、
continue や next のあたりの名前の付け方が違う。
一ヶ月に一度は last を break と書いて半日潰す。
禿同。 便利なんだか不便なんだかね。入り口が入りやすいだけに。 あと、これを書くと荒れるのかもしれないが、 オブジェクト指向の実装が微妙にヘンなのもなあぁ。 どうせとってつけたようになるんだから Objective Cみたいなカッチョエーのにしてほしかったな。
>>797 > if .. then .. else ..とかは英語的に読むことができるが、
> switchは唐突に分野の違う言葉だからキモイ
> みたいなことをカンファレンスで言ってた
それは、そうだが普通の人には perl の構文の方が唐突に分野の違う言葉ではないかと...。
802 :
デフォルトの名無しさん :02/09/25 22:10
Perlについて質問です。 $a1 〜 $a10 までの関数があるとします。 これをforループなどで全ての関数に対して同じ処理をしたいと思います。 $a$i ←このようなイメージです。$iを1〜10まで変化させるわけです。 このような場合、どのような記述をすればよいのでしょうか?
>>796 FF のサイトってファイナルファンタジーの公式サイト? そりゃ Tomcat じゃ
無理だろ。っていうかそれは道具の選定を間違ってるだけで道具に罪はない。
805 :
デフォルトの名無しさん :02/09/25 22:43
それは、 ${"a$i"} こんなふうにかいてたとえば for ($i = 1; $i <= 10; $i++) { print ${"a$i"} . "\n"; } こんなふうにできなくはないんだけど 配列変数を使うように全部書き直したほうがいいと思うよ。 応用の利くテクとしては for ($i = 1; $i <= 10; $i++) { eval("print \"\$a$i\\n\";"); } とかも。
807 :
デフォルトの名無しさん :02/09/25 23:18
なぜ配列を使わない?
809 :
デフォルトの名無しさん :02/09/26 00:34
810 :
デフォルトの名無しさん :02/09/26 00:54
811 :
棄教者 ◆KIKYO7cg :02/09/26 08:33
sub func0 { .... }; sub func1 { .... }; ... sub func9 { ... }; に対して、 @funcref = ( \&func0, \&func1, ..., \&func9 ); てすることで、 foreach( @funcref ) { &{$_}( @arguments ); } とすれば、複数の関数に対して一括処理を行うことができます。 なお、 @arguments というのは &func0, &func1, ..., &func9 に食べさせたい引数です。
漏れは C のポインタの概念がわからなくて苦労しましたが、 Perl のリファレンスを使っているうちに逆に C のポインタが理解できるようになりました。 まんせー。
>>806 for $i (0 .. 9) {
$a_ref = "a$i";
print $$a_ref, "\n";
}
でもいいでしゅか?
817 :
デフォルトの名無しさん :02/09/26 12:22
サブルーチンAの引数にサブルーチンBを指定して 使いたいんですがどうにもうまくいかないようで・・・・。 どうやればよでしょうか?アドバイスお願いします。 sub FuncB { #............. } sub FuncA { $Func = $_[0]; #? &{$Func}(); #? } &FuncA(FuncB); #?
>>812 perl のリファレンスは宣言がない分、文法的にすっきりしていると思ふ。
821 :
デフォルトの名無しさん :02/09/27 00:20
Windows98SEでFile::findを使ったプログラムを書こうとしているのですが、 「ソ」「予」「能」などの文字が入ったディレクトリ名だと、そのディレクトリ以下を 検索してくれません。 原因は、Shift-JISの2バイト目にバックスラッシュ文字が入っているためだと思うのですが、 これを回避するためのFile::findに対するパッチなどはありますか? 使っているperlは、ActivePerl5.6.1 BinaryBuild 633です。
822 :
デフォルトの名無しさん :02/09/27 11:44
>>821 パッチはないと思う。
自力で\x5cを追加しておくれ。
ラクダ本新しいの買った?なんで洋書の2倍の厚さと値段で 同じページ数なのyo! (洋書の方が紙が薄い)
PerlerはCurlをやれば もう馬鹿にされない(と思う) がCurlが主流にならなければ馬鹿にされてしまう
827 :
スンスンブラクラできたよー(・∀・) :02/09/27 22:45
@sun = ('スン','スーン','( ゜Д゜)ハッ'); for ($sunn=0; $sunn<1; $sunn--){ $sn = "$sun[0],$sun[1],$sun[0],$sun[2]\n"; print "$sn\n"; }
ブラクラの意味すら知らんのか。
自作自演ですか?
curlは絶対に、はやらない
832 :
スンスンブラクラできたよー(・∀・) :02/09/27 22:56
>>828 いや、実行してみたらそんな気分になったわけで…
止め方がわからないわけで…
>>833 アフォ
でてきたばかりで終わってるはないんじゃないの?
だいたい833は言語仕様の概要程度でもいいから知ってるの?
もちろん漏れは知らないけどね
>>834 ていうか2chのスレでは去年の夏ごろにおまえの紹介した
ホームページそのままの内容がコピペされてるだろうが。
ということは、それから一年以上もまったく更新のされていないページを
おまえはこのスレッドで紹介したことになる。
そんな言語を「死んだ」言語だといって何か問題があるのか?
836 :
デフォルトの名無しさん :02/09/28 13:51
837 :
デフォルトの名無しさん :02/09/28 13:54
@sun = ('スン','スーン','( ゜Д゜)ハッ'); $"=','; while (1) { print "@sun\n"; }
@sun = ('スン','スーン','( ゜Д゜)ハッ'); foreach (@sun){ print "$_"; }
839 :
デフォルトの名無しさん :02/09/28 15:43
@sun = ('スン','スーン','( ゜Д゜)ハッ'); foreach (@sun) { print; }
print foreach ('スン','スーン','( ゜Д゜)ハッ');
841 :
デフォルトの名無しさん :02/09/28 16:03
842 :
デフォルトの名無しさん :02/09/28 16:04
print join ',', @sun;
$sun = 'スン'; @suun = ('スーン','( ゜Д゜)ハッ'); $surn[0] = $sun . $sun . $suun[0]; $surn[1] = $sun . $sun . $suun[0] . $suun[1]; foreach (@surn){ print "$_\n"; }
844 :
837へ。 :02/09/28 19:32
@sun = ('スン','スーン','( ゜Д゜)ハッ'); $"=','; while (1) { print "@sun\n"; } を10回繰り返すにはどうすればいいの?
for文にするなりカウンタ変数つけるなりすりゃいいじゃんか…
for( $i = 0; $i < 10; $i++ ) { @sun = ('スン','スーン','( ゜Д゜)ハッ'); $"=','; while (1) { print "@sun\n"; } }
>>836 日本語フォント対応 2002/9予定
IDE 2002/12予定
日本語マニュアル Curl Programming Bible翻訳版 2002/12予定
だそうだ
お前見込みあるよ
@sun = ('スン','スーン','( ゜Д゜)ハッ'); print "何回スンスンしまっか?>"; $un= <STDIN>; for ($suun=0; $sunn<$un; $count++){ print "$sun[0]$sun[0]$sun[1]$sun[2]\n"; }
>>848 for 文は
for( $suun = 0; $suun < $un; $suun++ ) { # $count++ じゃない
でしょ。
>>849 2日前にやり始めたんで何が違うかわかりま千。
$count と $suun の違い。
852 :
デフォルトの名無しさん :02/09/29 12:05
すいません、アクセスカウンターを作ろうと、入門書をよみながらコードを書いたのですが いざCGIファイルを開いてみると、サーバーエラー、となってしまいます。 何が問題かさっぱりわかりませんコードは↓です #! c:/perl/bin/perl # カウントファイルの読み込み open(IN, "<C:\Apache\htdocs\tendays\count.dat"); $count = <IN>; close(IN); ++$count; # カウントファイルへの書き込み open(OUT, ">C:\Apache\htdocs\tendays\count.dat"); print OUT $count; close(OUT); # ヘッダー・HTML出力 print <<END; Content-type: text/html <!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\"> <html> <head><title>あくせすかうんたぁ</title></head> <body> <p>あなたは・・・・・$count番目の訪問者です。</p> </body> </html> END
すいません、コードのコピペ間違えました #! c:/perl/bin/perl # カウントファイルの読み込み open(IN, "<./count.dat"); $count = <IN>; close(IN); ++$count; # カウントファイルへの書き込み open(OUT, ">./count.dat"); print OUT $count; close(OUT); # ヘッダー・HTML出力 print <<END; Content-type: text/html <!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\"> <html> <head><title>あくせすかうんたぁ</title></head> <body> <p>あなたは・・・・・$count番目の訪問者です。</p> </body> </html> END
>>853 悪いことは言わんから、黙って WebProg 板へ行け。そっちの方がまともな回答が得られるぞ。
次スレはいらないぞ。
続きはWebProgへいけ 二度と戻ってくるな。
857 :
デフォルトの名無しさん :02/09/29 12:33
「超」がつく程の糞言語 = Perl
print "何回スーンしますか?"; print (("スン スーン ( ゜Д゜)ハッ\n") x <STDIN>);
perlはVBよりも糞なんですか?
はい、糞です。 ↓次、どうぞ
861 :
デフォルトの名無しさん :02/09/29 13:22
Ruby愛甲!
perlはHSPよりも糞なんですか?
863 :
デフォルトの名無しさん :02/09/29 13:32
いぇs
はい、糞です。 ↓次、どうぞ
>>853 勘で、、
count.dat のパーミッションに w 入れてる?
パーミッションに(w
867 :
デフォルトの名無しさん :02/09/29 16:43
サーバはunix系じゃないのか アレがapacheだったらログ見ればある程度分かりそう
868 :
デフォルトの名無しさん :02/09/29 16:47
>>862 rubyプログラミングしたことないのに、ruby愛好家なのか
>>852 c:/perl/bin/perl
が変。
おたくのプロバイダーのCGIの説明書を読んで、
Perl のパスがどこにあるかを確認してください。
この件に限っては、荒らしが書いているとおり、 WebProg 板に逝った方が
親切な回答が得られそうです。
>>868 まちがったんなら訂正してくれよ。
とりあえずperlやめる。買った本も理解したんで。HSP以下の言語らしいし。
>>863 >>864 ← 二人もそういっているし。
CGIは始めっからやる気ないし。
はじめたりやめたりするほどご大層な言語じゃなかろう? 使う用事がないならさいしょっから無駄なことしなけりゃいいのに。 人生そんなのの繰り返しなんだろうなこの人。
perlって、管理に使うとウマー。 一般ユーザアプリにはあんまり使えないけど、 それは糞だからというわけではなく、 適材適所名だけ。 HSPも管理にはつかいづらいんじゃない? 使ったことないからわからないけど。
>>869 > この件に限っては、荒らしが書いているとおり、 WebProg 板に逝った方が
> 親切な回答が得られそうです。
俺って、「荒らし」だったんだ...。
で話変わるけどさ Apacheで使える mod_なんたらのperlってあるのか貴様ら IISはActivePerlだっけ? 多少速くうごくやつあるよね って聞く態度じゃないなあ
大きめのログファイルを末尾から一行ずつとりだすのに<>を使う方法ってないですか?
877 :
デフォルトの名無しさん :02/09/30 02:20
878 :
デフォルトの名無しさん :02/09/30 07:36
@lines = `tail hoge` 一行づつ読んでくるのは大変かも 単純に一回全部読み込んで、逆順で取り出すなら楽だろうけど
"大きめの"ってのがどれくらいかにもよるわな。
>>876 そんなニーズはほとんどないから無理。
素直に後ろからシークしていけ。
881 :
デフォルトの名無しさん :02/09/30 13:24
質問です。 携帯でも書き込み可能な掲示板で、PCとかiMなどの端末表示をしたいと思っています。 #$modeを文字に変換 if($mode == 1){$tanmatsu = "iM"}; if($mode == 2){$tanmatsu = "JS"}; if($mode == -1){$tanmatsu = "EZ"}; if($mode == -2){$tanmatsu = "DX"}; if($mode == 0){$tanmatsu = "PC"}; # タイムスタンプ生成 ($sec,$min,$hour,$mday,$mon) = gmtime($gtime+$TIMEZONE*3600); $timestamp = sprintf("%02d/%02d %02d:%02d <%s>",++$mon,$mday,$hour,$min,$tanmatsu); $tanmatsuに端末の略称を入れて、$timestampに付加して表示させようとしてるのですが、 <%s>の部分だけごっそりなくなって表示されてしまいます。 どうすればいいのか教えて下さい。
$mode の値がなにかわからんけど、独立したif文にしないで elsifとelseも 使って書かないとデフォルト値を $tanmatsu にセットすることもできんのじゃ?
>>882 んー、その前にこんなのがあるから、こんな風に書いてみたんですけど…。
# ---ブラウザ種別をチェック(iモード:1 EZインターネット:-1 PメールDX:-2 J-Sky:2 その他:0 )
$user_agent = $ENV{'HTTP_USER_AGENT'};
if($user_agent =~ /DoCoMo\//) { $mode = 1; }# iモード
if($user_agent =~ /UP\.Browser\//) { $mode = -1; }# EZインターネット
if($user_agent =~ /PDXGW\/\d\.\d/) { $mode = -2; }# PメールDX
if($ENV{'HTTP_X_JPHONE_MSNAME'} ne '') { $mode = 2; }# J-SkyWeb (Ver3.10)
# PDAモード(ザウルス・コミパル・Dialo)
if($user_agent =~ /sharp pda browser/ || $user_agent =~ /Dialo/) { $pda = 1; }
>>881 <hoge>がタグのように見えるから。
どうすればいいのかはHTMLの基礎を学んでください。
>>883 それなら変数$mode を使わずに直接 $tanmatsu にセットしたら?
if($user_agent=~ /DoCoMo/i){ $tanmatsu= 'iM'; }# iモード
elsif($user_agent=~ /UP\.Browser/i){ $tanmatsu= 'EZ'; }# EZインターネット
elsif($user_agent=~ /PDXGW/i){ $tanmatsu= 'DX'; }# PメールDX
elsif($ENV{'HTTP_X_JPHONE_MSNAME'}){ $tanmatsu= 'JS'; }# J-SkyWeb (Ver3.10)
elsif($user_agent=~ /sharp pda browser|Dialo/i){ $tanmatsu= 'PDA'; }
else { $tanmatsu= 'Other'; }
>>884 タグと認識されて消えてるってことですか。
わかりました、学んでみます。
ありがとうございました。
>>885 配布してるCGIに手を加えてるんですけど、他にも$modeってたくさん使ってるので…。w
その部分に$modeと$tanmatsuを2つ書けば済む話なんですけど、
あとで修正箇所が分かりやすいように、別に書きました。
888 :
デフォルトの名無しさん :02/09/30 14:21
>>888 あんたにとってはだろ
サイズ(データ全体)の分からないものの末尾から処理出来るわけ無いじゃん
>>889 perl -e 'print reverse <>'
試しに
>>881 の
$timestamp = sprintf("%02d/%02d %02d:%02d <%s>",++$mon,$mday,$hour,$min,$tanmatsu);
これを、
$timestamp = sprintf("%02d/%02d %02d:%02d %s",++$mon,$mday,$hour,$min,$tanmatsu);
に直してやってみたんですけど、まだ表示されません。
>>884 さんの理由であってるんしょうか?
sprintf("%02d/%02d %02d:%02d $tanmatsu",++$mon,$mday,$hour,$min); でホントに $tanmatsu に値が入ってるか確認。
>>893 ありがとうございます。
それでも出ないですね。^^;
もしかしたら、$timestamp変数を代入する所ではなく、実際表示する部分(?)で何か細工があるのかな?と思ってみたり…。
>>895 おまえ意図的にレスを飛ばしてないか?
if文ですべて式が真じゃなくて偽だから値がセットされてないことに気づけ馬鹿。
>>896 =
>>882 (?)
一度は「elseif」を使った文も試してますよ。
でも、配布されてるCGIソース(
>>883 の部分)が正しいから、なくてもできると思ったのですが…。
elsifよりも最後のelse。または$tanmatsuを初期化しとけってこと。
>>898 初期化しても、何も出ないっす。
やっぱり、おそらく表示する所で何かあるのか…。
「CGI は Web プログラミング板へ。」って 書いてあるのにしつこくしつこくCGIの話をここでしようとするってのは どういうつもりなのかね。
>>889 なんでニーズと技術的な話を混同させて話してるの?
903 :
デフォルトの名無しさん :02/09/30 19:07
889さんは房なんだから、いじめちゃかわいそうだよ。。。
904 :
デフォルトの名無しさん :02/09/30 19:20
ちなみに、while <>の逆順処理はforeach revese <>で可能。ただし、少し重い。
教えてください。 -fとか-dでファイルが実在するかどうかをチェックするさいに、その大文字、小文字を 区別しないようにしたいのですが、なにかよい方法はありませんでしょうか。 どのような関数を書けばいいのでしょうか?すみませんが教えてください。
大文字・小文字を区別しないシステムならそれでチェックできると思うが
907 :
デフォルトの名無しさん :02/09/30 20:10
908 :
デフォルトの名無しさん :02/09/30 20:11
>>905 それ難しいかもね。
てゆうか、ディレクトリ中にあるファイル名全部出してきて、
そのリストに対して比較するしか無いような気がする。
他にやり方あったら誰か書いてよ
>>908 それが一番スマートだな。
sub is_exists_file_in {
local *DIR;
opendir DIR, shift or return;
my %file = map { lc, $_ } readdir DIR;
closedir DIR;
return map $file{$_}, grep $file{$_}, map lc, @_;
}
ファイル名を一文字ずつバラして正規表現組み立てるってのも
考えついたが、明らかに上に挙げた例の方が分かり易かろう。
910 :
デフォルトの名無しさん :02/09/30 21:43
初めて質問させていただきます。 sendmailで自動的にメールを送ります。 Windowsに送ると読めて,Macに送ると化けてしまうって時, 原因はどういったかんじでしょうか? 縺九i縺ョ縺疲ウィ譁・「コ隱阪Γ繝シ繝ォ こんなかんじ。
912 :
デフォルトの名無しさん :02/09/30 22:06
911=906
914 :
デフォルトの名無しさん :02/09/30 22:53
コードがわからないと原因なんてわからん
>>909 様
どうもありがとうございます。
すみまんせが良く分からないのでさらに質問させてください。
これだと、ファイル名がFoo/hoge/AAA.gifとかいうようにディレクトリ階層が
何個かある場合にもうまくいくのでしょうか???Foo/hoge/AAA.gifというのを
引数で与えた場合にも例えばfoo/Hoge/Aaa.gifというファイルが実在していれば
trueを返すような関数がほしいのです。。。すみませんご教授ください。
916 :
デフォルトの名無しさん :02/10/01 02:17
すごいね。Perlスレなのに1000行きそうだね。
917 :
デフォルトの名無しさん :02/10/01 02:36
Perlのコンパイラって作れませんか? Perl2exeみたいな偽者じゃなくて。
Perlcc
gpc
sub is_exists_file { my @path = split m|/|, shift; pop @path if $path[$#path] eq ''; if ($path[0] eq '') { $path[0] = '/' } elsif ($path[0] !~ /^\.+$/) { unshift @path, '.' } my $path = shift @path; defined(($_) = is_exists_file_in($path, $_)) ? ($path .= '/' . $_) : return for @path; return $path; } ところでこのコードがやってることは当然理解してるよな? -f や -d 一発で済むところを、わざわざ重そうな処理を加えるんだ。 大文字小文字の区別をしないのがそれほど重要なことか、 もう一度考えた方がいいぞ。
921 :
デフォルトの名無しさん :02/10/01 22:42
readでファイルからバイナリデータを読み込ませたいのですが 0x19,0x1D,0x1Eが正常に認識されないみたいなのです。 printで表示した場合、 0x19 … 表示されず 0x1D,0x1E … 違う値が表示される となります。 何故なんでしょうか?
違う値ってどういうのが?
923 :
デフォルトの名無しさん :02/10/01 23:13
コードをかけ
924 :
デフォルトの名無しさん :02/10/01 23:17
>>922 read(FILE,$data,2);
$num =unpack("n",$data);
print $num;
これを実行した時に
0x1A … 表示されず
0x001D … 173
0X001E … 174
と表示されてしまいます。
訂正:
>>921 で、"0x19 … 表示されず"と書きましたが0x1Aの間違いでした。
>>924 unpackの使い方がそれでは、、、結局どういうかたちで取得したいの?
文字? 文字コード?
926 :
kalma ◆eRZ2quxw :02/10/01 23:34
>>925 ネットワークバイトのshort型整数をファイルから取得したいのですが…
やり方が間違っているのでしょうか?
二次元配列に対してsplice関数を使用するにはどうすれば?
>>927 例えば、こんなこと?
$ar[0][0]="00";
$ar[0][1]="01";
$ar[1][0]="10";
$ar[1][1]="11";
$ar[2][0]="20";
$ar[2][1]="21";
splice(@ar,1,1);
for $i (0 .. $#ar) {
@tmp=$ar[$i];
for $j (0 .. $#tmp) {
print "$ar[$i][$j]\n";
}
}
>>924 binmode FILE;
じゃないか?
>>927 for(@ar) {
print "@$_\n";
}
でもいいよ。要するに無名配列は配列へのリファレンスってこと
わきまえてりゃどうやってもいい。
>>928 @tmp=$ar[$i]なんてやる必要ない。
for $j (0 .. $#{$ar[$i]}) {
ってしる。
932 :
デフォルトの名無しさん :02/10/02 22:40
>>929 binmodeは設定しています
一体何が悪いんでしょうか・・・
933 :
デフォルトの名無しさん :02/10/02 22:52
0x1Aの問題はMS-DOSのEOFコードが0x1Aだからだと判りました。 これの回避法ってあるんでしょうか?
934 :
デフォルトの名無しさんぺいです :02/10/03 01:05
tr/\x1a//d;
誰か、NamazuでZipファイルの中身を検索するフィルタを書いた人いないの? gzip, bz2用はあるのに、zipのはないんだよねえ。
936 :
デフォルトの名無しさん :02/10/03 03:17
●●●●●●●●「オセロさえ納期内に作れない=OO役立たず 」祭り●●●●●●● /| | |_____ΦΦΦΦΦΦΦΦΦΦΦ||ΦΦΦ | | | ̄ ̄ ̄ /| || | | | / /|TTTTTT TTTTTTTTTT||TTTTT | /\ | /|/|/|^^^^^^ |三三| ^^^^^^^^^^^||^^^^^^^ | / / |// / /| | / / |_|/|/|/|/| | / / |文|/ // / |/ /. _.| ̄|/|/|/ Λ_Λ /|\/ / / |/ / (___) /| / / /ヽ /〔 非OO 〕〕つ | | ̄| | |ヽ/l `/二二ヽ | | |/| |__|/ Λ_Λ / /(_) | |/| |/ ( ´∀`) (_) Λ_Λ | | |/ // / ^ ̄]゚ (` ) | |/ ゚/ ̄ ̄_ヽ ⊂〔〔 非OO 〕
>>933 出力用ファイルハンドル(例だとSTDOUT)もbinmode()してる?
多次元配列の同じ場所を何度も参照するときには、 その値をローカル変数にコピーした方が効率がいい? それともヘタに変数を増やすとメモリを喰って効率が落ちる? # 1 if($array[0][0][0] == 0) { } elsif($array[0][0][0] == 1) { } elsif($array[0][0][0] == 2) { } # 2 my($copy) = $array[0][0][0]; if($copy == 0) { } elsif($copy == 1) { } elsif($copy == 2) { }
本を見ながらPerlを勉強してるのですが、 環境がUNIX?でないせいか(WinでActivePerl+httpdでやってますが) 本の通りに書いても<STDIN>で入力できません(? 上記の環境で<STDIN>を使ったスクリプトを試すにはどうしたらよいでしょうか?
>>939 MS-DOSプロンプトを起動して
C:\>perl -v
って入力してみてください。
なんか出てきましたか?
>>940 This is perlうんちゃら…って出てきますが…?
リファレンスについて質問。 sub test { my(@array) = (1,2,3); $hash{'a'} = \@array; return; } @array[0]は当然null。 $hash{'a'}->[0]は1。 なぜこうなるのかが分かりません。
>>942 変数名は実際の「値」に付いている「名札」に過ぎず、
「値」自身はそれを参照する「名札」が全部消えるまで
メモリに残っているから。
その例だと test の中で (1,2,3) という各「値」に @array という
「名札」を付けている。@array は my で宣言されている「名札」なので
test の中でしか使えないが、$hash{'a'} という「名札」は
グローバルな「名札」なので、test のスコープから抜けた後でも
(1,2,3) という「値」を見る為に使える。
詳しくは「ガベージコレクション (GC)」「クロージャ」
「リファレンス (参照) カウンタ」といった単語で調べて。
>>943 >>942 じゃないけど、明解レスありがと。
漏れも質問に答えてんだけど、質問者からの感謝がないのが
このスレの特徴かな。
>>941 OKです。
UNIXで勉強するPerlの本にはコマンドプロンプト云々と書いてありますが、
MS-DOSがそのコマンドプロンプトになっています。
たとえば
---data.txt----
unko
chinko
manko
-------------
という三行のファイルを用意して
---hoge.pl----
while(<STDIN>) {
print $_;
}
-------------
という Perl スクリプトを用意して
C:\>perl hoge.pl < data.txt
してください。
これで後は厨学生程度の大脳があれば STDIN は理解できるはずです。
厨学生程度の大脳があればコテを使わず WebProg板にでも誘導するんだがな
糞コテは死ね
固定ハンドル=低スキル
荒らさないで!
次スレは立てるなよ。WebProgにでも引きこもっていてくれ。
次スレ立てても良いけど自称「厨房」なんてのの相手はしないで欲しい。 あと、perldoc読めば済むような話を色々解説するのもどうかな。
次スレを立てるのは禁止。 はい決まった。
糞Perlユーザの分際でスレッドなんか立てるなよ糞馬鹿
用事がないなら見なけりゃいいのになんでわざわざ出てきていらんこと書くのかな。 お呼びじゃないってやつですね。
おまえがな。ぷぷぷ 次スレは絶対に立てるなよ。荒らした上で削除依頼出すからな。
>>944 お礼が欲しけりゃ余所に逝け。二度と出て来るな。
これは次スレ絶対立ててくれという依頼ですか? プ
Ruby >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Perl ぷぷぷ 反論したいか?反論したいんだろ?ぷぷぷ大爆笑 お前らには無理。 Perlみたいな糞言語を使う奴らは人間以下
逆に「次スレはいらん!」とか言ってるやつが次スレ立てそうだ(わら ほんで日ごろの鬱憤をはらす、と。
娘はやらん!
日常生活で随分虐げられて過ごしてるんだろうな。 こんなつまらんことで人を見下したくなるっていうのは。 次スレ立たなかったら自分を保てなくなっちゃいそうだ。 誰か立ててあげれ
っっっっっっっっっp
この板って、スレッドを立てた奴のリモートホストが見られるって知ってた? ぷぷぷ ばぁぁあか 死ねよ
WebProgに逝けば? ム板で厨房言語のスレッドを乱立させないで欲しい。
そうじゃなくてくだらない話題はよその板でやってくださいと
書いたPerlのスレを立てておかないと
いつか
>>1 みたいなのがまたでてきちゃって元の木阿弥なのでは?
は?板の注意事項に「Perlのような厨房言語はWebProg板へ」と書いておけば済むことだろ。
ん? じゃあそうしたら? まあ、
>>966 にはそんなごたいそうなことは一生できないでしょうが。
たぶん「今荒らしてるやつが」 「検索しましたが一覧にないようなので立てました」とかいいつつ 次スレを立てると思うよ。
1000鳥合戦ってのはなさそうでつね。
まぁ、しびれを切らした君みたいな厨房が立てるんだろうな。ぷ
971 :
デフォルトの名無しさん :02/10/03 19:36
この板って、スレッドを立てた奴のリモートホストが見られるって知ってた?
また、ruby基地外の荒しが始まったな。 無視して便利なPerlの恩恵に与ろうぜ。
ウメタテタ
イ
タタタ
イ
タテタメウ
ウメエコノミカン
カミノンコウメエ
アナグラムシテミタ
ミタナアグラシテ
982 :
うんこ厨房 :02/10/03 20:46
スレッド一覧になかったのでperlスレたててもいいですか?
ヤメテ
イタチガイデス
ウンコキタナイ
プロバイダにおまえのIPを突き止めてもらった。 これから住所の特定に入る。
プーン
ソロソロスパートダョ
ダョ
ダョダョ
ダョダョダョ
ダョネーダョネー
ナンノウタダケ
マァィィャ
マィマィ
ばーぁ
997 :
デフォルトの名無しさん :02/10/03 21:22
yrdy
998 :
デフォルトの名無しさん :02/10/03 21:22
tesdt
1000 :
デフォルトの名無しさん :02/10/03 21:23
test
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。