【Perl 】初心者コーナーPart5
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
2001/05/01(火) 23:41ID:???尋ねる前に同じ質問がないかこのスレや旧スレ、及び>>2のリンクを一通り見てみよう。
案外答えはもう書かれているかもしれない。
0002名無しさん@お腹いっぱい。
2001/05/01(火) 23:42ID:???Part1 http://tako.2ch.net/test/read.cgi?bbs=perl&key=957208980
Part2 http://tako.2ch.net/test/read.cgi?bbs=perl&key=971817087
Part3 http://tako.2ch.net/test/read.cgi?bbs=perl&key=979894521
Part4 http://tako.2ch.net/test/read.cgi?bbs=perl&key=984430156
【Perl,CGI】参考書籍 http://tako.2ch.net/test/read.cgi?bbs=perl&key=970166109
[総合]
□Perl Com: http://www.perl.com/pub/
□CPAN.com: http://search.cpan.org/
□ActivePerl: http://www.activestate.com/
[お薦め]
・Perl Recipes: http://www.effectiveperl.com/recipes/
・Perlメモ: http://www.din.or.jp/~ohzaki/perl.htm
・Randal's WebTechniques columns: http://www.stonehenge.com/merlyn/WebTechniques/
・Perlの部屋: http://www.cc.rim.or.jp/~midorin/mad-p/perl/index.html
[Module]
・Perl Module Reference: http://www.bekknet.ad.jp/~bero/docj/module/
・PPMPackages: http://www.activestate.com/PPMPackages/
・河馬屋二千年堂's Page: http://member.nifty.ne.jp/hippo2000/index.htm
[Document&Tutorial]
・Perl News: http://www.news.perl.org/
・Perl Monks: http://www.perlmonks.org/
・PerlMonth - Online Perl Magazine - : http://www.perlmonth.com/index.html
・use Perl All The Perl: http://use.perl.org/
・Learn Perl - Perl Education: http://www.devdaily.com/perl/edu/index.shtml
・Perldoc.com: http://www.perldoc.com/
・Using Perl5 in Web: http://docs.rinet.ru/Using_Perl5_in_Web/
・Rex Swain's Home Page: http://www.rexswain.com/
・Robert's Perl Tutorial: http://www.netcat.co.uk/rob/perl/win32perltut.html
・Perl Tuts: http://savage.net.au/Perl-tutorials.html
・Beginning Perl Tutorials: http://www.pageresource.com/cgirec/index2.htm
・jcode.pl の私的な解説書: http://www.mikeneko.ne.jp/~lab/kcode/jcode.html
・Perl for Newbie: http://www.harukaze.net/~mishima/perl/index.html
・Logical Choice Software, Home Page: http://www.logsoft.com/perltips/
・Perlfect Solutions: http://perlfect.com/
・The Perl Archive : http://www.perlarchive.com/
0003名無しさん@お腹いっぱい。
2001/05/03(木) 22:32ID:HAK5ITOE0004名無しさん@いつも空腹
2001/05/05(土) 09:33ID:???本当にPart5はここでいいのかな?
最近はトップページ(インデクス)見てないからわからな〜い(はあと
0005名無しさん@お腹いっぱい。
2001/05/05(土) 16:42ID:xlcP2XLA誤差が出ることがあります。
10.45-9.55の答えが0.899999999999999とかになるのですが、
どなたかこの現象の原因と解決法をご存知ないでしょうか?
0006名無しさん@お腹いっぱい。
2001/05/05(土) 18:15ID:???いい所に気がついた。
長くなるので原因については割愛。
解決法は幾つかあるが、簡単なのは(s)printfだな。
printf '%.2f', 10.45 - 9.55;
$d = sprintf '%.2f', 10.45 - 9.55;
print $d;
0007名無しさん@お腹いっぱい。
2001/05/05(土) 20:27ID:???カコイイ。。。
有能な回答者はコテハン化きぼーん!
00085
2001/05/05(土) 23:02ID:???ありがとうございます。
とりあえずなんとかなりました。
後学の為に原因も知っておきたいのですが
どこかにそれを記載している場所などを
ご存知でしたら教えていただけないでしょうか?
重ねての質問申し訳ありません。
0009名無しさん@お腹いっぱい。
2001/05/06(日) 00:14ID:???たとえばここ。
http://www.sail.t.u-tokyo.ac.jp/~aida/cp97/971219.html
Googleで「浮動小数 計算誤差」とか入れて検索すればわらわら
見つかる。
00106
2001/05/06(日) 00:23ID:???原因を一言でいうと「Perlの内部では数値は文字列として格納されているわけではない」って事だな。
変数に型のある言語(Cなど)を扱っていれば理解しやすいし、教えやすいのだろうが
あいにくPerlオンリーな俺に分かりやすく詳しい説明は無理だ。スマソ。
だが「後学の為に知っておきたい」という意欲があるのならラクダ本でも買ってみたらどうだろうか。
浮動小数点数の精度については少ししか載っていないが、損はしないと思うぞ。
代わりといっちゃなんだが>>5の別の方法
>>6の他に標準モジュールのMath::BigFloatを使うという手がある。
これなら精度は無限だ。
#!/usr/bin/perl
use Math::BigFloat;
$a = Math::BigFloat->new(10.45);
$b = Math::BigFloat->new(9.55);
$c = Math::BigFloat->new('0.123456789');#小数点以下が長い場合は文字列としてnewに渡す
print $a - $b, "\n"; #".9"
print $a + $b + $c. "\n"; #"20.123456789"
__END__
>>7
ヘタレをおだてないでくれ(w;
コテハンはJapuさんや_gunzipさんくらいにならんとな・・・。
00115
2001/05/06(日) 02:03ID:???丁寧な解説ありがとうございます。
ラクダ本に載っているのは知りませんでした。
まだ途中までしか読めていないので。
これから頑張って続きを読んでいきたいと思います。
本当にありがとうございました。
0012名無しさん@お腹いっぱい。
2001/05/08(火) 15:31ID:Ngqkrj.g入力フォームからデータを受け取ってPostgreSQLにデータを渡す際に日本語は
文字化けしてしまいます。
どのようにしたらいいのでしょうか?
0013名無しさん@お腹いっぱい。
2001/05/08(火) 16:22ID:???URIエスケープってオチは無いよな?
0014nanasy
2001/05/08(火) 16:24ID:MgnUxoZoいまは、なんでもかんでも連想配列に放り込んでいる(だって、便利だもん)んだけど、
将来的には、データサイズが大きくなりすぎたら、自動的にSQLのDBとかを叩く、みたいな
仕様を考えてます。
で、質問。
連想配列(にかぎらず、PERLの変数全般)に、サイズのリミットをかけることは
可能ですか?
# 心配しなくても、仮想記憶が解決してくれるよ、ってのはナシ。
0015名無しさん@お腹いっぱい。
2001/05/08(火) 16:28ID:???サイズ=キーの数って意味なら
擬似ハッシュというものがある。
通常のハッシュより遅いけどな。
データサイズが大きくなりすぎて困るってのなら
DB_Fileを使うという手もあるぞ。
0016名無しさん@お腹いっぱい。
2001/05/08(火) 16:33ID:???Perlの変数にサイズを設ける事は、可能。
tie()を調べよ。
001712
2001/05/08(火) 17:07ID:Ngqkrj.g↓
EUCに変換
↓
insert into * values (hoge,hoge2);
↓
(゚д゚)ダメダコリャ
という感じなのですが
0018名無しさん@お腹いっぱい。
2001/05/08(火) 17:40ID:???その文から想像するに
#--
$query = $ENV{QUERY_STRING}
or
read STDIN, $query, $ENV{CONTENT_LENGTH};
$query = Jcode->new($query)->euc;
#--
とでもやってるのか?
そりゃダメだわ(藁
0019名無しさん@お腹いっぱい。
2001/05/08(火) 17:41ID:???フォーム(Shift_JIS)
↓
EUC-JPに変換
↓
DBに入れる
↓
表示(Shift_JIS)
とかDBから表示の際に文字コード変換してないとか言うオチじゃない?
もしくは半角カナ入れてるとか。
0021名無しさん@お腹いっぱい。
2001/05/13(日) 12:01ID:/ewKYqPQyomikomi.txtというテキストファイルにデータが
一行に一つずつ入っています。何個データが入ってるか判りません。
それを配列に入れて、とりあえずランダムで要素を一つだけ選びました。(kazu1)
もう一つ配列の中からランダムで選びたいです。
ただし、先に選んだkazu1以外の要素にしたいです。(kazu2)
↓のようにやってみたのですが上手くいきません。
#yomikomi.txtを@nyuuryokuという配列にする
open (KENSAKU,"<yomikomi.txt");
$count = 0;
while ($nyuuryoku[$count] = <KENSAKU>){
chop $nyuuryoku[$count];
$count = $count + 1;
}
close (KENSAKU);
#とりあえず、ランダムで要素を一つ選ぶ
srand();
$kazu1 = int (rand($count));
#もうひとつ、ランダムで要素を選ぶ
srand();
rand;
$kazu2 = int (rand($count));
#選んだ要素(kazu1 と kazu2)が同じならkazu2を選びなおす
while (kazu1 == $kazu2){
rand;
$kazu2 = int (rand($count));
}
#表示して確認。※ここで$kazu1とkazu2がそれぞれ違っていれば
#良いのですが同じになってしまいます。
print "$count ←要素数\n";
print "$kazu1 ←kazu1\n";
print "$kazu2 ←kazu2\n";
exit;
002222世紀を目指す名無しさん
2001/05/13(日) 13:23ID:tI0gSNbQ「プライベートチャット」なるjavaでできた他人には見れない会話システムがあるのですが、
これらを全て丸見えに出来る方法があると聞きました。
これは本当ですか?あったら教えてください。
日曜の昼下がりですがお願いします。…ひょとして板違い?
0023名無しさん@お腹いっぱい。
2001/05/13(日) 14:53ID:???ちょっと無駄が多いな。
open (KENSAKU,"<yomikomi.txt");
$count = @nyuuryoku = <KENSAKU>;
close (KENSAKU);
srand();
$kazu1 = int (rand($count));
$kazu2 = int (rand($count));
while ($kazu1 == $kazu2){
$kazu2 = int (rand($count));
}
print "$count ←要素数\n";
print "$kazu1 ←kazu1\n";
print "$kazu2 ←kazu2\n";
exit;
srandは1回にしろ。
『srand』(乱数の初期化)は、()を省略した場合、その時の時間を入れる。
sleepでもかけない限り、srandの結果は大抵同じになるってこと。
あと、所々$が抜けてるからそれも確認してみな。
0024名無しさん@お腹いっぱい。
2001/05/13(日) 15:06ID:???use FileHandle;
srand;
chomp(my @in = FileHandle->new('< yomikomi.txt')->readlines);
my($n1, $n2);
until($n1 eq $n2){
($n1, $n2) = (int(rand(@in)), int(rand(@in)));
}
my $count = @in;
print <<EOD;
$count
$in[$n1]
$in[$n2]
EOD
__END__
ところどころvoidでrandが置いて有るのがよく分からんが
002521
2001/05/13(日) 15:59ID:RORO2Xd.> srandは1回にしろ。
親切に教えていただいてありがとうございます。
> あと、所々$が抜けてるからそれも確認してみな。
すみません。全く気づかなかったです。
-wcでチェックしたんですがエラーにならないんですね。
24さんありがとうございます。
> ところどころvoidでrandが置いて有るのがよく分からんが
何回も呼び出したほうが、よりランダム性が高まるかと思って使いました。
24さんのスクリプトは自分にはかなり難しいですが勉強になります。
0026名無しさん@お腹いっぱい。
2001/05/13(日) 18:44ID:???use strict 'subs';によりそのような間違いを回避することが出来ます。
0027名無しさん@お腹いっぱい。
2001/05/14(月) 12:39ID:ja2f3uZEHP-UXだと公式には入っていないのでソース持ってきてインストール
しなきゃならんですよね。SUNとかIBMとかはどうなんでしょか?
0028名無しさん@お腹いっぱい。
2001/05/15(火) 03:11ID:???思えます。
もう少し綺麗な乱数を作るにはどうしたら良いんでしょうか?
勿論、rand並に手軽に使えるぐらいの大きさで、ですが。
0029名無しさん@お腹いっぱい。
2001/05/15(火) 03:31ID:???逆に聞きたい。
キミの言う綺麗な乱数とは何か?
0030名無しさん@お腹いっぱい。
2001/05/15(火) 03:41ID:U38TPPmg前にプログラム技術板でよさげなやつを見たなあ。えーと、
http://piza.2ch.net/test/read.cgi?bbs=tech&key=978946000
これこれ。レス82にあるメルセンヌツイスターというやつです。
どうでしょ。
メルセンヌツイスターホームページ
http://www.math.keio.ac.jp/~matumoto/mt.html
Cで書かれたコードに直リンク
http://www.math.keio.ac.jp/~matumoto/mt19937int.c
0031名無しさん@お腹いっぱい。
2001/05/15(火) 04:19ID:itC.85zchttp://search.cpan.org/search?mode=module&query=random
Mersenne Twister使った、Math::Random::MT ってのもあるね。
0032名無しさん@お腹いっぱい。
2001/05/15(火) 11:13ID:???function Ike($mojiretu = NULL)
{
//文字列があったら処理せよ.
if ($mojiretu)
{
echo "逝ってよし";
}
else
{
echo "文字列ないよん";
}
}
このコードは、 $mojiretu = "0"; がきたときには else に分岐してしまう.
ちゃんと、 if ($mojiretu != NULL) と、しないとだめなのだ...
実行時に型判別の恐怖.鬱だ.
003332
2001/05/15(火) 11:15ID:???ごめんなさい.
0034名無しさん
2001/05/15(火) 14:52ID:hcMTBPhU0035名無しさん@お腹いっぱい。
2001/05/15(火) 17:03ID:???0036名無しさん@お腹いっぱい。
2001/05/15(火) 18:24ID:c9i14K.YWin CR+LF \r\n
Mac CR \r
かな
0037名無しさん@お腹いっぱい。
2001/05/15(火) 18:33ID:???シッタカはカコワルイね
WinでもUnixでも(多分Macでも)改行は\nだよ
003837
2001/05/15(火) 18:36ID:???(Macは知らん)
とりあえずLFは改行、WinだとCRというゴミが付くと思っていれば良いんじゃないの?>>34
0039名無しさん@お腹いっぱい。
2001/05/15(火) 19:27ID:itC.85zcLF \x0A \012 \cJ
0040名無しさん@お腹いっぱい。
2001/05/15(火) 22:46ID:a8Q7zCBA1;foeeach my $var(@array){ }
2;my $var; foreach $var(@array){ }
この1の使い方、毎回my宣言しているので2と比べ効率が悪い気がするのですが、
JAPUさんなどはよく1の方法で回していますよね?
これは何か理由があるのでしょうか。
0041名無しさん@お腹いっぱい。
2001/05/16(水) 00:15ID:1AgH6focおれも無意識に1の方法を使ってるなあ。なぜかと考えるに、
$varのスコープをブロック内に局所化できるのが
気持ちいいから、ではなかろうか。
004240
2001/05/16(水) 10:15ID:ufM2vq4Q>>41
簡単なベンチマークを取ったところ、数%ですが2の方が高速でした。
気にするほどではないと思いますが、
無意識に1の方法を取るほどいいメリットとも思えません…<$varのforeachブロック内への局所化
他に利点は無いのでしょうか?
0043初心者過ぎる人
2001/05/16(水) 11:19ID:E0ODptoIASPで動くXML::DOMモジュールはどこにあるんでしょうか?
0044JAPU
2001/05/16(水) 13:59ID:???変数は可能な限り局所化する主義なので。
# その2%程度が気になるような人はアセンブラで組めば良い。:-p
0046初心者
2001/05/16(水) 17:03ID:dHgf5I9cB.plへ変数を渡す方法とB.plが終了した事をA.pl内で
判断する方法を教えてください
お願い致します
0047初心者
2001/05/16(水) 17:19ID:dHgf5I9csystem(perl B.pl $A $B $C > $log_file)
open(LOG,"< $log_file")
というコーディングでよいのでしょうか?
0048名無しさん@お腹いっぱい。
2001/05/16(水) 17:52ID:???require 'A.pl';
では不満なのか?
0049初心者
2001/05/16(水) 17:58ID:dHgf5I9cAの中から変数を与えてBを実行し
Bのログをファイルにリダイレクトさせた物を
再びAの中で加工したいのです。
0050名無しさん
2001/05/16(水) 18:02ID:dUC0dSncチャットのリロード機能がついてる仕様は絶対にフレーム型でしょうか。
つまり、chat.cgiで入力フォームと会話表示(ログ表示)部分をlog.htm
などとします。
log.hmにrefreshを使い自動更新しますよね。
しかし、入力部分と会話表示部分がひとつ画面だと
chat.cgiを更新してしまうので入室画面に戻ってしまいます。
結論は、フレーム型のチャットが嫌なので一体型で自動更新したいのですが
何か方法はありますでしょうか?
0051名無しさん
2001/05/16(水) 18:04ID:dUC0dSnc>などとします。
ちょっとここは書き間違いです。
0052名無しさん@お腹いっぱい。
2001/05/16(水) 18:16ID:???理屈の上ではフレームを使わないCGIも作れます。
でも書き込みしてる最中にリロードが起きると、
せっかく途中まで書いた文章が消えちゃうよ?
それって利用者から文句出まくりだと思うんだが。
0053名無しさん@お腹いっぱい。
2001/05/16(水) 18:31ID:???とりあえず>>47でいいのでは。
systemの引数がクォートされてないのだけ気になったけど。
こうね => system("perl B.pl $A $B $C > $log_file");
0054せちがないにぎりめし
2001/05/16(水) 19:14ID:???作製依頼は何処で出したらイイですか?
0055名無しさん@お腹いっぱい。
2001/05/16(水) 19:40ID:???それに最も近いスレッドは↓ここか。
[スクリプト改造工房] http://corn.2ch.net/test/read.cgi?bbs=php&key=988808396
ただし答える人はそう多くない。無視されたらあきらめること。
0056投票などについて
2001/05/17(木) 00:11ID:T3NJy0u2ある板でロゴの投票をしようという事になったのですが、
Win板のロゴ投票では、投票した人間のアクセスログも
わかっていたようです。
こういうのは投票用のCGiにアクセスログの機能もついてる
ものなのか、アクセスログ用のCGIの見る先が投票用のCGI
にしてるのかわかりません。
アクセスログ機能がついてる投票用のフリーCGIとか
あればいいんですが、探す限り最新の投票のホスト名だけ
とかばかりで一覧にバーッとログファイルができるようなのが
ないんですが‥うーん‥
0057名無しさん@お腹いっぱい。
2001/05/17(木) 01:22ID:???なにが言いたいのかわからんぞ。もちっと整理してくれ。頼むよ。
Windows版がロゴ投票に使ったのと同じCGIが欲しいってことか?
しかしそれならWin板に行って話をすればいいだろうし・・・。
#あ、もしかしたら、同じようなCGIが欲しいけど、
#Win板に頭を下げるのがイヤなマッカーな人?
0058初心者
2001/05/17(木) 03:33ID:rW7cRx.kレスありがとうございます。
ログ加工までなんとかできました。
0059初心者
2001/05/17(木) 03:39ID:rW7cRx.k実際にスクリプトを実行せずにコーディングチェックだけを
行えるデバッグモードみたいなことはperlで出来ませんでしょうか?
環境はシステムがwin32でperlはperl5とjperlがあります。
(perl5とjperlの違いもよくわからないのですが・・・)
0060名無しさん@お腹いっぱい。
2001/05/17(木) 04:24ID:KYQIk2Aoん? perl -wc <スクリプト> じゃだめ?
# Tもつけよう。
0061初心者
2001/05/17(木) 08:46ID:rW7cRx.k配列@getに変数で値を追加していきたい時は
while(....){
@get = $hensu
}
で行えますでしょうか?
006256
2001/05/17(木) 08:48ID:.GKme7XcWin板で聞いてきたんですが
誰も答えてくれません(泣)
ロゴ投票まとめてた人の目につかないだけかもしれませんが。
投票した人間のログを記録するようなCGIが
欲しいということです。
一応フリーの投票用の探したんですが
ログファイルとか残すタイプがなかったもので。
0063初心者
2001/05/17(木) 08:52ID:rW7cRx.kwhile(....){
$get[$i] = $hensu;
++$i;
}
と行わなければ、やっぱり駄目でしょうか?
0064名無しさん@お腹いっぱい。
2001/05/17(木) 08:57ID:rZ3d9O0spush @get, $hensu;
Perlの本でも買ってきたら?
0065名無しさん@お腹いっぱい。
2001/05/17(木) 08:58ID:/ddSlCiowhile(...) {
push @get, $hensu;
}
006665
2001/05/17(木) 08:59ID:???0067名無しさん@お腹いっぱい。
2001/05/17(木) 09:47ID:WmKEiYPcを書いているのですが、ActivePerlで fork 使うと速攻で落ちます。
やっぱりWindowsで fork は無理ですか?ちなみにスクリプトの方のバグかと
思ってLinuxでテストしたら普通に動きました。なんかActivePerlは
かわりにスレッドが使えるとかなんとか聞いたような気がするんですが
どうなんでしょう。
0068名無しさん@お腹いっぱい。
2001/05/17(木) 10:21ID:???Perlのバージョンは?
0069名無しさん@お腹いっぱい。
2001/05/17(木) 10:28ID:???ActivePerl-5.6.0.616です
0070名無しさん@お腹いっぱい。
2001/05/17(木) 10:30ID:???#---
sub logsave{
local *LOG;
open LOG, '>>log.dat' or return;
flock LOG, 2;
print LOG <<EOD;
${\time()}<>$ENV{REMOTE_ADDR}<>$ENV{HTTP_USER_AGENT}
EOD
close LOG;
}
#---
007168
2001/05/17(木) 10:47ID:???スマン、俺じゃ分からん。
Perl5.6.0.623でforkのテストをすると成功する事もあるがDLLのエラーで落ちる事もあった。
スレッドはサパーリわからん。"perldoc Thread"とでもしてくれ。
007269
2001/05/17(木) 11:02ID:WmKEiYPcあら、残念。ActivePerlじゃなくても最近のPerlは
スレッド使えるみたいだけど、スレッドに関する資料が
少なくてよくわからないよ。ちなみに perldoc は見た
んだけど、スレッドが使えるって言うのはこのモジュールの
ことを指すの?なんか実験的な機能とか書いてあるけど…
まあとりあえずちゃんと読んでみるよ
あと、とりあえず perl -V 打ったら
usethreads=undef
ってなってたからこのままじゃスレッドは使えない
のかな。もしかしてこれを有効にするにはソースから
なんかオプションつけてコンパイルしなくちゃならないの?
わから〜ん!誰かヒントを!
0073初心者
2001/05/17(木) 12:35ID:rW7cRx.k}
以上のようにコーディングしたら
if文のセンタックスエラーでこけてしまいました。
//で変数は使えないのでしょうか?
0074名無しさん@お腹いっぱい。
2001/05/17(木) 12:46ID:WmKEiYPcパターンマッチの中では[]は特別な意味あり
ちなみに変数は使える。
$tekito = $data2[0];
if ($data[2] =~ /^$tekito/) {}
とかにしたら?
0075名無しさん@お腹いっぱい。
2001/05/17(木) 13:40ID:???0076名無しさん@お腹いっぱい。
2001/05/17(木) 13:42ID:???#!/usr/bin/perl
$data[2] = 'abc()';
$data2[0] = 'ab';
print $data[2] =~ /^$data2[0]/;
__END__
007774
2001/05/17(木) 14:09ID:???ほんとだ、真になってた。適当書いてスマソ
0078名無しさん@お腹いっぱい。
2001/05/17(木) 16:19ID:eJAJlr4Aおおー。ActivePerlの5.6って、
スレッドを使ってforkのエミュレーションするようになったんだ。
perldoc perlfork をざっと見てみました。
まだpipeは使えないんだね。
0079名無しさん@お腹いっぱい。
2001/05/17(木) 19:33ID:KWAHrWxw二次元配列で配列の二次元目(?)の要素数を調べには
どうしたらいいでしょうか?
$hoge[0][$n]の$nが何個か知りたいんです
あんまりPerlでは二次元配列はつかわないんでしょか?
0080名無しさん@お腹いっぱい。
2001/05/17(木) 19:52ID:PKwP8X0M$size = scalar @{$hoge[0]}
Perlの2次元配列は実際には「配列へのリファレンス」の配列。
つまり$hoge[0]等は各々が配列へのリファレンスである。
@{$hoge[0]}としてデリファレンスすると配列の実体になる。
あとは定石通りscalar関数で配列サイズを取得。
0081名無しさん@お腹いっぱい。
2001/05/17(木) 19:59ID:???自分が知らないというだけで「使われていない」と思うのはどうか。
まぁ修得が若干難しいというのは確かだが。
#!/usr/bin/perl
$aryref0 = [qw(0 1 2 3 4 5)];
$aryref1 = [qw(0 1 2)];
$aryref2 = [qw(0 1 2 3 4 5 6 7 8 9)];
@ary = ($aryref0, $aryref1, $aryref2);
print <<EOD;
$#{$ary[0]} + 1 = ${\($#{$ary[0]} + 1)}
$#{$ary[1]} + 1 = ${\($#{$ary[1]} + 1)}
$#{$ary[2]} + 1 = ${\($#{$ary[2]} + 1)}
EOD
__END__
0082名無しさん@お腹いっぱい。
2001/05/17(木) 22:02ID:???サンキュー
{$hoge[0]}って囲む事を知らなかったから問題だったんだな
説明もわかりやすかったし
スクリプトもわかりやすくて助かりました
あまり使われていないのかって書いたのは
Cの参考書には二次元配列について書いてあっても
Perlの参考書には書いてなかったからさ
Perlはいろんな方法がある分二次元配列とかは
そんなに使わないのが普通なのかなって思って
サブルーチンの中でグローバル変数を
あんまりつかわないのと一緒で
大体他の方法で抜けるのが一般的かなと思ったんです
ほんとにありがとう
0083名無しさん@お腹いっぱい。
2001/05/17(木) 22:53ID:???CGIスクリプトを作る際に必須な概念ではないってのが大きいんじゃないかな。
0084名無しさん@お腹いっぱい。
2001/05/17(木) 22:57ID:693Tbg52そんな本はすてちまえぇ!
0085名無しさん
2001/05/17(木) 23:36ID:ENQ64Pv6てなんて読むの。
もどぱーる?
もじゅーるぱーる?
0086名無しさん@お腹いっぱい。
2001/05/18(金) 05:54ID:YOZjqt/sどうなんだろう。
0087名無しさん@お腹いっぱい。
2001/05/18(金) 10:09ID:???0088名無しさん@お腹いっぱい。
2001/05/19(土) 00:46ID:pQYsUf86「もっとPerl!」を、方言にした感じで「もっどぱーる」
0089名無しさん@お腹いっぱい。
2001/05/19(土) 04:44ID:???@data[x]
$data[x]
を一緒に使っちゃってますが、やはり問題ありますよね?
0090名無しさん@お腹いっぱい。
2001/05/19(土) 07:15ID:pQYsUf86配列の要素を指す記述方法になるらしい。
配列のスライスは、別の記述方法が用意されるらしいです。
0091名無しさん@お腹いっぱい。
2001/05/19(土) 10:14ID:???問題あり
0092名無しさん@お腹いっぱい。
2001/05/19(土) 12:36ID:mE7mDJyEおいらはjcode.plで全角にしちゃってますがその他ってなにか方法
ありますか?
0093名無しさん@お腹いっぱい。
2001/05/19(土) 13:29ID:???ISO-2022-JPッツーワケデモナイノニゼンカクニシチマウノハドウカトオモウ
0094名無しさん@お腹いっぱい。
2001/05/19(土) 14:13ID:???0095名無しさん@お腹いっぱい。
2001/05/19(土) 16:25ID:???JAVAのコメントアウトみたいに
/*
ココがコメントにょ
*/
みたいな機能はないのでしょうか?
0096名無しさん@お腹いっぱい。
2001/05/19(土) 17:14ID:wk52aSL.POD形式のコメントにするのが正式だと思う。
参照: perldoc -q "comment out" および perldoc perlpod
ちょこっと部分的にコメントアウトしたいときは
=pod
この部分はパースしないよ
=cut
だけでいいかもな。
0097_gunzip
2001/05/19(土) 20:53ID:???Cみたいに /* */ や // が使いたい場合は、
----------
#!/usr/bin/perl -MFilter::cpp
/*
複数行コメント
*/
print "ok!"; //一行コメント
----------
とする手もあります。
本当は96さんのようにするのがベストだし、自分も普段は
そうしているのだけれど、一応、雑学的知識として....
#事前にCプリプロセッサ(うちでは"gcc -E")に食わせているだけです。
009895
2001/05/19(土) 22:32ID:1jbpiiuM#入門本に載って無くてずっと#を20行とか打ってました・・・
0099名無しさん@お腹いっぱい。
2001/05/19(土) 23:10ID:???いや#を20行というのが間違いというわけではないよ。
PODにしろCプリプロセッサに食わせるにしろ、"完全に無視される存在ではなくなる"からね。
0100名無しさん@お腹いっぱい。
2001/05/20(日) 01:40ID:???このスレのPart1から全部まとめて「Perlの雑学」っていう
サイトを作ったら面白いかもなあ。
0101名無しさん@お腹いっぱい。
2001/05/20(日) 02:44ID:???> このスレのPart1から全部まとめて「Perlの雑学」っていう
> サイトを作ったら面白いかもなあ。
それマジで誰かやってくれないかな。
漏れは取捨選択できるレベルじゃないからダメっぽいけど…。
■ このスレッドは過去ログ倉庫に格納されています