【Perl 】初心者コーナーPart5
レス数が1000を超えています。これ以上書き込みはできません。
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の雑学」っていう
> サイトを作ったら面白いかもなあ。
それマジで誰かやってくれないかな。
漏れは取捨選択できるレベルじゃないからダメっぽいけど…。
0102名無しさん@お腹いっぱい。
2001/05/20(日) 04:11ID:???0103名無しさん@お腹いっぱい。
2001/05/20(日) 04:15ID:???頼むよ。
0104名無しさん@お腹いっぱい。
2001/05/20(日) 04:28ID:???場所を用意してくれるんなら少しは協力するぞ。
0105名無しさん@お腹いっぱい。
2001/05/20(日) 05:44ID:???0106名無しさん@お腹いっぱい。
2001/05/20(日) 05:47ID:???せっかくLINUXいれたので・・・。
0107名無しさん@お腹いっぱい。
2001/05/20(日) 05:50ID:???0108名無しさん@お腹いっぱい。
2001/05/20(日) 07:26ID:???まだそんな事でつっこむのかよ。
サブッ
0110名無しさん@お腹いっぱい。
2001/05/20(日) 08:18ID:???このスレの>>2のリンク集の[お薦め]のとこ。って"の"が多いね。
0111名無しさん
2001/05/20(日) 08:31ID:/uasmmyo0112(・∀・)イイ!!
2001/05/20(日) 10:31ID:3QTA/xf2http://ton.2ch.net/test/read.cgi?bbs=news&key=990241282&ls=100
0113名無しさん@お腹いっぱい。
2001/05/20(日) 11:36ID:???http://xbbs21.virtualave.net/xbbs/up/
ここにページを圧縮してアプしてくれれば、
こっちで見られるようにするよ。
0114初心者
2001/05/20(日) 13:32ID:4X2s.QbMperlでAとBのファイルのレコードマッチングで
同じレコードを抜き出してCというファイルを作るのですが
foreachの入れ子で作るとどうしても抜き出すレコードが
2レコードずつ出力されてしまいます。
どこかによい例がありませんでしょうか?
0115初心者
2001/05/20(日) 13:31ID:4X2s.QbMperlでAとBのファイルのレコードマッチングで
同じレコードを抜き出してCというファイルを作るのですが
foreachの入れ子で作るとどうしても抜き出すレコードが
2レコードずつ出力されてしまいます。
どこかによい例がありませんでしょうか?
0116名無しさん@お腹いっぱい。
2001/05/20(日) 13:39ID:???まずはそのスクリプトを書くなりアプするなりしたらどうだ。
0117初心者
2001/05/20(日) 13:48ID:4X2s.QbM@new = <NEW>;
foreach $new_rec (@new){
#---関数 comp_update
$subname="comp_update";&local_time;
&comp_update;
$val = &comp_update;
if($val){
if($hit_sw eq "0"){
print OUT "$new_rec2---unm\n";
}
print OUT "$new_rec2\n";
}
}
#
sub comp_update{
# 新旧更新情報ファイルの比較
$hit_sw = "0";
$new_rec2 = $new_rec;
@new_data = split(/\s+/,"$new_rec");
@old = <OLD>;
foreach $old_rec (@old){
@old_data = split(/\s+/,"$oup_rec");
if(($new_data[0] eq $old_data[0]) && ($new_data[1] eq $old_data[1]) && ($new_data[2] eq $old_data[2])){
$hit_sw = "1";
if($new_data[3] eq $old_data[3]){
return[0];
}else{
return[1];
}
}
}
if($hit_sw eq "0"){
return[1];
}
}
0118初心者
2001/05/20(日) 13:50ID:4X2s.QbMあと4行目はファイルの突き合わせには意味のない
サブルーチンです。
0119名無しさん@お腹いっぱい。
2001/05/20(日) 14:00ID:???思うに問題は"return[n]"じゃないか?勘だが。
真偽値を返すつもりなら"return(n)"と書いてみな。
0120初心者
2001/05/20(日) 14:11ID:4X2s.QbMnって数字ではないのですか?
アルファベットの“n”ですか?
メインルーチン側はどうやって真偽を判断するのですか?
0121_gunzip
2001/05/20(日) 14:14ID:???>return[0];
return(0);
[]じゃなくて()だよ。(このままだと、0という要素を持った配列へのリファレンスを
返すことになってしまうよ)
>$hit_sw eq "0"
数値を""でくくるのは、なんか変。
$hit_sw = 1; $hit_sw == 0;
>$new_rec2
こういった変数の付け方は、後から見ると(or 他の人が見ると)何を指しているのか
分かりづらいのでやめよう。(しかもグローバル変数で突然現れるし......)
>$old_data[0] eq $new_data[0] とか
どんなフィールドを比較しているのか.....わからん。
>@old = <OLD>;
毎回読むの?最初の一回でファイルの終端まで全部読んでしまうから
二回以降@oldは空じゃない?
#どういったことをやりたいのかを(114より詳しく)正確に書いて欲しい。
0122_gunzip
2001/05/20(日) 14:17ID:???ってことは、
>if($hit_sw eq "0"){
>print OUT "$new_rec2---unm\n";
>}
>print OUT "$new_rec2\n";
>}
の後者のprintが要らない?......というか、よくわからん。
0123ははは
2001/05/20(日) 14:28ID:???0124初心者
2001/05/20(日) 14:38ID:4X2s.QbMやりたいことは 更新情報であるNEWファイルのレコードを
OLDファイルのレコードと比べて、
互いのレコードデータの項目[0]〜[2]まで一致したら
日付(YYYYMMDD・・・)の入っている項目[3]を比べ
差異があればOUTファイルへ出力させます。
但し、NEWファイルにしかないレコードもunmatchとして同じく出力させます。
>>@old = <OLD>;
>毎回読むの?最初の一回でファイルの終端まで全部読んでしまうから
>二回以降@oldは空じゃない?
NEWのレコード1行毎に、OLDファイルは頭から再び
探したいのですけど・・・意味ないのでしょうか?
0125初心者
2001/05/20(日) 14:57ID:4X2s.QbM>return(0);
>[]じゃなくて()だよ。(このままだと、0という要素を持った配列へのリファレンスを
>返すことになってしまうよ)
スミマセンここもう少し詳しく教えてください。
1度シンタックスエラーになり
リファレンスマニュアルを読むと[]と書いてあったので変えたのですが・・・
戻り値に真偽を与えメインルーチン側で真偽を判断する方法がよくわからないのです。
あと 一度、配列にファイルハンドルで全てあたえたら
繰り返し処理でやる意味はないのですか?
open...
@old = <OLD>;
close...
とファイルを開いて全て読みこんでファイルを閉じるのが正しい
使い方なのでしょうか?
0126名無しさん@お腹いっぱい。
2001/05/20(日) 15:12ID:???悪い事は言わないからまともな本買って勉強し直しな。
その方が君のためになる。
0127_gunzip
2001/05/20(日) 15:18ID:???#!/usr/bin/perl -w
use constant NOT_EXISTS => 0;
use constant EXISTS => 1;
use constant LAST_MODIFIED => 3;
@old = map{ [ split ] } <OLD>;
while($rec = <NEW>){
chomp $rec;
$is_exists = NOT_EXISTS;
@new = split(/\s+/,$rec);
foreach $old (@old){
if(($new[0] eq $old->[0]) && ($new[1] eq $old->[1]) && ($new[2] eq $old->[2])){
$is_exists = EXISTS;
if($new[LAST_MODIFIED] ne $old->[LAST_MODIFIED]){
print $rec , "\n";
last;
}
}
}
if($is_exists == NOT_EXISTS){
print $rec , "---unmatched\n";
}
}
やりたいのはこういったこと?
0128_gunzip
2001/05/20(日) 15:19ID:???print OUT $rec , "\n";
だな。それにNEW,OLDも開いてない。
0129名無しさん@お腹いっぱい。
2001/05/20(日) 15:25ID:???流石_gunzipさんです。
0130_gunzip
2001/05/20(日) 16:00ID:???>>125
>1度シンタックスエラーになり
うーん。あり得ないような。
>リファレンスマニュアルを読むと[]と書いてあったので変えたのですが・・・
どんな記述だったのか知りたいなあ。
>戻り値に真偽を与えメインルーチン側で真偽を判断する方法がよくわからないのです。
うう....言ってることが分からない。戻り値として返されたものを評価すればいいだけでは(?)
>あと 一度、配列にファイルハンドルで全てあたえたら
一回目の&comp_update()の呼び出しで
>@old = <OLD>;
@oldには($/未変更時)ファイルハンドルOLDの各行が一行ずつ入る。
ついでにEOFもセットされる。(最後まで読んだので)
二回目の&comp_update()の呼び出しで
>@old = <OLD>;
OLDにはもう残っていないので@oldは空になる。
>>129
ありがとう。何か変なところがあったら指摘してくれると嬉しいです。
0131初心者
2001/05/20(日) 17:39ID:4X2s.QbMそうしたいのは山々なのですが(ここからは言い訳になります)
コンピュータはインターネットとゲームをするていどの
ど素人だったのが
COBOLの研修を2週間程度受けて、いきなり配属され
一人ぼっちでperlと格闘している最中の新入社員なのです。
(でもperlってコンパイルしなくていいのが好き)
周りは年老いたおじサンばかりで若いというだけで引継ぎも
ままならないままサーバ管理をまかされてしまいました・・・・
>>127
あまりにも・・・高等すぎてよくわかりませんが
有り難くコピペさせて勉強させていただきます。
先ほどの突き合わせ処理の問題はなんとか解決できました。
やはり御指摘の通り @old = <OLD>を繰り返し処理の中で
行っていた事が原因でした。
(2行づつ書きこむのは別の原因でしたが)
perlのマニュアルは沢山買いこみましたが
肝心の無い様が私にとってチンプンカンプンで・・・
今の仕事向いてないのかもしれません・・・
ありがとうございました。
追伸:どこかおすすめのPerlのサイトありませんでしょうか?
0132名無しさん@お腹いっぱい。
2001/05/20(日) 17:49ID:MGMWE3cQ上手い方法ないですか?
tr/a/a/g; tr/1/1/g;
みたいにやってもだめでした。
0133名無しさん@お腹いっぱい。
2001/05/20(日) 18:09ID:???関連サイトは>>2を参照
しかし…君を悪く言うつもりは無いが、
酷い会社だなそこは…それともそういうものなのか。
ま、頑張れや
>>132
jcode.pl(またはJcode.pm)のtr()関数を使えばいい
#!/usr/bin/perl
require 'jcode.pl';
$str = 'ZENKAKU123';
jcode::convert(\$str, 'euc');
jcode::tr(\$str, 'A-Z0-9', 'A-Z0-9');
print $str, "\n";
__END__
0134名無しさん@お腹いっぱい。
2001/05/20(日) 18:31ID:P53jKHxsリファレンスとして便利なPerlサイトはいっぱいあるけど、
Perlをいちから学ぶためのサイトは知らないなあ。
Perlの本を沢山買い込んであるなら、やっぱ最初はそれを
読むことから始めるほうがいいんじゃないの。
この↓参考書籍スレッドも参考になるよ。
http://corn.2ch.net/test/read.cgi?bbs=php&key=988809842&to=9
0135初心者
2001/05/20(日) 18:40ID:4X2s.QbM>ついでにEOFもセットされる。(最後まで読んだので)
すみませんもう一つだけ
eofなんですけど、ファイルの一括処理
>@old = <OLD>;
を行った時も下記の様に使えますか?
@old = <OLD>;
foreach $old_rec(@old){
if(eof(OLD)){
#最終行の処理
}
}
マニュアルには eof(ファイルハンドル)を指定すると
書いてあるのですが、この場合もファイルハンドルで
いいのでしょうか?
0136名無しさん@お腹いっぱい。
2001/05/20(日) 18:49ID:???@old = <OLD>;
とした時点で配列"@old"とファイルハンドル"OLD"は何の関係も無くなる。
同じ事をしたいのならwhileで回せ
while(defined($old_rec = <OLD>))
{
&nbsp;&nbsp;if(eof(OLD)){
&nbsp;&nbsp;&nbsp;&nbsp;#最終行の処理
&nbsp&nbsp;;}
}
0137名無しさん@お腹いっぱい。
2001/05/20(日) 18:50ID:???while(defined($old_rec = <OLD>))
{
if(eof(OLD)){
#最終行の処理
}
}
0138132
2001/05/20(日) 21:00ID:Ir3q0zHo無事変換できました。3日悩んでいたのでとても嬉しいです。
ありがとうございました。
0139馬鹿
2001/05/20(日) 22:34ID:???http://www.microsoft.com
http://www.microsoft.com/
とかの入力から、これを
www
microsoft
com
に分解するにはどうすればいいの?
0140_gunzip
2001/05/20(日) 22:45ID:???直接には役に立てなかったけど、上手くいってよかった。
お仕事頑張って。(ちょっと無責任かな.......)
>この場合もファイルハンドルでいいのでしょうか?
はい。ちなみに、
perldoc -f eof
でPerlの関数(この場合はeof)についてのマニュアル(英語)を読むことが出来ますよ。
他のも色々試してみてください。
>>139
これでいいか?
#!/usr/bin/perl
@url = split /\n/ , <<;
www.hogehoge.com
www.hogehoge-u.ac.jp
hogehoge.com
http://hogehoge.com/
http://hogehoge.com
http://www.hogehoge.com/
foreach(@url){
m%([0-9a-z\-]+\.)*?([a-z0-9-]+)\.([a-z]{2,3})(?:\.([a-z]{2}))?([^a-z]|$|/$)%i;
print "$_ :\t \$1 = $1, \$2 = $2, \$3 = $3, \$4 = $4\n";
}
0141名無しさん@お腹いっぱい。
2001/05/20(日) 22:47ID:???$str = "http://www.microsoft.com/";
$str =~s/(http:\/\/)?([^\/]+)(\/)?/$2/;
@array = split /\./, $str;
0143めっちゃ初心者です
2001/05/21(月) 21:53ID:Ra9UJdqo/を,に変換したいのですが美味くいきません
こんな感じです。
$moji = "111/222/333";
$moji =~ tr///,/;
print "$moji";
/という文字がやっぱ不味いんでしょうか?でも/をどうしても,
に変換したいんです。
宜しくおねがいします。
0144名無しさん@お腹いっぱい。
2001/05/21(月) 22:14ID:???0146名無しさん@お腹いっぱい。
2001/05/21(月) 22:24ID:???たった2バイトの回答で感謝されるのも珍しい(笑)
0147名無しさん@お腹いっぱい。
2001/05/21(月) 23:18ID:???気づく時は「あ〜っ」という感じなんだろう(笑)
0148初心者
2001/05/22(火) 17:16ID:v5lFmpjo「スカラー変数の値の左端からn桁を抜き出す」
コマンドってありませんか?
0149初心者
2001/05/22(火) 17:17ID:v5lFmpjo「スカラー変数の値の左端からn桁を抜き出す」
コマンドってありませんか?
0150初心者
2001/05/22(火) 17:18ID:v5lFmpjo「スカラー変数の値の左端からn桁を抜き出す」
コマンドってありませんか?
0151名無しさん@お腹いっぱい。
2001/05/22(火) 17:33ID:???0152初心者
2001/05/22(火) 17:56ID:v5lFmpjo0153名無しさん@お腹いっぱい。
2001/05/22(火) 23:57ID:???また、できるとすればどうやったらできるんでしょう?
やっぱり変換するしかないのかな・・・・。
0154疑問。
2001/05/22(火) 23:59ID:???ってどうやるんでしょうか。
サブルーチンではなく、普通のファイルを、なのですが・・。
0155名無しさん@お腹いっぱい。
2001/05/23(水) 00:04ID:???require "./file.pl";
0156名無しさん@お腹いっぱい。
2001/05/23(水) 00:13ID:???$ perldoc perlxs
0157名無しさん@お腹いっぱい。
2001/05/23(水) 00:31ID:???0158JAPU
2001/05/23(水) 02:38ID:???http://search.cpan.org/search?dist=Inline
少し前の The Perl Journal に載っていたんだったかな。
0159名無しさん@お腹いっぱい。
2001/05/23(水) 11:29ID:Qg5ERlzM0160名無しさん@お腹いっぱい。
2001/05/23(水) 12:06ID:???>>159
使ってみて報告してくれ
0161名無しさん@お腹いっぱい。
2001/05/23(水) 17:39ID:Lqr/QSWw$str = "12345";
$str =~ tr/0-9/0-9/;
print "Content-type: text/html\n\n";
print $str, "\n";
print "</body></html>\n";
とすると出力が
0203040506
となってしまいます、普通に 12345 とは表示できないのでしょうか?
0162名無しさん@お腹いっぱい。
2001/05/23(水) 17:48ID:???>>133
0163antique
2001/05/23(水) 17:54ID:???-----------------------------------
require './jcode.pl';
$str = "12345";
jcode::tr(*str, "0-9","0-9");
print $str;
0164antique
2001/05/23(水) 17:53ID:???-----------------------------------
require './jcode.pl';
$str = "12345";
jcode::tr(*str, "0-9","0-9");
print $str;
0165antique
2001/05/23(水) 17:56ID:???あ、タイムスリップもしてる(w
0166名無しさん@お腹いっぱい。
2001/05/23(水) 18:02ID:Lqr/QSWwありがとうございます
0167名無しさん@お腹いっぱい。
2001/05/23(水) 23:12ID:???ローカル(win98/httpd)で使用することは出来ますか?
つーか使い方もまだ良く分からないんだけど(ぉ
0168名無しさん@お腹いっぱい。
2001/05/23(水) 23:16ID:???モジュールを使ってみようとしましたか?
0170名無しさん@お腹いっぱい。
2001/05/23(水) 23:52ID:???はいってアンタ…(w
使ってみた結果は?
0171名無しさん@お腹いっぱい。
2001/05/24(木) 12:36ID:???0172名無しさん@お腹いっぱい。
2001/05/24(木) 14:35ID:???0173名無しさん@お腹いっぱい。
2001/05/25(金) 00:05ID:wtGhDgwQ0174名無しさん@お腹いっぱい。
2001/05/25(金) 01:07ID:???メッセージを送信した後に記事表示部をリロードするには
どうすればいいのでしょうか? 教えてください。
0175名無しさん@お腹いっぱい。
2001/05/25(金) 01:37ID:???HTMLの勉強をしよう。
<form method=POST action=undex.cgi target=under>
それともオートリロードの仕方かい?
<meta http-equiv="refresh" content="90;url=under.cgi">
必要ならunder.cgi?name=$nameとかにすればよろし。
0176175
2001/05/25(金) 01:38ID:???0178名無しさん@お腹いっぱい。
2001/05/25(金) 07:29ID:tY41esp20179名無しさん@お腹いっぱい。
2001/05/25(金) 10:03ID:???0180名無しさん@お腹いっぱい。
2001/05/25(金) 23:58ID:???やはりtelnet設定してやらナイト無理ですか?
ちなみにサーバはf2sです。
0181名無しさん@お腹いっぱい。
2001/05/26(土) 00:11ID:ykv1O/hI使用されているCGIのソースをこっそりダウンロードする方法ってありますか?
0182名無しさん@お腹いっぱい。
2001/05/26(土) 00:57ID:AODUSOWA無い。あまりそんな質問されると厨房だと思われますよ。
0183名無しさん@お腹いっぱい。
2001/05/26(土) 01:05ID:???IDが微妙にカッコ(・∀・)イイ!
0184弐ch編者
2001/05/26(土) 07:58ID:???こいつはやめそうにないんで
とりあえず泣かそうと思ってる。
0185名無しさん@お腹いっぱい。
2001/05/26(土) 08:12ID:???本気でIDカッコ(・∀・)イイ!
# アドゥソワ?
0186名無しさん@お腹いっぱい。
2001/05/26(土) 19:51ID:ojerd3UA移植に使えるかと思ったんですが・・・。
0187名無しさん@お腹いっぱい。
2001/05/26(土) 19:58ID:GHTZid3cprintf"Hello World\n";
と書いてsample001.plで保存。
Perlでperl sample001としてもなにも起こりません。ソースのパスを
指定してないからなんでしょうが、パスを変更する方法がわかりません。
0188名無しさん@お腹いっぱい。
2001/05/26(土) 20:07ID:???undef@2ch.net$ perl -MO=C foo.pl >foo.c
0189名無しさん@お腹いっぱい。
2001/05/26(土) 20:14ID:???undef@2ch.net$ export PATH=$PATH:/home/hoge/bin
0190名無しさん@お腹いっぱい。
2001/05/26(土) 21:26ID:???0191名無しさん@お腹いっぱい。
2001/05/26(土) 21:32ID:???・printf
・.plを抜かす
・「なにも起こらない」
ってことでネタと断定
0192名無しさん@お腹いっぱい。
2001/05/26(土) 22:02ID:???確かにあまり使わないが、別に誤りでもなかろ。
0193名無しさん@お腹いっぱい。
2001/05/27(日) 00:00ID:???open(FILE,"$filename") or die('...');
ってしてますよね?
sleep(1) until open(FILE,"$filename");
みたいなのは駄目なんでしょうか?
0194名無しさん@お腹いっぱい。
2001/05/27(日) 00:06ID:???ファイルがずっと開けない状態にあったらどうなるのかな?
0195名無しさん@お腹いっぱい。
2001/05/27(日) 00:40ID:???0196名無しさん@お腹いっぱい。
2001/05/27(日) 03:38ID:???>perldoc perlcc
$ perlcc -c file # Creates a C file, 'file.c'
$ perlcc -c out.c file # Creates a C file, 'out.c' from 'file'
$ perlcc -c -e 'print q//' # Creates a C file 'a.out.c'
0197187
2001/05/27(日) 04:03ID:fXHTNImEしてみただけです。ちなみに
perl e:/書類/ユーザー/perl/sample001.pl
ってやったらMS-DOS窓が閉じちゃいました。なにか表示されたのが
一瞬見えましたが。perl5.6.1です。
0198名無しさん@お腹いっぱい。
2001/05/27(日) 05:41ID:???DOSプロンプトで起動してるのか?
system(exit);
でもやらんと閉じない気がするのだが。
0199187
2001/05/27(日) 07:32ID:daAcq/BIえ?PerlのアイコンwクリックでDOS窓が開きませんか?
0200187
2001/05/27(日) 07:37ID:daAcq/BIあれがPerlのインターフェイスですね。
0201187
2001/05/27(日) 07:41ID:daAcq/BIActivePerl-5.6.1.626-MSWin32-x86-multi-thread
これ以外になにかインストールしないといけないんでしょうか。
0202187
2001/05/27(日) 08:29ID:daAcq/BIちゃんと動作しました。これでなんとかなりそうです。
お騒がせしました。
0204名無しさん@お腹いっぱい。
2001/05/27(日) 09:30ID:NfbVrjcI>>199の
> PerlのアイコンwクリックでDOS窓が開きませんか?
にあるとおり、Windowsで普通にActivePerlをインストールすると hoge.pl をダブルクリックで
DOS窓起動→hoge.plが起動→hoge.pl終了→DOS窓終了→一瞬で窓閉じたー
ってなる。
あと、DOS窓内で直接 hoge.pl ってやっても関連付けの関係で起動できたりする。
0205187
2001/05/27(日) 12:04ID:IqGMfkVQ204さんの解説どおりです。204さんありがとう。
0206_gunzip
2001/05/27(日) 19:16ID:???丁寧な説明ありがとう。
確かに一瞬で消えちゃうね。何をしたのかさっぱり分からない......
>>205
いちいちコマンドラインから
perl xxxx.pl
とするのが面倒なら、comファイルを作ってくれる
http://www.vector.co.jp/soft/dos/util/se028129.html
みたいなのもあるよ。
これなら、いちいちperl,sed,awkのどのスクリプトかを意識することなく
xxx | yyy | zzz みたいに書けるよ。
0207名無しさん@お腹いっぱい。
2001/05/27(日) 21:50ID:???おおっ!
凄い便利そうですね。
205じゃないけど早速使ってみま…あれ?
…落として展開したらこんなドキュメントが…
>本ディレクトリに収められているのは、受動喫煙(Passive Smoking、他人の煙
>草の煙を吸わされること)による健康被害の問題に関する資料です。
(゚Д゚)ハァ?
0208名無しさん@お腹いっぱい。
2001/05/27(日) 21:55ID:???やっぱ無理っすかね?
0209名無しさん@お腹いっぱい。
2001/05/27(日) 22:06ID:???0210207
2001/05/27(日) 22:11ID:???↓こっからダウソしたやつはマトモだった。
今から使ってみる。
http://www.asahi-net.or.jp/~bi3t-aoym/sos111.lzh
>>209
つーわけで、_gunzip氏のミスとか偽者という訳ではなさそうです。
0212207
2001/05/27(日) 22:58ID:???上等です。_gunzipさん感謝っ!
.
.
.
…ただ付属のmksos.comがうまくいかないのは俺だけ?(;´Д`)
デフォルトがjperlだし(;´Д`)
しょうがないのでrunperl.com
#perl %0 %@
($program = $0) =~ s{^.*[/\\]|\.[^./\\]*$}{}g;
exec 'perl', $program, @ARGV;
exit $!;
0213_gunzip
2001/05/28(月) 06:04ID:???appeal/ディレクトリね。自分も展開してみて驚いた。(→削除)
自分も煙草は吸わんです。(´ー`)y−~~
>>209-210
ちょっと事情が分からないのだけど・・・もしかしてappeal/ディレクトリしか無かったとか?
それと、1.11に上がっていたとは知らなかった。ありがとう。
>>212
>…ただ付属のmksos.comがうまくいかないのは俺だけ?(;´Д`)
>デフォルトがjperlだし(;´Д`)
うーん。これだけでは、どこが上手くいかなかったのか分からないけれど、
mksos.comを↓のように修正すればperl(≠jperl)でも動くし、
ちゃんとperl(≠jperl)用のcomファイルを吐くようになるよ。(1.11では一行づつずれる)
____________________________________________________
15c15
< #jperl %0 %@
---
> #perl %0 %@
22c22
< join($;, 'p','Perl (jperl)', 1, '.pl', 'Perl', 'jperl %0 %@'),
---
> join($;, 'p','Perl (jperl)', 1, '.pl', 'Perl', 'perl %0 %@'),
160c160
< close(HDR), last if /^#jperl/;
---
> close(HDR), last if /^#perl/;
____________________________________________________
0214207
2001/05/28(月) 09:44ID:???>ちょっと事情が分からないのだけど・・・もしかしてappeal/ディレクトリしか無かったとか?
そゆことです。
展開中にエラーが出て…(;´Д`)
展開ソフト(ラプラス)のバグでしょうかね。
>mksos.com
_gunzipさんうまくいきました?
俺の場合、jperlはともかく、mksosしても
mksosファイルの最後に目的のスクリプトが追加されるだけで、
動作はmksosと同じになってしまいます(;´Д`)
0215名無しさん@お腹いっぱい。
2001/05/28(月) 12:22ID:???Ver1.13ではOKやった(らぷらす)
0216_gunzip
2001/05/28(月) 21:06ID:???>そゆことです。
>展開ソフト(ラプラス)のバグでしょうかね。
そうだったんだ・・・受動喫煙云々しかなかったら、そりゃ驚くね。
自分は五年以上前からLHAユーティリティ(16,32)使ってます。
>mksos.com
あれ?>>213のように修正しても上手くいかなかった?
うちでは上手くいってるのだが・・・
>mksosファイルの最後に目的のスクリプトが追加されるだけで、
から推測するに、14行目だけしか修正していないのでは?
mksos.comは自分自身を開いて、#jperlから始まる行まで(ヘッダ部)を複写しているので、
(素直にsos.hdrを読めばいいのに、と思うが・・・158-161行参照)
14行目の#jperl %0 %@を#perl %0 %@に修正して、取りあえずperlで起動するようにしただけでは、
mksos.comは#jperlで始まる行を見つけられないので、自分自身を最後まで複写し、そしてその後ろに
指定されたファイルを読み込んで追加書き込みを行う、というわけ。
(って我ながら分かりにくい説明だな・・・)
うーん。とにかく>213のを試して欲しいなあ。(既にやっていたのならすまん)
____________________________________
・・・・・sos.hdrの中身・・・・・・
(改行をあけないで)
#perl %0 %@
____________________________________
というファイル(comhdr)でも作っておいて
cat comhdr example.pl >example.com
で連結するだけの方が手軽かも。
0217名無しさん@お腹いっぱい。
2001/05/28(月) 23:57ID:???どういった感じ&どういった資料を使ってで勉強します?
前もって知っているプログラム知識はCの初級者から中級者レベルぐらいだとして。
いや、急にそう言う奴にPerl教えろって言われて・・(鬱
0218名無しさん@お腹いっぱい。
2001/05/29(火) 03:25ID:???まずこのスレの >>2 を見る。
021922世紀を目指す名無しさん
2001/05/29(火) 16:24ID:876XnkeUopen(IN,"count.dat");
@lines=<IN>;
close(IN);
($sec, $min, $hour, $mday, $mon, $year, $wday) = localtime(time);
$count=$lines[$hour];
$count=$count+1;
open(OUT,">count.dat");
flock(OUT,2);
print OUT "$count";
flock(OUT,8);
close(OUT);
時間毎のアクセス数の集計をしたいのだけど、
↑のプログラムじゃ駄目なんですか?
どこが駄目なのかわからんす
0220名無しさん@お腹いっぱい。
2001/05/29(火) 16:57ID:???そりゃダメだろう。
chomp($lines[$hour]);
$lines[$hour] = $lines[$hour]+1 . "\n";
open(OUT,">count.dat");
flock(OUT,2);
print OUT @lines;
flock(OUT,8);
close(OUT);
じゃないのか?
0221名無しさん@お腹いっぱい。
2001/05/29(火) 18:06ID:r6iK.VsQテキストノード中の>とか< 等が
元の文字( > とか < )に戻るのを防ぐ方法(オプション)がありますか?
いちいち変換するのは鬱なので。
# でもモジュールのドキュメントにはそれらしい物もなかった…
0224名無しさん@お腹いっぱい。
2001/05/30(水) 12:10ID:???その技を知っている人いますか?
0225名無しさん@お腹いっぱい。
2001/05/30(水) 13:08ID:???(゚Д゚)ハァ?
中学卒業してからこいや。な?
0226名無しさん@お腹いっぱい。
2001/05/30(水) 13:27ID:4wOldUvA#! /usr/local/bin/perl
open(IN,"count.dat");
@lines=<IN>;
close(IN);
($sec, $min, $hour, $mday, $mon, $year, $wday) = localtime(time);
chomp($lines[$hour]);
$lines[$hour] = $lines[$hour]+1 . "\n";
open(OUT,">count.dat");
flock(OUT,2);
print OUT @lines;
flock(OUT,8);
close(OUT);
でやってみたんだけど駄目です。
時間毎のアクセス数の集計をしたいのだけど、
色々調べてやってみたんだけど、どこが駄目なのかわからんす。
誰か分かる人教えてください
0227名無しさん@お腹いっぱい。
2001/05/30(水) 13:57ID:???はじめに
0
0
0
・・・・って感じに25行続いてるcount.datを用意ておくこと。
それでもだめなら、数回動かしたあとの count.dat を貼り付けてくれ。
0228220
2001/05/30(水) 14:01ID:???1: count.datに24行分の0が用意されていない
2: count.datにパスが通っていない
3: パーミッションがおかしい
4: Perlのパスが通っていない
5: flockが使えない
他にはなんだ?
つーか、何がどうダメなんだよ?
CGIは動くのか?
エラー表示はないのか?
count.datはどうなってる?
君の聞き方に問題はないのかい?
少なくともこっちがローカルで試した分にはきちんと動いてるぞ。
0229名無しさん@お腹いっぱい。
2001/05/30(水) 15:28ID:???パーサオブジェクトをnewするときに、NoExpand => 1 を指定する
方法はどうかと思って試してみたけど、使えないですねー。
つーか、XML::Parserのソースを読んでみたら、
entityを展開するあたりは「TO-DO」事項となってて、
まだコードも流動的みたいです。
0230名無しさん@お腹いっぱい。
2001/05/30(水) 17:46ID:OOYQyBGYつくるときは、リファレンスとハッシュで作りますよね?
その場合で質問したいのですが、データ構造を「固定化」するのは
どうやるのですかね。
つまり、
foo.str1 / foo.str2 みたいなメンバ(Cでいえば、ですけど)しか
許してないのに、foo.srt1 とかタイプミスしてるお馬鹿さんに
エラーを出してほしいわけですよ。
ハッシュでやると、タイプミスでも、新たなキー、バリューのペアとして
認識されちゃうので・・・・。
ちなみに、constant pragma はダメっす。
やってみたけどうまくいかない。涙。
0231名無しさん@お腹いっぱい。
2001/05/30(水) 18:07ID:???方法その一
擬似ハッシュを使う
#!/usr/bin/perl
use 5.005;
use constant NL => "\n";
$hash = [
{
a => 1,
b => 2,
c => 3,
},
"value a",
"value b",
"value c",
];
print $hash->{a}, NL; # $hash->[ $hash->[0]->{a} ] と等価
print $hash->{z}, NL; # 致命的エラー
#新たなフィールドを作成するには
$hash->[0]->{z} = 4; # まずIndexをいじってから
$hash->{z} = "value z"; # 値を入れる
__END__
0232名無しさん@お腹いっぱい。
2001/05/30(水) 18:11ID:???メソッドを介してのみアクセスする
方法その三
Tie::Hashを使って、
未定義のキーにアクセスしようとするとエラーを起こさせるクラスを書く。
(探せば既にCPANにあるかも知れない。)
0233CGI串
2001/05/31(木) 00:38ID:4JRetkV.CGI串を作ってみたんだけど、ウェブメールみたいに、レスポンスヘッダのロケーションで飛ばされる場合、
目的のファイルにアクセスできないのですが、対処方法がありますか?
use Socket;
read(STDIN,$_,$ENV{'CONTENT_LENGTH'});
($par0,$par1)=split(/=/);
$par0="";
$par1=~tr/+/ /;
$par1=~s/%([0-9a-fA-F][0-9a-fA-F])/pack('C',hex($1))/eg;
while($par1)
{
$par1=~/^http:\/\/([^:\/]+)([^\r\n]+)/;
$par1="";
socket(AUXFIL,PF_INET,SOCK_STREAM,getprotobyname('tcp'));
connect(AUXFIL,sockaddr_in(80,inet_aton($1)));
select(AUXFIL);
$|=1;
select(STDOUT);
$|=1;
print AUXFIL "GET $2 HTTP/1.0\r\n\r\n";
while(<AUXFIL>)
{
s/\r*\n$/\r\n/;
if(/^set-cookie[\s:]+/i)
{
$par0.=$_;
next;
}
if(/^location[\s:]+([^\r\n]+)/i)
{
$par1=$1;
next;
}
if(/^content-type[\s:]+/i)
{
$par2=$_;
next;
}
if(/^\r\n$/)
{
$par2.=$_;
last;
}
}
close(AUXFIL) if $par1;
}
0234CGI串
2001/05/31(木) 00:39ID:4JRetkV.{
$par1='TMPFIL';
$par2="temp.$1";
open($par1,">$par2");
}
else
{
$par1='STDOUT';
print $par0.$par2;
}
while(<AUXFIL>)
{
print $par1 $_;
}
close(AUXFIL);
if($par1 eq 'TMPFIL')
{
close($par1);
print $par0."content-type:text/html\r\n\r\n";
print "<html>\r\n";
print "<head>\r\n";
print "<meta http-equiv=\"content-type\" content=\"text/html;charset=x-sjis\">\r\n";
print "<title>image</title>\r\n";
print "</head>\r\n";
print "<body>\r\n";
print "<p><center><img src=\"$par2\">\r\n";
print "</center></p>\r\n";
print "</body>\r\n";
print "</html>\r\n";
}
0235名無しさん@お腹いっぱい。
2001/05/31(木) 01:03ID:???レスポンスのヘッダのロケーションを見て目的のファイルにアクセスすればいいだろ?
0236CGI串
2001/05/31(木) 01:27ID:???書いたソースでも、ロケーションを辿っているのですが、目的のURLがロケーションの中に
出てこないんですよね。どうしてでしょう?
0237221
2001/05/31(木) 02:43ID:???そうなんですよ<NoExpandでできない
しょうがないんで、ファイルをパースする前に&を全部&に変換してます。
0238名無しさん@お腹いっぱい。
2001/05/31(木) 02:44ID:Tcn2CYCIアクセスできなかったURLって、たとえばどこよ。
0239CGI串
2001/05/31(木) 09:09ID:hqu7A44Ahttp://www2.email.com/snap/index.jhtml?dest=welcome
http://www.email.com/login/snap/login.jhtmlは、POSTでフォームを送信しているが、GETで
http://ltd.snap.com/main/redirect/ab/1,295,,00.html?sn=em&mn=(username)&pw=(password)&fr=trueでも
http://www2.email.com/snap/index.jhtml?dest=welcomeへアクセス可能です。
0240CGI串
2001/05/31(木) 09:10ID:hqu7A44Ahttp://www2.email.com/snap/index.jhtml?dest=welcome
http://www.email.com/login/snap/login.jhtmlは、POSTでフォームを送信しているが、GETで
http://ltd.snap.com/main/redirect/ab/1,295,,00.html?sn=em&mn=(username)&pw=(password)&fr=trueでも
http://www2.email.com/snap/index.jhtml?dest=welcomeへアクセス可能です。
0241名無しさん@お腹いっぱい。
2001/05/31(木) 14:40ID:1N8fTgygわかったのですが、オブジェクトから現在のオブジェクトの名前を呼び出すには
どうしたらいいのですか?
0242名無しさん@お腹いっぱい。
2001/05/31(木) 14:51ID:???0243名無しさん@お腹いっぱい。
2001/05/31(木) 15:23ID:???$self= bless $objname;
コレの"$objname"ってのが知りたいとか(ムリ
0244名無しさん@お腹いっぱい。
2001/06/01(金) 16:51ID:SCNbEuy6perlもインストールして勉強してる人いますか?
ブラウザでhttp://127.0.0.1/~***/index.html
で表示できるようになりましたが
http://127.0.0.1/~***/*.plはそのまま文字列のまま
表示されたり、エラーが返ってきます。
↓のはCGIのためのPerl実践入門 技術評論者のp224のです。
#!/usr/local/bin/perl
$|=1;
print <<"HERE";
content-type: text/html
<html>
hello,world!
</html>
HERE
↑の場合は500servererrorになってしまいます。
*.cgi拡張子のサンプルはうまくいくのですが
*.plはトラブルばかりです。Apacheのconfファイルに
何か追加記述が必要なのですかね・・・。
0245名無しさん@お腹いっぱい。
2001/06/01(金) 17:09ID:9xf3QHUMおれも Win2kにいちおうApache入れてます。
.plをCGIとして実行したいなら、httpd.confで
AddHandler cgi-script .cgi
を
AddHandler cgi-script .cgi .pl
とすればいいんじゃなかな?今試したら動きました。
0246名無しさん@お腹いっぱい。
2001/06/01(金) 17:28ID:SCNbEuy6245さん、レスありがとうございます。
書かれたようにhttpd.confに追加記述してみました。
ですが、やはり500のエラーが返ってきてしまいます・・。
なんでなんでしょうね?
私もWin2000でApacheはc\webにapache.exe、
その下にwwwwというフォルダを作り*.cgiも*.plも置いて実行しています。
perlは>>244で書いてあるとおりパスのところへインストールしてあるんです。
もうちょっと格闘してみます。245さん、ありがとうございます!
0247名無しさん@お腹いっぱい。
2001/06/01(金) 17:52ID:???CGIで
「ある時間になったら自動的に0にリセットされる」
プログラムってあるかな?
日にちごとのカウンターと言うのは
「本日のお客様は○○名です」と言うのは、最終更新した日と
現在の日が異なった場合リセットするのはわかってます。
最終更新した時刻に関係なく、夜の0時になったら自動的に
カウンターがリセットされる。そんなプログラムってないですか?
0248名無しさん@お腹いっぱい。
2001/06/01(金) 18:11ID:???CGIとは無関係だが
0249名無しさん@お腹いっぱい。
2001/06/01(金) 18:14ID:???STDINがキーボードの時、
eof(STDIN)をすると入力を促されるんですが、正常ですか??
% perl -e "print eof(STDIN)"
0250名無しさん@お腹いっぱい。
2001/06/02(土) 01:01ID:???247ではないですが、cronの設定が出来ないサーバで擬似的にcronを
実装するにはどうしたら良いでしょうか?
ってそんな方法あるわけないか。
WINのhttpdで勉強してますけど、上級テクニックを覚えるためにはやはり
unix系のOSで勉強しないとイケマセンかねぇ・・・。
0251minima
2001/06/02(土) 07:24ID:???$filename = 'times.dat';
print "いらっしゃいませ\n";
($tmday, $tmon, $tyear )
= ( gmtime( time + 9 * 60 * 60 ) )[3..5];
if( open fp,"$filename" ){
($mday, $mon, $year )
= split ',',<fp>;
close fp;
}
if( ($tyear>$year) or ($tmon>$mon) or ($tmday>$mday) ){
print "今日最初のアクセスです(´ー`)\n";
if( open fp,">$filename" ){
print fp "$tmday,$tmon,$tyear";
close fp;
}
}
基本はコレでいいかと。
0252251
2001/06/02(土) 07:37ID:???補足っす
> 最終更新した日と
> 現在の日が異なった場合リセットする
と
> 夜の0時になったら自動的に
> カウンターがリセットされる
は,見た目には同じことだと思って↑を書きました。
0254名無しさん@お腹いっぱい。
2001/06/07(木) 11:10ID:ym.eiAtoData::Dumperの出力を見ると数値を文字列をちゃんと識別してるようなのですが、
ソースを見ても分かりませんでした。
よろしければご教授願います。
0255名無しさん@お腹いっぱい。
2001/06/07(木) 13:02ID:XmkeoP0Eとりあえず、ref $var; とかやってみれ。
String なのか int なのかを調べたいって言うなら、
print "int" if ($var eq $var+0);
とかかな?
0256名無しさん@お腹いっぱい。
2001/06/07(木) 13:29ID:v985Z4cI(例
$foo=$bar=1;
print <<"EOF";
$foo+$bar
EOF
これだと「1+1」
って表示されますよね?「2」って表示したいんですが、、、
その前で$hoge=$foo+$bar;
として$hogeを表示すればいいのはわかるんですが
あんまり一時変数をつくりたくないもんで、、、
なにか、トリッキーでもいいんで一時変数を作らなくていいやり方などないでしょうか?
0257名無しさん@お腹いっぱい。
2001/06/07(木) 13:56ID:???ヒアドキュメントじゃないとダメなの?
ヒアドキュメントじゃ出来ないと思うけど。
$foo=$bar=1;
print <<"EOF";
なにか
EOF
print $foo+$bar;
print <<"EOF";
なにか
EOF
0258e2j
2001/06/07(木) 14:03ID:???キリ番おめでとう
#!/usr/bin/perl
$foo = $bar = 1;
print <<EOD;
${\
($foo + $bar) # 括弧は必須
}
@{[
$foo + $bar # 括弧は不要
]}
EOD
__END__
0259名無しさん@お腹いっぱい。
2001/06/07(木) 14:16ID:v985Z4cIかっちょいい答えありがとうございます!
リファレンスを使うのかな?とか思ってたんですけど
やはり(?)そういうかんじですかね。
${\($foo + $bar)}
んーでもどうしてそうなるのか若んないや。
()の中は2になるわけだから
スカラー変数のリファレンスに"\2"を渡してるわけですよね。
\ってのはどういう意味があるんだろ、、、
0260名無しさん@お腹いっぱい。
2001/06/07(木) 14:19ID:v985Z4cIあ、確かにそういう風なやり方もできるんですけど
ヒアドキュメントを途切れないように長く続けたいんですよ。
(続いてないとhtmlデザインとプログラムの分離が起こってしまうから)
しかも単純な計算をするところはヒアドキュメントの中でやればわかりやすいですよね。
(ヒアドキュメントの前で計算して変数を作るより)
結構わがままな望みでしたけどね(^^;
0262e2j
2001/06/07(木) 14:29ID:???$foo = 2;
$bar = \$foo;
print ${ $bar };
print ${ \ 2 };
>>258に追加
無茶苦茶ですがこういうことも可能です。
print EOD;
${\do{
use strict;
print "Hello world\n";
my $foo = my $bar = 1;
foreach my $i(0 .. 5){
$foo += $i;
}
$foo + $bar;
}
EOD
0263名無しさん@お腹いっぱい。
2001/06/07(木) 14:34ID:v985Z4cIうひゃ、、、さすがにそこまでやるとなると
ヒアドキュメント切ります、、、
しっかしそんなこともできるんですねー
勉強になりました。
0264254
2001/06/07(木) 14:49ID:???いや、そういうわけではなく、
例えば "1" と 1 の違いを調べることが出来るのか、
という事を知りたいのです。
数値じゃない文字列に0+をすると-wの元で警告が出るのも嫌ですし。
0266名無しさん@お腹いっぱい。
2001/06/07(木) 14:58ID:???Perlでは数値と文字列を区別しない。
これが素人ウケするところ。
だから"1"を数式にも使える。
0267254
2001/06/07(木) 15:15ID:???それは承知ですが、それでも区別したいんですよ。
Data::Dumperでは確かに区別されているので、方法はあると思うのですが。
#!/usr/bin/perl
use Data::Dumper;
my @list = (1, '2', 0+'3', 4 . "");
print Dumper(\@list);
__END__
0268_gunzip
2001/06/07(木) 18:45ID:???Perlは内部で数値と文字列を区別してるよ。ただ、
>数値じゃない文字列に0+をすると-wの元で警告が出るのも嫌ですし
が「数値か文字列か知りたい」理由ならば、use warningsして、numeric警告
をオフにするのが一番。
この辺りはperldoc perlexwarnが詳しい。
#!/usr/bin/perl -w
use warnings;
{
no warnings qw[ numeric ];
$str = "ABC";
print $str * 5;
}
-------
0 (-w,-Wでも警告無し)
------
あと、内部でどのようにデータが格納されているかを知りたければ、
Devel::Peekの出力が助けになるかもしれない。
-----------
#!/usr/bin/perl -w
use Devel::Peek;
$str = "15";
$int = 15;
Dump($str);
Dump($int);
-----------
SV = PV(0x176eb98) at 0x1765768
REFCNT = 1
FLAGS = (POK,pPOK)
PV = 0x176020c "15"\0
CUR = 2
LEN = 3
-----------
SV = IV(0x1763ce8) at 0x1765774
REFCNT = 1
FLAGS = (IOK,pIOK)
IV = 15
-----------
構造体のFLAGSメンバに注目。IOK,POKの意味についてはperldoc perlgutsほか、
http://gisle.aas.no/perl/illguts/
を読むのがいい。
0269_gunzip
2001/06/07(木) 19:01ID:???じゃなくて、(flagsメンバなんて無いし)
SV = PV(0x176eb98)
SV = IV(0x1763ce8)
ここら辺ね。
あと、口調が変に偉そうになったのは申し訳ない。
0270_gunzip
2001/06/07(木) 19:39ID:???>ソースを見ても分かりませんでした。
おそらく、Dumper.pmを読んだのだと思われるけれど、
Data::Dumper::Dumper()は大抵Dumpxsを呼ぶから、
おそらSvTYPE()マクロあたりで数値型か文字列型かを
判別しているのではないかと思うよ。
・・・とにかく、Dumper.xsを読めば分かると思ふ。
試しに、>267のスクリプトを
#!/usr/bin/perl
use Data::Dumper;
my @list = ("w",1, '2', 0+'3', 4 . "");
print Data::Dumper->Dumpperl([\@list]);
としてXSを呼ばないようにして、違いを比べてみては?
それと、昔
http://tako.2ch.net/test/read.cgi?bbs=perl&key=979894521
の828,829辺りで同じ事を書いた記憶が。
0271254
2001/06/07(木) 21:00ID:???Perl内部の事はわかりません(泣)
が、一応求める答えはわかりました。
Data::DumperはXsubを使ってたんですね…
お手数かけました。ありがとうございます。
0272名無しさん@お腹いっぱい。
2001/06/08(金) 00:08ID:???0273名無しさん@お腹いっぱい。
2001/06/08(金) 00:14ID:???そう判断した理由は?
0274272
2001/06/08(金) 00:40ID:???このコードが動きません…。
間違ってはいないですよね…?
#!/usr/bin/perl
use DB_File;
use Fcntl;
use strict;
use warnings;
my @file;
my $db = tie @file , DB_File => 'hoge.dat' , O_RDONLY, 0666, $DB_RECNO
or die "can't open hoge.dat: $!$^E\n";
__END__
0277_gunzip
2001/06/08(金) 00:58ID:???#!/usr/bin/perl
use DB_File;
use Fcntl;
use strict;
use warnings;
my @file;
my $db = tie @file , DB_File => 'hoge.dat' , O_RDWR | O_CREAT, 0666, $DB_RECNO
or die "can't open hoge.dat: $!$^E\n";
ファイルが存在しなかった場合、作成するようにしないと。(O_CREAT)
詳しくはperldoc -f sysopen
0278名無しさん@お腹いっぱい。
2001/06/08(金) 02:15ID:cJiaW2fQ$HOGE{$in{'hoge'}}に値が入っていることは確認できています。
%HOGE = (
'A','a@mail.co',
'B','b@mail.co',
);
open(OUT,"| $sendmail -t");
print OUT "To: $mailto\n";
print OUT "From: $mailfrom\n";
print OUT "Bcc: $HOGE{$in{'hoge'}}\n";
print OUT "\n";
途中で、
$mailbcc = $HOGE{$in{'hoge'}};
として
print OUT "Bcc: $mailbcc\n";
のようにしてもダメです。何がいけないんでしょう?
0279278
2001/06/08(金) 02:17ID:???0280名無しさん@お腹いっぱい。
2001/06/08(金) 04:58ID:???普通はこれで問題なくBcc:に送れるよなー。
OSやsendmailのバージョン書いてみたら?
0281名無しさん@お腹いっぱい。
2001/06/08(金) 05:26ID:???この問題とは多分関係ないけど。
0282278
2001/06/08(金) 10:43ID:0V.Sa7B.FreeBSD 4.2 のバーチャルホスト
Sendmail 8.11.2
です。
0283276
2001/06/08(金) 11:28ID:???いえ、ファイルが存在するのは確認済みですよ、当然。
だから何か別の…って、ありゃりゃ成功した!?
そんな…?
って、O_CREATを外しても成功…?
.
.
.
…これは…どうもRDONLYでオープンすることは出来ないって事らしいです。
ううぅ…かなり悩みましたが、これって仕様なんでしょうか。
0284276
2001/06/08(金) 14:13ID:ikkb28Asindexがあるわけではないのに何故こんなに速いんでしょうか
Benchmark: timing 10000 iterations of DB_File, getline...
DB_File: 3 wallclock secs ( 2.58 usr + 0.00 sys = 2.58 CPU) @ 3875.97/s (n=10000)
getline: 4 wallclock secs ( 3.68 usr + 0.00 sys = 3.68 CPU) @ 2717.39/s (n=10000)
0285276
2001/06/08(金) 14:14ID:ikkb28As#!/usr/bin/perl
use DB_File;
use Fcntl;
use strict;
use warnings;
use Benchmark;
my @file;
my $db = tie @file , DB_File => 'hoge.dat' , O_RDWR, 0666, $DB_RECNO;
open IN, 'hoge.dat';
binmode IN;my($t_length, $s, $i, @index) = (0);sub getline($);
my @list = (1, 100, 1000, 2000, 3000, 5000, 10000);
push @list, reverse @list;
timethese(10000, {
DB_File => sub{
foreach $i(@list){ $s = $file[$i]; }
},
getline => sub{
foreach $i(@list){ $s = getline($i); }
},
});
sub getline($){
my $n = shift;
if(defined($index[$n])){
seek IN, $index[$n], 0;
return scalar(<IN>);
}
local $_;
while(<IN>){
$index[$.] = ($t_length += length($_));
$. == ($n +1) and last;
}
return $_;
}
__END__
0286名無しさん@お腹いっぱい。
2001/06/08(金) 16:00ID:GuCXLnfIどうしたいいんでしょうか?
0287286
2001/06/08(金) 16:01ID:GuCXLnfIよろしくお願いします
0288名無しさん@お腹いっぱい。
2001/06/08(金) 16:42ID:???print "Set-Cookie: $cookie\n";
言うまでも無いが、$cookieには適切な書式のクッキーが入っているものとする
0289名無しさん@お腹いっぱい。
2001/06/08(金) 20:40ID:eaozRcTQあったら教えてください。検索してもリンク切れのところばっかりで。
0290名無しさん@お腹いっぱい。
2001/06/08(金) 20:47ID:???ほらよ
http://plaza28.mbn.or.jp/~curl/
029122世紀を目指す名無しさん
2001/06/08(金) 20:58ID:???ちょっとした事情で必要なのですが・・・・・
よろしくおねがいします。
0292名無しさん@お腹いっぱい。
2001/06/08(金) 21:15ID:???SPAM
0293名無しさん@お腹いっぱい。
2001/06/08(金) 22:30ID:???ボム
0294名無しさん@お腹いっぱい。
2001/06/08(金) 22:33ID:???MLでジサクジエン
0295名無しさん@お腹いっぱい。
2001/06/08(金) 22:45ID:uMb8RtP.あれって、一体どのようにやればいいのでしょうか?
どんな道具が必要なのか、是非教えて下さい。
簡単にいうと、赤ちゃんが生まれいくまでの過程を全世界中に
オンラインムービーを流す技術が欲しいのです。
0296295
2001/06/08(金) 22:47ID:uMb8RtP.0297289
2001/06/09(土) 13:24ID:y1DFOqBYもうないんでしたっけ?
0298名無しさん@お腹いっぱい。
2001/06/09(土) 16:09ID:???0299295
2001/06/09(土) 17:40ID:aiiOiIcwいいですよ。某会社の常務からの依頼ですので、
許可とやらの問題はありません。
0300電動ナナシ
2001/06/09(土) 17:55ID:???http://www.realnetworks.com/products/producerplus/index.html?src=homeintl_jp&mcc=rlhmpg
0301電動ナナシ
2001/06/09(土) 17:54ID:???http://www.realnetworks.com/products/producerplus/index.html?src=homeintl_jp&mcc=rlhmpg
0302電動ナナシ
2001/06/09(土) 17:58ID:???鬱だし脳
0303名無しさん@お腹いっぱい。
2001/06/09(土) 23:53ID:GnWQlRGQFreeBSD 4.2 / apache 1.3.20 にてperlのCGIを実行させたく
試行錯誤しているのですが、巧く行かずに苦労しています。
現在は〜/apache/cgi-bin/printenv の実行は正常に行われる環境です。
実行させたいperlスクリプトは、KENT-WEBさんのYY-BOARDです。
どう、巧く行かないのかと言いますと、perlを見つけられない???のではないかと。
試しにtelnetで該当dirに行きまして、./yybbs.cgiとタイプしますと
>./yybbs.cgi: コマンドが見つかりません.
と怒られてしまいます。
ですが、perl5 ./yybbs.cgiとタイプしますと希望の結果が帰って来ます。
yybbs.cgi1行目のperlへのパス指定は合っているハズなのにどうして
こんな事になるのでしょうか???
何方かアドバイスしていただけますでしょうか。
0304名無しさん@お腹いっぱい。
2001/06/09(土) 23:55ID:Stf2UWrUブラウザで試して御覧なさい。
0305名無しさん@お腹いっぱい。
2001/06/09(土) 23:57ID:GnWQlRGQ説明不足でした。
ブラウザでの表示は403 Forbiddenとなっています。
けど、、、うぅーむ???
馬鹿ですか?ワタシ
0306名無しさん@お腹いっぱい。
2001/06/10(日) 00:01ID:???0307303
2001/06/10(日) 00:04ID:4dlL9Pdo確かに755としています。
ちなみにapacheのUserはnobodyからhttpdというユーザに変更
していますが、弊害ありますでしょうか?
0308306
2001/06/10(日) 00:07ID:???> yybbs.cgi1行目のperlへのパス指定は合っているハズなのに
がまちがってるんでは?
1行目と
which perl5
の結果でも見比べてー。
それ以上はわからん。
0309303
2001/06/10(日) 00:13ID:4dlL9Pdohttpd.conf中の
Options Indexes FollowSymLinks
を
Options Indexes FollowSymLinks ExecCGI
に変更するのを忘れていたようです。大変失敬。
で、状況が変わりました。
ブラウザでは500 Internal Server Errorとなっており、
error.logには、Premature end of script headersが記録されました。
ん〜???
0310306
2001/06/10(日) 00:25ID:???なんか疲れた。
0311名無しさん@お腹いっぱい。
2001/06/10(日) 00:29ID:???0312名無しさん@お腹いっぱい。
2001/06/10(日) 00:31ID:M/Q/m3rwれたいですが、どうしたらいいでしょうか?
0313306
2001/06/10(日) 00:31ID:???> 試しにtelnetで該当dirに行きまして、./yybbs.cgiとタイプしますと
> >./yybbs.cgi: コマンドが見つかりません.
> と怒られてしまいます。
をまず直せ。
CGI以前の問題。
多分、/usr/bin/perl5\r とか言うファイルを探しに行くからエラーになるの。
改行コードの問題じゃなければ、/usr/bni/perl5 とかを探しにいって略。
何も考えずにエラーメッセージをGoogleに突っ込んだら山ほど出てくるんだから、
多少は自分で考えたほうがいいと思うぞ。
0314名無しさん@お腹いっぱい。
2001/06/10(日) 00:33ID:???@dir = readdir DIR;
closedir DIR;
print "$_\n" for (@dir):
0315303
2001/06/10(日) 00:38ID:4dlL9Pdo手を煩わせて申し訳ない。自分でもあれこれ探してはいるのですが…
>コマンドが見つかりません
これを解決しないことには、とは自分も考えています。
改行コードの問題は知りませんでした。
出直してきます。
0317306
2001/06/10(日) 00:47ID:???これで最後ね。
とりあえず、1行目の最後に -- を付けて、
#!/usr/bin/perl5 --
とか(もちろん自分の環境に合った奴)に変えてみ。
改行コードが原因なら ./yybbs.cgi で起動しないのはこれで直るはず。
原因は自分で調べること。
0318303
2001/06/10(日) 01:13ID:4dlL9Pdo大変良く理解出来ました。
やはり改行コードの問題だったようです。
有難う御座いました。
0319名無しさん@お腹いっぱい。
2001/06/10(日) 10:11ID:fkqIyGrs何分、初心者なもので、そういうのがあることを
今初めて知りました。有難うございました。
あと、検索してみると、とても勉強になるサイトがありましたの
はっときます。
http://www.din.or.jp/~ya3/real/
0320名無しさん@お腹いっぱい。
2001/06/11(月) 01:55ID:8pqT6lXA誰か教えてください。お願いします。
0321名無しさん@お腹いっぱい。
2001/06/11(月) 02:38ID:KPOx6cx2まだ申請が受理されてないけど、こんな感じです。
http://teri.2ch.net/test/read.cgi?bbs=accuse&key=991479482
#しかし↑この申請、下がりまくってるねえ。
0322名無しさん@お腹いっぱい。
2001/06/11(月) 10:31ID:TvlqC4OUSAFEってありますよね。
変数のネームスペースにおけるCHROOTみたいなの。
あれの原理って・・・?
Perlには、あれを行うための秘密の機能とかがあるのですか?
モジュールのソースを読んだんですが、原理がわからんです。
0323名無しさん@お腹いっぱい。
2001/06/11(月) 23:07ID:pKfL8KNc有り難うごさいます。
このタイトルは、初めて来る人はわからないと思います。
Web_PG
こう書いてくれると助かる。
0324名無しさん@お腹いっぱい。
2001/06/11(月) 23:48ID:4YVegt0Y4番目の項目が「ok」だったら、
その行の3番目と6番目のセルをタブ区切りで b.csv に保存する。
というのはどうしたらいいでしょう?
0325rubbish_lister
2001/06/12(火) 00:00ID:???use IO::File;
use strict;
my $a = IO::File->new('a.csv');
chomp(my @b = grep{ (split/,/)[3] eq 'ok' } IO::File->new('a.csv')->getlines);
IO::File->new('>b.csv')->print( map{ join("\t", (split/,/)[2, 5]) . "\n" }@b );
__END__
>>324
0326rubbish_lister
2001/06/12(火) 00:01ID:???0327名無しさん@お腹いっぱい。
2001/06/12(火) 00:38ID:???ばっちりでした。感謝感謝!!
0328_gunzip
2001/06/12(火) 08:31ID:???ヒントになるかどうか分からないが。
#Safe.pm(209-222)
return Opcode::_safe_call_sv($root, $obj->{Mask}, $evalsub);
# $root には"Safe::Root1"のような文字列 $obj->{Mask} は制限用ビットマスク
# $evalsub はcoderef
/* Opcode.xs(257-295) */
void
_safe_call_sv(Package, mask, codesv)
char *Package #一時的なパッケージ
SV *mask #opコード制限マスク
SV *codesv #実行するサブルーチン
PPCODE:
[中略]
ENTER; #スコープに入ります
[中略]
# 内部API関数 void Perl_save_hptr(pTHXo_ HV** hptr) を呼び出し、
# 他パッケージへのポインタを格納した最上位スタッシュ defstash への
# ポインタを一時待避させる。(スコープ終了時に自動回復)
save_hptr(&PL_defstash);
# 内部API関数 HV* Perl_gv_stashpv(pTHX_ const char *name, I32 create)
# により、パッケージ名 Package のHV(スタッシュ)へのポインタでdefstash
# (メインスタッシュ)を置き換える。
# パッケージ名 Package が存在していなければ(あり得ない)
# GV_ADDWARN により警告
PL_defstash = gv_stashpv(Package, GV_ADDWARN);
[中略]
# 引数として与えられたcodesv(SV*にキャスト済み)を呼び出す。
perl_call_sv(codesv, GIMME|G_EVAL|G_KEEPERR);
[後は眠いので略]
#間違いが有れば教えて欲しひ。
0329_gunzip
2001/06/12(火) 08:35ID:???0330教えて坊主
2001/06/12(火) 09:05ID:qzJs/a5UHPに画像ファイル(.jpg)があったとして、それを自分のPCに保存する
プログラムを書いています。(ようは右クリックして保存を自動化するもの)
どうも上手くいかないので、わかる方いましたら教えてください。
宜しくお願いします。
0331名無しさん@お腹いっぱい。
2001/06/12(火) 09:35ID:M/ZGscH2ふむふむふむ。
やはり、Perlの秘密(でもないのかな?)の
内部関数を呼び出していたのですね。
このヒントを頼りに、自力(←もう他力になってるけど(爆笑))更生を
目指します。
0332名無しさん@お腹いっぱい。
2001/06/12(火) 11:44ID:sehxFmlg<input type="radio" name="hobby" value="テニス">
として、両方$hobbyにぶち込みたいのですが、
DBに登録するときには、最後の一個しか入りません。
&hobby=....&hobby=....&となるせいなのですが。
初心者スミマセン
0333名無しさん@お腹いっぱい。
2001/06/12(火) 12:25ID:???<input type="checkbox" name="hobby1" value="野球">
<input type="checkbox" name="hobby2" value="テニス">
0334rubbish_lister
2001/06/12(火) 13:36ID:???間違っても共用鯖ではやらないように。
#!/usr/bin/perl
#getimage.pl
use LWP::Simple;
binmode(STDOUT);# Windowsでは必須
print get(shift);
__END__
C:\> perl getimage.pl http://hoge.net/foo/bar.image > bar.image
>>332
Queryを解析する時に
$data{$name} .= ", $value";
とでもすればよろしい
0335324
2001/06/12(火) 14:24ID:cGbuu4QE#!/usr/bin/perl
use IO::File;
use strict;
IO::File->new('a.csv');
chomp(my @b = grep{ (split/,/)[3] eq 'ok' } IO::File->new('a.csv')->getlines);
IO::File->new('>b.csv')->print( map{ join("\t", (split/,/)[2, 5]) . "\n" }@b );
__END__
で、6番目の項目が重複していたら b.csv に書き出さない、
とするにはどうしたら良いでしょう?
0336rubbish_lister
2001/06/12(火) 15:30ID:???use IO::File;
use strict;
my %exists;
IO::File->new('>b.csv')->print(
map{ sprintf("%s\t%s\n", @{ $_ }[3, 6]) }
grep{ $_->[4] eq 'ok' and not $exists{ $_->[6] }++ }
map{ chomp; [ undef, split /,/ ] }
IO::File->new('a.csv')->getlines
);
__END__
>>335
あまり大きなファイルを処理するのには向かないが
0337名無しさん@お腹いっぱい。
2001/06/12(火) 16:29ID:???../index.html<br>
../doraemon.html<br>
../nobita.html<br>
以下続く・・・
というふうにしたいのですが、
$chon = "../";
print << "EOF";
$chonindex.html
$chondoraemon.html
$chonnobita.html
EOF
とすると
$chonindex.htmlやら$chonnobitaやらの変数があることに
なって困っています。どないしたらいいでしょうか?
0338tkx
2001/06/12(火) 16:52ID:9FWW9dnw〜
</form>
という風に別ウインドウにCGIをpostで引き渡すのって反則なんでしょうか?
IE5.5+winやNN4.7+winでは問題なく作動するんですがNN6.0+winではpostした内容が一切引き渡されないんです。
NN6.0+winのバグであれば、これを回避する方法ってないでしょうか?
0339名無しさん@お腹いっぱい。
2001/06/12(火) 16:58ID:???$chon = "../";
print << "EOF";
${chon}index.html
${chon}doraemon.html
${chon}nobita.html
EOF
俺も昔引っかかった。
0340名無しさん@お腹いっぱい。
2001/06/12(火) 17:08ID:Ah5wBUQA時間を使いたいんです。
例えば
$date_now ;#現在の日時
$date_soon ;#現在から1ヵ月後
とした場合、$date_nowの方は
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
で取れますよね?
一ヵ月後となると。。。難しいですか?
今現在はPostgreSQLに一回$date_nowを落としてから1ヶ月足して
それを$date_soonに入れなおしてますがあまり効率的ではないような
気がするんで。。。
0341名無しさん@お腹いっぱい。
2001/06/12(火) 17:22ID:???$mon=$mon+2
0342T女の竹田
2001/06/12(火) 17:25ID:???1月31日の一ヶ月後は何月何日にしたいの?
30日後とかなら簡単だよ。
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time+60*60*24*30);
じゃないのかな。
0343340
2001/06/12(火) 17:40ID:Ah5wBUQAそれだと13月とかでませんか?
>>342
2月28日にしたいんですが難しいですか?
閏年とかも計算して。。。
今のままの方がやっぱり楽なんですかね(^^;
0344T女の竹田
2001/06/12(火) 18:16ID:???($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
@dayinmonth = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
$year+=1900;
($year_next, $mon_next, $mday_next) = ($year, $mon, $mday);
$year_next++ if $mon == 11;
$mon_next++;
$uruu = 1 if $mon_next == 1 && ($year_next % 400 == 0 || ($year_next + 1900) % 4 == 0 && $year_next % 100 != 0);
print "$dayinmonth[$mon_next]\n";
print "$uruu\n";
$mday_next = $dayinmonth[$mon_next] + $uruu if $mday_next > ($dayinmonth[$mon_next] + $uruu);
う゛〜、ぜんぜんスマートじゃないけど。。。。
0345T女の竹田
2001/06/12(火) 18:17ID:???0346T女の竹田
2001/06/12(火) 18:44ID:???$time_temp=time();
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($time_temp);
$time_temp+=60*60*24*31;
do {
(undef, undef, undef, $mday_next,$mon_next, $year_next,,,) = localtime($time_temp);
print "$year_next $mon_next $mday_next\n";
$time_temp-=60*60*24;
} while ($mday_next > $mday || $mon_next != ($mon + 1) % 12);
0347T女の竹田
2001/06/12(火) 18:46ID:???print "$year_next $mon_next $mday_next\n";
は要らないです…はぁ〜なにやってんだろ。
0348名無しさん@お腹いっぱい。
2001/06/12(火) 19:15ID:???私は探してないですが探してみたらどうですか
0349名無しさん@お腹いっぱい。
2001/06/12(火) 20:50ID:???使ってないからどうかわからんけど。
0352名無しさん@お腹いっぱい。
2001/06/13(水) 00:28ID:mJODJwMk良いでしょうか。自分のPCだけでの使用範囲です。
0353名無しさん@お腹いっぱい。
2001/06/13(水) 00:42ID:???0354rubbish_lister
2001/06/13(水) 00:44ID:???ただ、予め文字コードが分かっていて、半角カナを使わないのなら
文字コード変換はNKF.pmの方が圧倒的に高速でした。
参考にどうぞ。
0355名無しさん@お腹いっぱい。
2001/06/13(水) 00:49ID:???NKF.pmもためしてみます。
0356名無しさん@お腹いっぱい。
2001/06/13(水) 01:50ID:???0357(-_-
2001/06/13(水) 08:05ID:20J.4Zf6文字コード変換をおこなうのは可能ですか?
0358340
2001/06/13(水) 10:46ID:5WiWUamYありがとうございます。
スクリプトも大変勉強になりましたが、何事もめんどくさがらずにやると
いう姿勢も学ばせていただきました。
0359名無しさん@お腹いっぱい。
2001/06/13(水) 12:20ID:???0360名無しさん@お腹いっぱい。
2001/06/14(木) 10:11ID:???「cgi.pmを使用して」がどこにかかるかによらない?(国語の問題)
「文字コード変換を行う」にもかかると考えると無理っぽい。
0362名無しさん@お腹いっぱい。
2001/06/14(木) 21:07ID:zRHTE03Aゆいちゃっとのkill.datの書き方がわかりません。
どなたか教えていただけないでしょうか
0363名無しさん@お腹いっぱい。
2001/06/14(木) 21:51ID:elt2x50M追加オープンしてみたんですがうまくいかないようです。
上書きオープンならなんとかなるんですが
なるべくファイルを書き換えずに変更したいんです。
どうしたらいいんでしょうか?
0364名無しさん@お腹いっぱい。
2001/06/14(木) 21:53ID:q9Gx71xM教えてくださ〜い。
if($moji ne ~/[亜-龠]/ )
これで、$mojiが、漢字じゃなかったら、って感じになると思うんですが、うまくマッチングしません。何故でしょうか?
0365>>363
2001/06/14(木) 22:24ID:???0366名無しさん@お腹いっぱい。
2001/06/14(木) 23:36ID:HVlmJCFw・ 「=~」演算子の否定形は「ne ~」じゃなく「!~」。
・ 漢字のマッチは日本語モードでないと実行できない。
#!/usr/local/bin/perl -Lsjis
・・・
if ($moji !~ /[亜-龠]/)
・・・
0367名無しさん@お腹いっぱい。
2001/06/15(金) 04:39ID:r3DAHg.Yで、それを実行してみました。そしたら、、
Internal Server Errorがでます。
たぶん、
#!/usr/local/bin/perl -Lsjis
これが原因だと思うのですが、エラーを出なくするには、どうしたらよろしんでしょうか?
宜しくお願いします。
この呪文は勿論、プログラムの最初に記述するのですよね?
0368ななしサソ
2001/06/15(金) 09:24ID:JAlA10oI<textarea>内の改行をそのままデータとして処理したいのです。
この改行と1レコードを区切る改行は、皆様どう区別されているのでしょうか?
1.データに入れる際に→すべて<BR>に置換する。
2.データにはそのまま入れ、表示するときに<BR>に置換する。
HTML表示だけならば1でよさげですが、1.2両方とも
CSV吐き出しでほかのアプリケーション(たとえばエクセル)で
扱うときに問題がありそうですが・・・。
1.だと文章中に<BR>があってわけわからん。
2.だとレコード構造が壊れる or 改行が"・"とか表示?
\r, \n \r\nと使い分けできるのかな?
0369名無しさん@お腹いっぱい。
2001/06/15(金) 11:29ID:???私の場合は,1データ1行のデータとか1行で一つの内容を表すとかそういった場合は1(必ずしも<br>にするとは限らないけど)
xmlで保存だったらそのままかな
というかHTML表示もCSV吐き出しも原理は同じかと思われ
0370名無しさん@お腹いっぱい。
2001/06/15(金) 11:29ID:7EF0hPLoスペースのところで改行されてしまいます。
配列そのままをコピー先のファイルに書き込むと、
もんだいはないのですが・・
よい方法ありませんか?
open(FILE_TO,">>file_to");
open(FILE_FROM,"file_from");
# modify string
@string_array = <FILE_BASE>;
foreach $string(<@string_array>){
$string =~ s/hogehoge/foofoo/;
print FILE_TO $string;
print FILE_TO "\n";
}
# write to file
close(FILE_TO);
close(FILE_FROM);
0371S
2001/06/15(金) 11:38ID:O2mrj.vg「スペースのところで」という意味がよくわかませんが…。
$string に改行が入ったままなので、
print FILE_TO $string ですでに改行されてます。次の行でさらに
print FILE_TO "\n"; とする必要はないです。
0372T女の竹田
2001/06/15(金) 11:42ID:???>>370
書き間違いだと思うけど、
FILE_BASEはFILE_FROM、あと<@string_array>は@string_arrayだよね。
念のため。
0373370
2001/06/15(金) 13:42ID:???<META name="GENExxxx
コピー先
<META
name="GENExxxxx
って感じだったんです。
>FILE_BASEはFILE_FROM、あと<@string_array>は@string_arrayだよね
これが原因でした。
直したらうまくいきました。
半日なやんだ原因がこれだけだったとは・・
でも思い切って聞いてみてよかった。
ありがとうございました
0374ななしサソ
2001/06/15(金) 15:58ID:JAlA10oIサンクソ
>というかHTML表示もCSV吐き出しも原理は同じかと思われ
そうなんですど、つまり今度はデータとして使いたいときに、
改行があるから、レコードがおかしくなりますよね?
($1 tab $2 tab $3 tab \n)で1レコードなのに、
$2の中に\nが入ってる訳です。
($1 tab $2 tab $3 tab \n)が2レコードになってしまいます。
0375ななしサソ
2001/06/15(金) 15:58ID:JAlA10oIサンクソ
>というかHTML表示もCSV吐き出しも原理は同じかと思われ
そうなんですど、つまり今度はデータとして使いたいときに、
改行があるから、レコードがおかしくなりますよね?
($1 tab $2 tab $3 tab \n)で1レコードなのに、
$2の中に\nが入ってる訳です。
($1 tab $2 tab $3 tab \n)が2レコードになってしまいます。
0376名無しさん@お腹いっぱい。
2001/06/15(金) 17:02ID:m1xvu7Zs吐き出したCSVをそのまま別アプリで読みたいってわけ?
ならそのソフトが読める形式でデータ吐くしかないでしょ。
0377名無しさん@お腹いっぱい。
2001/06/15(金) 17:06ID:???↑みりゃ分かんべ。
0378ななしサソ
2001/06/15(金) 17:25ID:JAlA10oI印刷して、今晩ゆっくり勉強します。
>376 CSV→SQLで読める形式変換Perl書いてくだしゃい。
ODBC使ってもゴミと一緒に改行吐き出しやがるし、(バグ?)
いったいどうすりゃいいんだ?
0379名無しさん@お腹いっぱい。
2001/06/15(金) 19:05ID:???0380名無しさん@お腹いっぱい。
2001/06/15(金) 20:54ID:???0382名無しさん@お腹いっぱい。
2001/06/16(土) 01:30ID:s.BBQbAsファイルロックは不要なのでしょうか。
0383名無しさん@お腹いっぱい。
2001/06/16(土) 01:42ID:???↓ ↓ ↓
writeシステムコール ↓
↓ ↓ ↓
Xに"hoge"を出力せよ writeシステムコール
↓ ↓ ↓
h Xに"foo"を出力せよ h
↓ =@ =@ ↓ =@ =@ =@↓
o f hof
↓ ↓ ↓
g o hofgo
↓ ↓ ↓
e o hofgoeo
↓
(´д`)マズーー
0384名無しさん@お腹いっぱい。
2001/06/16(土) 01:42ID:???0385名無しさん@お腹いっぱい。
2001/06/16(土) 17:27ID:???flock(OUT, 2);
truncate(OUT, 0);
seek(OUT, 0, 0);
print OUT "........";
close(OUT);
と書いた場合、ロックが解除されるまで別プロセスは待つのでしょうか。
open(OUT, "+< outfile.txt") || die("ファイルオープンに失敗\n");
と書いた場合はロックがかかっていると書きこまずに終了してしまうので、
確実に書きこみをさせたいのです。
また、1つのファイルに対して読みこみ→処理→書きこみとする場合、
読みこみの時からロックするべきなのでしょうか。
0386rubbish_lister
2001/06/16(土) 22:46ID:???何か疑問があればまずテストしてみてはどうだろうか。
0387名無しさん@お腹いっぱい。
2001/06/16(土) 23:48ID:2gIPolvU>open(LOG,">>./log.dat")
(1) writeがアトミック動作
(2) openにappendモードがある
が満たされてればロック不要でしょ。
だからUNIX系やWin2000ならロック不要。
Win95はどうだったかな・・・。
0388名無しさん@お腹いっぱい。
2001/06/17(日) 02:58ID:???0389387
2001/06/17(日) 14:33ID:kJNCMImkあ、そのとおりだね。syswriteじゃないと、でかいデータは
複数回に分けて書き込まれるのでアトミック性がなくなる。
0390名無しさん@いつも空腹
2001/06/17(日) 16:56ID:zspd2eTk最近、私のホームページにアクセスする人の多くは
掲示板(bbs.cgi)を直接ブックマーク登録しているらしく
アクセスカウンタが寂しい状態です
0391名無しさん@お腹いっぱい。
2001/06/17(日) 17:32ID:???掲示板にカウンタをつけてトップページと共有する
0392名無しさん@お腹いっぱい。
2001/06/17(日) 19:56ID:m7qST3dgそのおねーちゃんをひーひー悦ばすぱーる教えてください。
やっぱり真珠埋め込みですかね。
0393名無しさん@お腹いっぱい。
2001/06/17(日) 21:42ID:???初心者がいきなりモジュール等に頼るのは感心しません。
まず基礎的な知識を覚えてから経験をつみましょう。
0394名無しさん@お腹いっぱい。
2001/06/18(月) 08:08ID:???無知な童貞逝ってよし
0395名無しさん@お腹いっぱい。
2001/06/18(月) 08:08ID:???ハハハ
∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ^∀^)< あほか この低脳が >>392
( つ ⊂ ) \_________
.) ) )
(__)_) (^∀^)ゲラゲラ シネ
0396名無しさん@お腹いっぱい。
2001/06/18(月) 09:09ID:fCtvXMRU真珠が気持ち良くないって言ってるのは、
真珠入りヤクザにケツほられたことない
男だけ
とのこと。
0397名無しさん@お腹いっぱい。
2001/06/18(月) 09:46ID:cfKmX2REsyswriteってバッファリングしないって事ですよね?
やっぱり、一つのファイルをガリガリ読み書きする場合、
相当パフォーマンスは落ちるのでしょうか。
0398名無しさん@お腹いっぱい。
2001/06/18(月) 10:20ID:???激しく同意!
0399名無しさん@お腹いっぱい。
2001/06/18(月) 15:29ID:zLGH8Szoバッファリングが効果を発揮するのは、
1文字ずつとか1行ずつとか小分けに読み書きする場合なので、
sysread/syswriteで一気にファイルを読み書きするんだったら
パフォーマンスは落ちないです。
0400名無しさん@お腹いっぱい。
2001/06/18(月) 16:43ID:478GYAHsいきなりつまずいています。
送信して書き込むと言う単純作業なんですが以下のように書いたんですが
動作しません。間違えがあったら指摘して下さい・・・
elsif ($in{'menu'}) {
open(IN,"stitle.log") || &error("Open Error : stitle.log","LK");
@line = <IN>;
close(IN);
# 更新
open(OUT,">stitle.log") || &error("Write Error : stitle.log","LK");
print OUT @line;
close(OUT);
}
print <<"EOM";
<form action="$script" method="POST">
<input type=hidden name=pass value="$in{'pass'}">
<input type=hidden name=mode value="admin">
一行目 <input type=text name=menu size=30>
<input type=submit value="サブタイトル">
</form>
EOM
0401名無しさん@お腹いっぱい。
2001/06/18(月) 16:47ID:???何故それで動くと思えるのかが不思議だ
0402名無しさん@お腹いっぱい。
2001/06/18(月) 16:56ID:478GYAHsいきなりつまずいています。
送信して書き込むと言う単純作業なんですが以下のように書いたんですが
動作しません。間違えがあったら指摘して下さい・・・
elsif ($in{'menu'}) {
open(IN,"stitle.log") || &error("Open Error : stitle.log","LK");
@line = <IN>;
close(IN);
# 更新
open(OUT,">stitle.log") || &error("Write Error : stitle.log","LK");
print OUT @line;
close(OUT);
}
print <<"EOM";
<form action="$script" method="POST">
<input type=hidden name=pass value="$in{'pass'}">
<input type=hidden name=mode value="admin">
一行目 <input type=text name=menu size=30>
<input type=submit value="サブタイトル">
</form>
EOM
>>401
だからドキュンな質問なんです。本当にわからないです。
0403名無しさん@お腹いっぱい。
2001/06/18(月) 16:59ID:???0404名無しさん@お腹いっぱい。
2001/06/18(月) 17:08ID:???何度も書くな。
どうせ自分で考えたスクリプトじゃないんだろうから、元のスクリプトを完全に写せ。
写し終わったら氏ね。
0405名無しさん@お腹いっぱい。
2001/06/18(月) 17:12ID:478GYAHssub kanri {
local(@line, $menu);
if ($in{'menu'}) {
open(IN,"stitle.log") || &error("Open Error : stitle.log","LK");
@line = <IN>;
close(IN);
# 更新
open(OUT,">stitle.log") || &error("Write Error : stitle.log","LK");
print OUT @line;
close(OUT);
}
# 管理画面
&header;
print <<"EOM";
[<a href="$script?">初期画面に戻る</a>]
<table width="100%"><tr><th bgcolor="navy">
<font color="#FFFFFF">管理モード</font>
</th></tr></table>
<P><blockquote>
<form action="$script" method="POST">
<input type=hidden name=pass value="$in{'pass'}">
<input type=hidden name=mode value="admin">
一行目 <input type=text name=menu size=30>
<input type=submit value="サブタイトル">
</form>
EOM
}
exit;
まだ作り中ですが・・・
0406名無しさん@お腹いっぱい。
2001/06/18(月) 17:22ID:???もう良い。お前CGI作成/改造に手出すな。
今日の教訓:ドキュソにも程がある
0407名無しさん@お腹いっぱい。
2001/06/18(月) 17:23ID:???もう良い。お前CGI作成/改造に手出すな。
今日の教訓:ドキュソにも程がある
0408S
2001/06/18(月) 17:41ID:???>>405
どういう風に「動作しない」のかきちんと書きましょう。
動くけど更新されてないとか、エラーで動かないとか…。
・ @line を全く更新していない。$menu を追加するのでは?
・ どうせファイル全体を @line に入れるなら、
open(IN,"+<stitle.log");
@line = <IN>;
(@lineの更新処理)
seek(IN,0,0);
print @line;
truncate(IN,tell(IN));
close(IN);
と一度のファイルオープンで終わらせるようにしましょう。
0409S
2001/06/18(月) 17:42ID:???print @line; → print IN @line;
0410名無しさん@お腹いっぱい。
2001/06/18(月) 18:09ID:???どう違うんですか?
0411名無しさん@お腹いっぱい。
2001/06/18(月) 18:17ID:???お前には同じに見えるのか。
すげーな。
0412名無しさん@お腹いっぱい。
2001/06/18(月) 22:22ID:???試しに説明してみて。
0413410
2001/06/18(月) 23:18ID:2vmGPgqAsyswriteはstdioを通さないとかありましたけど、何が起こるのか良く解りません。
御分かりなら説明orポインタを示して貰えると有り難いです。
----
ところで、Perlで flush とかいう操作をするにはどうすればいいんでしょう。
select FILE; $| = 1; print '';
でできますか?
0414名無しさん@お腹いっぱい。
2001/06/19(火) 00:01ID:???0415名無しさん@お腹いっぱい。
2001/06/19(火) 00:04ID:???もうちょっと説明して。馬鹿だから。
0416名無しさん@お腹いっぱい。
2001/06/19(火) 00:06ID:???なんだその程度か。期待して損した。
0417名無しさん@お腹いっぱい。
2001/06/19(火) 00:10ID:???久々に真性アホを見つけた。さらしあげ。
0418名無しさん@お腹いっぱい。
2001/06/19(火) 00:38ID:???プ
0419414じゃないが
2001/06/19(火) 00:56ID:???0420_gunzip
2001/06/19(火) 01:09ID:???perldoc -q flush すると出てくるよ。
http://www.perl.com/pub/doc/manual/html/pod/perlfaq5.html#How_do_I_flush_unbuffer_an_outpu
>>419
5.6からは指定する必要なし。
perldoc -f syswrite or perldoc perldelta
引数が二個しか無ければ、長さを勝手に計算してスタックに積んでくれる。
/* pp_sys.c */
PP(pp_syswrite)
{
dSP;
int items = (SP - PL_stack_base) - TOPMARK;
if (items == 2) {
SV *sv;
EXTEND(SP, 1);
sv = sv_2mortal(newSViv(sv_len(*SP)));
PUSHs(sv);
PUTBACK;
}
return pp_send();
}
0421rubbish_lister
2001/06/19(火) 01:22ID:???小細工をしている分printの方が重いような…
と思いBenchmark.pmで測定するも、差は見られず…。
# やはりPerlを知るためにはCを学ばなければいけないのか…。
0422名無しさん@お腹いっぱい。
2001/06/19(火) 01:33ID:AOjMGb9gバッファなしprintだと1KBごとに細切れに書き込むので
その境目でタスクスイッチが発生する可能性があるけど、
syswriteは全部いちどに書くのでアトミック性が保証される。
ということかも。
・・・根拠はFreeBSDのstdioのソース+想像90%
0423410
2001/06/19(火) 01:40ID:Y5lp4EqE言葉が足りなくてすみません。そういう違いは解ってます。
上のほうでも出てるアトミック性がどうのという話とか、
「stdio を経由しないので、 print と一緒に使うと混乱する」とか、
Programming Perl にも書いてある partial write(書き込み途切れてる?)とか、
ファイルシステムとの関連というか…そこらへんでの違いを知りたいと思いまして。
OS関連のことが良くわからないので…。
>>420
こちらも言葉が足りなくてすみません。
該当ページは以前読んだのですが、最初からautoflushにする方法しか無いようでした。
+> でオープンしたファイルに何か書き込んだあと、それを読むという操作を
したいのですが、でかいファイルにけっこう細かく書き込むので書き込みが
終わるまではバッファリングさせておきたいのです。
その後自分で実験したら、書き込んだあと読むために seek で巻き戻すと flush される
ようで、心配することもないのかな、という感じです…。
長文すみません。
0424超初心者
2001/06/19(火) 04:01ID:nKH5a7VEhttp://cheese.2ch.net/test/read.cgi?bbs=art&key=982673377&st=508&to=509
こういうのって本当に問題あるんですか?
著作権法の侵害になってしまうのでしょうか?
0425_gunzip
2001/06/19(火) 04:22ID:???んーいまいち具体的に何を知りたいのか見えないけれど、
処理の流れは↓のようになっていることは、知って置いた方がいいかな。
・syswrite()
PerlLIO_write()もといシステムコール
write(int filedes, const void *buff, size_t bytes)
filedes --> syswriteに渡されたファイルハンドル(から得られるディスクリプタ)
buff --> syswrite に渡した文字列
bytes --> 書き込むバイト数(指定されなかった場合Perlが内部で計算する)
を呼び出してその場で書き込む。
・バッファリング無しのprint
PerlIO_write()(≠PerlLIO_write) もといstdioライブラリの
fwrite(const void *ptr, size_t size, size_t count, FILE *fp) に、
ptr --> print に渡した文字列(ちょっと違う)
size --> 1 固定だよ
count --> 文字列長(Perlが内部で計算する)
fp --> printに渡されたファイルハンドル(から得られるFILE構造体へのポインタ)
を渡して呼び出し書き込むよう指示する。
その後、IOフラグを調べてIOf_FLUSH ビットがセットされていた場合
(つまり、バッファリング無しに設定されていた場合)PerlIO_flush()もとい
stdioのfflush(FILE *fp)を呼んで、まだ書き込んでいないデータをカーネルに渡す。
>後
>書き込んだあと読むために seek で巻き戻すと flush されるようで
いや、そんなことはないと思うが......。たしかdo_seek()はそんなことはしないはず。
>最初からautoflushにする方法しか無いようでした。
IO::Handle を利用して、適宜バッファを書き出したいときに
$io->fflush();
するのが一番スマート && 安全じゃないかな。
0426_gunzip
2001/06/19(火) 06:49ID:???$io->flush();
癖が。
0427名無しさん@お腹いっぱい。
2001/06/19(火) 15:10ID:???20010617.dat 最終更新日6/19 14:00
20010618.dat 最終更新日6/18 15:00
20010619.dat 最終更新日6/19 18:00
というファイルがあった場合、
最終更新日順に@fileに入れるにはどうsortすればいいんでしょうか?
0428rubbish_lister
2001/06/19(火) 16:01ID:???@fileに入るのはファイル名のみですか?
#!/usr/bin/perl
use IO::Dir;
use File::stat;
my $dir = '.';
my @file = map{ $_->[0] }
sort{ $b->[1] <=> $a->[1] }
map{ [$_, stat($_)->mtime] }
grep{ not /^\.\.?$/ }
IO::Dir->new($dir)->read;
foreach(@file){
print $_, "\n";
}
__END__
0430名無しさん@お腹いっぱい。
2001/06/19(火) 18:29ID:???ハハハ
∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ^∀^)< あほか
( つ ⊂ ) \_________
.) ) )
(__)_) (^∀^)ゲラゲラ キエロ カイセンキッテクビモキレ ケラ
0431名無しさん@お腹いっぱい。
2001/06/19(火) 18:48ID:???はい、ファイル名のみです。ありがとうございました。
0432410
2001/06/19(火) 20:02ID:tqiPK0Ucありがとうございます。syswrite は最初からダイレクトに書き込む、
$| = 1 はバッファ(?)に書き込んだ後それを flush、という感じなんでしょうか。
こういう違いが知りたかったので勉強になりました。
>seek
open F, "+>hoge.txt";
print F 'hoge';
open F2, "<hoge.txt";
# seek F, 0, 1;
read F2, $buf, 1024;
print $buf;
こんなので試しました。このままでは何も表示されず、# を外すと "hoge" と出力されます。
seek すると書き込まれているように見えるのですが…。
0433410
2001/06/19(火) 20:10ID:???プロバイダのサーバではモジュールが使えないので。
0434名無しさん@お腹いっぱい。
2001/06/19(火) 20:14ID:???0435[cgi:38762]
2001/06/19(火) 20:26ID:???2:"A"; lbtmp
4input "?x(%)=";x:
input "? "p(mmhg)=";p
6:gosub 500
8:print "t="; using "####.####";t;"c"
10:end
12:lp:rem lb.pres
14:input"x(%)=";x:
input "t(c)=";t
16:gosub 514
18;print "p="; using "####.####";p;"mmhg
20:end
*lh :rem ent.lb
24:input"?x(%)"=";x:
input"? t(c)=";t
26:gosub 525
28:print "h="; using "####.####";h;"kc/kg"
30:end
よろしくお願いします。
0436名無しさん@お腹いっぱい。
2001/06/19(火) 22:49ID:???スレ違いだ氏ねヴォケ。←おやくそく。
しかしまじでCGI-MLにはこんなのが流れるんですか?
0437337
2001/06/19(火) 23:20ID:???現在、下のようにCGIでクッキーをセットしてるのですが・・・
print &setCookie("POSTNAME", $FORM{'postname'});
sub setCookie {
local($tmp, $val);
$val = $_[1];
$val =~ s/(\W)/sprintf("%%%02X", unpack("C", $1))/eg;
$tmp = "Set-Cookie: ";
$tmp .= "$_[0]=$val; ";
$tmp .= "expires=Thu, 1-Jan-2030 00:00:00 GMT;\n";
return($tmp);
}
0438337
2001/06/19(火) 23:21ID:???0439名無しさん@お腹いっぱい。
2001/06/19(火) 23:24ID:lwqdY8As0440337
2001/06/19(火) 23:29ID:???文字化けした状態で出てくるのです。
--
<html><head>
<SCRIPT LANGUAGE="JavaScript">
<!--
getname = getCookie("POSTNAME");
if (getname == "") {
getname = "";
}
function getCookie(key, tmp1, tmp2, xx1, xx2, xx3) {
tmp1 = " " + document.cookie + ";";
xx1 = xx2 = 0;
len = tmp1.length;
while (xx1 < len) {
xx2 = tmp1.indexOf(";", xx1);
tmp2 = tmp1.substring(xx1 + 1, xx2);
xx3 = tmp2.indexOf("=");
if (tmp2.substring(0, xx3) == key) {
return(unescape(tmp2.substring(xx3 + 1, xx2 - xx1 - 1)));
}
xx1 = xx2 + 1;
}
return("");
}
// -->
</SCRIPT>
</head><body>
<SCRIPT Language="JavaScript">
<!--
mmbb = unescape(getname);
document.write("名前:<input type=text name=postname size=30 value=",mmbb,">");
// -->
</SCRIPT>
</body></html>
0441439
2001/06/19(火) 23:36ID:lwqdY8AsJavaScriptで呼び出す場合IEだと確かに化けるね。
NNだと問題ないけど。
$val =~ s/(\W)/sprintf("%%%02X", unpack("C", $1))/eg;
消すと大丈夫だよ。
その代わり;とか含むとCookieがちゃんと設定されない。
2chはそうなってるね。
IEのシェアが大きいから仕方ないのかな。
つか糞IEバグ直せよゴルァ
0442rubbish_lister
2001/06/19(火) 23:38ID:???多分文字コードがUTF-8だからですね。
Perl5.6以上ならpackとJcode.pmで何とかなりますが、
それ以下のバージョンの場合はどうすればいいのやら…。
0443439
2001/06/19(火) 23:42ID:lwqdY8AsNNではOKだからIEのバグだと思ってたが。
0444rubbish_lister
2001/06/19(火) 23:55ID:???m/%u([a-fA-F0-9]{4})/
って形ならUTF-8なのではないか。
試してないでアレですが。
0445rubbish_lister
2001/06/19(火) 23:56ID:???0446337
2001/06/20(水) 00:01ID:???消してもダメでした・・・
>>rubbish_l
クッキーの中身をみたところ
テスト中=%A5%C6%A5%B9%A5%C8%C3%E6
でした。UTF-8とやらみたいであります。
弱りました。当方Perl5.0の鯖なんす。
0447439
2001/06/20(水) 00:04ID:???あとはよう分からんスマソ。
0448rubbish_lister
2001/06/20(水) 00:06ID:???え?
いやそれは(URIエスケープされているとはいえ)普通のEUC-JPですが…?
0449rubbish_lister
2001/06/20(水) 00:10ID:???もしかしてCGIスクリプト側でセットしたクッキーをJavaScriptで読み出そうとしてます?
ちと勘違いしてました。すみません。
…となると…>>441さんの方法しか思いつきません。もうしわけない。
0450337
2001/06/20(水) 00:15ID:???0451_gunzip
2001/06/20(水) 00:27ID:???ほういちさんの所は上手くいっていた記憶があるなあ。
http://www13.big.or.jp/~bell/nanashi/perl/
>>432
>という感じなんでしょうか。
そです。
syswrite --> write()でそのまま書き出し。
$| = 1 && print --> バッファリングされるけれど、print関数内で即フラッシュされる。
と考えればいいかと。
>>seek
>seek すると書き込まれているように見えるのですが…。
PerlIO_seekもといfseek()が、シークする前に__flshfp(FILE*,int)を呼び出して
バッファをフラッシュするのを忘れてた(鬱)すまん。
ちゃんと書き込まれますね。
0452S
2001/06/20(水) 00:34ID:???IEのescape/unescapeは%uXXXXという形のUnicodeを使ってます。
なので、%XX の形のCookieはIEのunescapeでは戻せません。
クロスブラウザ(?)にするためには、JavaScriptかCGI内部のどちらかに
統一して、セットも取得も両方行う必要があります。
337のように取得をJavaScriptにするなら、セット(escape)もJavaScriptでやりましょう。
# USER_AGENT を見て、IE なら %uXXXX のように変換することもできますけど…。
0454rubbish_lister
2001/06/20(水) 00:41ID:???げげ、そうだったんですか…
とりあえず%uXXXXという形に出来ますが、
これはIE専用か…
use utf8;
use 5.6.0;
use Jcode;
$str = 'テスト中';
$str = Jcode::convert($str, 'utf8');
$str =~ s/(.)/ sprintf('%%u%x', unpack('U', $1)) /ge;
0455名無しさん@お腹いっぱい。
2001/06/20(水) 12:11ID:78RSTnoIDOSで構文チェックすると
行数とエラーの内容がでてきますよね?
そのエラーの内容を解説してる本とかサイトとか
あったら教えてもらえないでしょうか?
ガイシュツだったらごめんなさい
0456名無しさん@お腹いっぱい。
2001/06/20(水) 12:19ID:rCbZrLc.おおすげー俺的にタイムリー
板違いになっちゃうけど、javascriptでURLエンコードする
ライブラリってありませんかね?
色々検索したんだけど、全然見つからない。
ここまで見つからないと、javascriptだと実装不可能なのかなぁ。
と思ってみたり。
perlだと一行なのに。
0457電動ナナシ
2001/06/20(水) 14:37ID:???0458S
2001/06/20(水) 14:47ID:???英語ならPerl付属のマニュアルの中の perldiag という項目に出てます。
日本語訳は http://www.att.or.jp/perl/man/ ここにあります。
>>456
IEの場合、Unicodeでないエンコードは無理です(Appletを使ってやってる人はいますが)。
デコードならできると思いましたが、日本語と認識してくれないです…。
var encoded = "%82%B1%82%F1%82%C9%82%BF%82%CD%81B";
var decoded = encoded.replace( /%([0-9A-Fa-f][0-9A-Fa-f])/g, url_unescape );
function url_unescape( matchedString, subMatch1 ){
return String.fromCharCode(parseInt(subMatch1,16));
}
0459455
2001/06/20(水) 16:14ID:uuv79wZIありがとうございます。
また何かあったらお聞きしますと思いますが
宜しくお願いいたします。
0460名無しさん@お腹いっぱい。
2001/06/20(水) 16:47ID:JljLMnckPerlでは、難しいのでしょうか。
C言語の場合(なにも考えなくてもいい・・・)
int asciicode = 'A'; /* asciicode = 0x65; */
Perl の場合(仮定)
$str = "A";
$asciicode = getAsciiCode( $str); # asciicode = 65;
この getAsciiCode関数が欲しい・・。
my $val = unpack('H2','A');
とした場合、返ってくるのは "41" ですね。近いんですけど、
これは16進数だから、なんとかして10進数に変換しなければいけない・・。
0461460
2001/06/20(水) 16:53ID:JljLMnckこうすればいいんですね・・。jcode.pl のソースみて、
てきとーにやったら、出来てしまった・・。
my $val = unpack('CC','A');
失礼しました。
(なんで、こうやったら、できるのかはわからんが)
0462名無しさん@お腹いっぱい。
2001/06/20(水) 18:41ID:B0.Wtqj2unpackはいろいろ使えて便利だけど、
動作が理解できないなら専用の関数使ったほうがいいぞ。
$code = ord('A'); # 10進文字コード←文字
$str = chr(65); # 文字←10進文字コード
0463JAPU
2001/06/20(水) 18:44ID:???0464名無しさん@お腹いっぱい。
2001/06/20(水) 19:20ID:???iモードの掲示板で、絵文字を入力された場合の対策はどのように
されてますか?
0465名無しさん@お腹いっぱい。
2001/06/20(水) 20:42ID:???while (<FILE>) { 処理 };
と
foreach (<FILE>) { 処理 };
ではどちらが速いでしょうか?
また、一度配列に入れてからのほうが良いのでしょうか?
教えてください。
0466なー
2001/06/20(水) 21:18ID:f8KvSrzA最初に配列にまとめて入れた方が良いと思われ。
whileもforeachも速さは変わらないと思われ。
0467受け売りだから間違ってたらゴメン
2001/06/20(水) 21:32ID:???配列に入れるとその分メモリを喰う。
あまりにも大容量な場合は配列に入れないほうがいい。
0468rubbish_lister
2001/06/20(水) 21:36ID:???数キロバイトのファイルならいざ知らず、
メガバイト単位だと明らかにwhileの方が速いですよ?
0469465
2001/06/20(水) 21:50ID:???小さければ配列に入れてforeach(配列に対してwhileは使えませんよね??)
ということですね。
ありがとうございました。
0470名無しさん@お腹いっぱい。
2001/06/20(水) 22:55ID:???念のため
while (shift @array) {
something;
}
とかたまに使うよ
0471名無しさん@お腹いっぱい。
2001/06/20(水) 23:08ID:???> 最初に配列にまとめて入れた方が良いと思われ。
これは何故こんな考えが?
後学の為に聞いておきたい。
0472名無しさん@お腹いっぱい。
2001/06/20(水) 23:12ID:f8KvSrzA「PerlCRT.dllがありません」って言われてTk.pmが落ちます。
どうしたらいいんでしょうか?
ちなみに、そのプログラムはSolarisのperl5.005_3で動いたものなので
コード的にはおかしくないはず・・・・
0473名無しさん@お腹いっぱい。
2001/06/21(木) 01:29ID:???特定のコードで落ちるんですか?
それともTk使うと必ず落ちるのか。
0474472
2001/06/21(木) 01:47ID:???でも落ちます。
これって、なにやっても落ちますよね・・・・
0475473
2001/06/21(木) 02:49ID:???"ppm install Tk"でインストールしました。
* ActivePerlのバージョン
v5.6.0 built for MSWin32-x86-multi-thread
Binary build 623
* Tkのバージョン
C>perl -MTk -e "print $Tk::VERSION"
800.022
0476名無しさん@お腹いっぱい。
2001/06/21(木) 03:13ID:???perlcrt.dll はありますか?
0477名無しさん@お腹いっぱい。
2001/06/21(木) 03:32ID:???0478名無しさん@お腹いっぱい。
2001/06/21(木) 04:39ID:???0479_gunzip
2001/06/21(木) 05:52ID:???while(<>) --> ファイルを一行毎に読み出す。
foreach(<>) --> ファイルを一括して読み、インデックスを回す。
という違いがあります。
......どちらもスピードはあまり変わりませんから、普通はwhile()の方を使います。
0480_gunzip
2001/06/21(木) 05:53ID:???#!/home/devel/5.7.1/bin/perl -Dtls
print while <>;
________________________________________
EXECUTING...
(while.pl:0) enter
(while.pl:0) ENTER scope 2 at pp_hot.c:1535
Entering block 0, type BLOCK
=>
(while.pl:0) nextstate
=>
(while.pl:3) enter
(while.pl:3) ENTER scope 3 at pp_hot.c:1535
Entering block 1, type BLOCK
=>
______________________________________
(while.pl:3) gvsv(main::_)
=> UNDEF
--> gvsv()コードによりSV ${"main::_"} を取得(undef)、スタックに積む。
______________________________________
(while.pl:3) gv(main::ARGV)
=> UNDEF GV()
--> gv()コードによりGV ARGV(ファイルハンドル)を取得、スタックに積む。
______________________________________
(while.pl:3) readline
=> PV("1\n"\0)
--> スタックからpopしたファイルハンドルから一行読み出し、$_に設定。
PV とは文字列の意。(ちゃんと改行付き)
______________________________________
(while.pl:3) defined
=> SV_YES
(while.pl:3) and
=>
--> while() 内のテスト。Perl5.001からは while (<>)は
while (defined($_ = <>)) と同義になっている。
(op.c pod/perlop.pod,Change.log --NETaa13486を参照)
この場合、テストはSV_YES(文字列"1")を返した。(-> true)
______________________________________
0481名無しさん@お腹いっぱい。
2001/06/21(木) 05:54ID:???0482_gunzip
2001/06/21(木) 05:54ID:???(while.pl:3) pushmark
=> *
(while.pl:3) gvsv(main::_)
=> * PV("1\n"\0)
(while.pl:3) print
=> SV_YES
--> $_の値を取得し、printする。成功したためSV_YESを返す。
______________________________________
(while.pl:3) unstack
=>
--> スコープ終了。オールクリア (-->ループ繰り返し)
______________________________________
#< .....以上をARGVから読みとれる限り繰り返す..... >#
(while.pl:3) leave
Leaving block 1, type BLOCK
(while.pl:3) LEAVE scope 3 at pp_hot.c:1657
=>
(while.pl:3) leave
Leaving block 0, type BLOCK
(while.pl:0) LEAVE scope 2 at pp_hot.c:1657
(while.pl:0) LEAVE scope 1 at perl.c:394
0483_gunzip
2001/06/21(木) 05:55ID:???#!/home/devel/5.7.1/bin/perl -Dtls
print foreach <>;
________________________________________
EXECUTING...
(foreach:0) enter
(foreach:0) ENTER scope 2 at pp_hot.c:1535
Entering block 0, type BLOCK
=>
(foreach:0) nextstate
=>
______________________________________
(foreach:3) nextstate
=>
(foreach:3) pushmark
=> *
(foreach:3) gv(main::ARGV)
=> * GV()
--> while() の時と同じ(省略)
______________________________________
(foreach:3) readline
=> * PV("1\n"\0) PV("2\n"\0) PV("3\n"\0)
--> ファイルハンドルARGVから全て読み出し、一行毎にスタックに積む。
PV は文字列の意。(改行付き)
______________________________________
(foreach:3) gv(main::_)
=> * PV("1\n"\0) PV("2\n"\0) PV("3\n"\0) GV()
(foreach:3) enteriter
(foreach:3) ENTER scope 3 at pp_ctl.c:1703
(foreach:3) ENTER scope 4 at pp_ctl.c:1734
Entering block 1, type LOOP
=> PV("1\n"\0) PV("2\n"\0) PV("3\n"\0)
(foreach:3) iter
=> PV("1\n"\0) PV("2\n"\0) PV("3\n"\0) SV_YES
(foreach:3) and
=> PV("1\n"\0) PV("2\n"\0) PV("3\n"\0)
--> リストから一つ取り出し$_ にセット。その後 $_をテスト(SV_YES --> true)
______________________________________
0484_gunzip
2001/06/21(木) 05:55ID:???(foreach:3) pushmark
=> PV("1\n"\0) PV("2\n"\0) PV("3\n"\0) *
(foreach:3) gvsv(main::_)
=> PV("1\n"\0) PV("2\n"\0) PV("3\n"\0) * PV("1\n"\0)
(foreach:3) print
=> PV("1\n"\0) PV("2\n"\0) PV("3\n"\0) SV_YES
--> $_の値を取得し、printする。成功したためSV_YESを返す。
______________________________________
(foreach:3) unstack
=> PV("1\n"\0) PV("2\n"\0) PV("3\n"\0)
(foreach:3) nextstate
=> PV("1\n"\0) PV("2\n"\0) PV("3\n"\0)
--> 次の繰り返しのためのクリーンアップ (-->ループ繰り返し)
______________________________________
#< .....以上を全ての要素に対して繰り返す..... >#
(foreach:3) iter
=> PV("1\n"\0) PV("2\n"\0) PV("3\n"\0) PV("\n"\0) PV("aaa\n"\0) SV_NO
(foreach:3) and
=> PV("1\n"\0) PV("2\n"\0) PV("3\n"\0) PV("\n"\0) PV("aaa\n"\0) SV_NO
(foreach:3) leaveloop
Leaving block 1, type LOOP
(foreach:3) LEAVE scope 4 at pp_ctl.c:1821
(foreach:3) LEAVE scope 3 at pp_ctl.c:1822
=> PVNV(""\0)
-->もう要素が残っていないためSV_NO(文字列"")が返されループ終了
______________________________________
(foreach:3) leave
Leaving block 0, type BLOCK
(foreach:0) LEAVE scope 2 at pp_hot.c:1657
(foreach:0) LEAVE scope 1 at perl.c:394
0485_gunzip
2001/06/21(木) 05:59ID:???です。
.......それにしても長すぎた。申し訳ない。
0489名無しさん@お腹いっぱい。
2001/06/21(木) 06:46ID:PPJE7E4o@aに配列が保存されており、
&subxx($xx,$xx,\@a); #ってな具合でサブルーチンにリファレンスで渡したあと、
sub subxx{
$a = $#$_[2];
}
こういう風に、要素数を読みとろうとすると、なぜかエラーがでます。
どうすればいいんっしょ。
ちなみに、いったん別の変数へぶちこむと、正常に動くんですけどねえ。
0490初心者
2001/06/21(木) 06:49ID:???なるほど。
>480-484を見ると
>(foreach:3) readline
>=> * PV("1\n"\0) PV("2\n"\0) PV("3\n"\0)
全部読んじゃうのね。・・・知らなんだよ〜ありがとう。
#うちのperlは-Dオプションが効かないよ・・・
0491_gunzip
2001/06/21(木) 06:51ID:???$a = $#{$_[2]}
>要素数を読みとろうとすると
要素数じゃなくてインデックスの最大値だよ。
要素数は
$count = scalar @{$_[2]}
0492名無しさん@お腹いっぱい。
2001/06/21(木) 07:25ID:???ども、ありがとうございました。無事できたっす。
いや、しかし、perl面白いですなあ。かなりはまりそうです。
0493名無しさん@お腹いっぱい。
2001/06/21(木) 13:41ID:2DG5zPDk-d 'hoge' でチェックしたりしないでいきなり mkdir 'hoge' ...
すると、何か問題があるでしょうか?
-d より効率が悪いとか、ディレクトリ上書きしちゃうシステムがあるとか…。
よろしくおねがいします。
0494ねこ丸
2001/06/21(木) 14:40ID:???mkdir: cannot make directory `try': File exists
0495ななし
2001/06/21(木) 20:45ID:???I saw a pan & pen.
と言う文字列があります。これをHTMLの実体参照で変換した後は、
I saw a pan & pen.
になりますが(文章の内容については突っ込まないこと)、この変換した後の文字列をsubstrのように文字を切り取りたいのです。
ちょっと分かりにくいので、先頭から10文字を切り取る動作の結果を例としてあげます。
0123456789 欲しい答え
I saw a pa → I saw a pa
いざプログラムを組んでみるとちんぷんかんぷんです。どなたかご教授を!
0496名無しさん@お腹いっぱい。
2001/06/21(木) 20:47ID:Q1GJ073gLinux、FreeBSD、Win95、Win2000は、いきなりmkdirで問題なし。
上書きすると>>494みたいなエラーになり元のディレクトリは不変。
効率は、気にするほど違いないでしょ。どっちかいったら-dのほうが遅い?
0497S
2001/06/21(木) 21:32ID:???あの、下の例文の意味がよくわからないのですが、 実体参照を
一文字としてsubstrしたいということですか?
手遊びに作ってみましたが、ちがったら無視して下さい。
# 開始位置は最初からのみ
# $str : 切り取り対象 $n : 何文字切り取るか
sub html_substr{
my( $str, $n ) = @_;
{
my $count = 0;
do{ last if $count++ >= $n }
while $str =~ /?\d{1,4};|&[A-Za-z]{1,7};|./gs;
}
substr $str, 0, pos($str);
}
うーん。遅そう。
0498S
2001/06/21(木) 21:33ID:???while $str =~ /
の次は、 & と # です。
0499465
2001/06/21(木) 21:38ID:???ですが、_gunzipさんのコードは私には高度過ぎてわかりませんでした・・・。
わざわざ書いてくださったのにすみません。
0500ななし
2001/06/21(木) 21:57ID:???あ〜いけね〜、
実体参照が変換されるのを忘れていた
I saw a pan & pen.のI saw a paです。鬱陀氏脳
0501ななし
2001/06/21(木) 22:23ID:???先ほどは失礼いたしました。
私の質問の意図はSさんの通りです。
で、プログラムのほうは一見それでうまくいくかと思いきや、$nが$strの文字数より大きくなるとnullが帰ってくるようです。
ここからは私のほうで考えてみます。
0502名無しさん@お腹いっぱい。
2001/06/22(金) 06:49ID:zgX1GrJQのですが、どうすればいいのでしょうか。
0503名無しさん@お腹いっぱい。
2001/06/22(金) 08:56ID:???0504antique
2001/06/22(金) 08:57ID:???0505antique
2001/06/22(金) 09:13ID:???0506???
2001/06/22(金) 12:57ID:ajkueiy.↑(ソースです)のi-mode掲示板をつけました。
どうしても、EZ−Webからだと文字化けがおこります。
しかも、「タイトル(=dai)」(フォームサブルーチンより)
の部分だけが…。
EZからだと、書き込み方式が違う(UTF−8??)
てのだけ、突き止めましたが、
それって↓
&jcode'convert(*dai,"sjis");
で対応するんですよね?でも、ダメです。
万策尽きてしまいました。
ぜひ、知識人の方々のお力を…。
お願いいたします。
(それとも、送信メソッドをJ−skyのためにGET
にしたんですが、そのせいでしょうか?)
0507名無しさん@お腹いっぱい。
2001/06/22(金) 15:57ID:???Jcode.pm使う。
http://openlab.ring.gr.jp/Jcode/index-j.html
0508名無しさん@お腹いっぱい。
2001/06/22(金) 19:13ID:le9nN3lE画像ファイルにアクセス制限をかけるために、いちどプログラムにて
画像ファイルを読み込み、それを動的にクライアントへ返しているの
ですが、そのときに'Content-type: image/gif'だけでは、IEでだけ
表示されないのです。NN4.7ではOKでした。
1.Content-typeにおいて他に指定する必要のあるものがある
2.他のヘッダーとして指定されていないものがある。
このどちらでしょうか?それともまったく関係のないことなのでしょうか?
0509名無しさん@お腹いっぱい。
2001/06/22(金) 19:38ID:le9nN3lEなっていないとだめなのでしょうか?
いくらContent-typeで指定したところでブラウザが拡張子にて判断して
しまうなら仕方のないことですね。
(Servletなのでクラス名に"."を含めることができません)
0510名無しさん@お腹いっぱい。
2001/06/23(土) 05:00ID:???http://members.jcom.home.ne.jp/katjusha/ :かちゅ〜しゃ作者のページ
http://members.jcom.home.ne.jp/monazilla/ :2ちゃんねるブラウザ一覧紹介
http://members.jcom.home.ne.jp/katjusha/katjusha2002.lzh :かちゅ〜しゃ直リン
http://www.geocities.co.jp/SiliconValley-Oakland/9028/bin/katjusha2002.lzh :かちゅ〜しゃ直リン
●ボード一覧(最新+α)を配布しているサイト
http://ni_ch.tripod.co.jp/board/
【前スレ】
★2ちゃん専用ブラウザ「かちゅ〜しゃ」★Part9
http://yasai.2ch.net/test/read.cgi?bbs=win&key=992356600
【お約束】
・質問する時は過去ログ、【FAQ】を確かめてからにしてね。
・板がdjときの書き込みは控えてね。
・罵り合いはやめてちょ!
0511名無しさん@お腹いっぱい。
2001/06/23(土) 11:46ID:DIfS2zfoうまくいきません。(IPアドレスが表示されます)
他のCGIではgethostbyaddr()でホスト名が取得できているので
サーバがgethostbyaddr()が使えないということではないと思うんですが…
どのような原因が考えられるでしょうか?
0512名無しさん@お腹いっぱい。
2001/06/23(土) 11:47ID:???http://corn.2ch.net/test/read.cgi?bbs=php&key=988727833&st=332&to=332&nofirst=true
マルチポストすな
きちんと動くCGIとやらと比較して自分で調べてみろ
0513名無しさん@お腹いっぱい。
2001/06/23(土) 12:58ID:/dnaAWAMサーバーは何?
サーバーが何かヘッダーを追加してて、そのヘッダーがIEの場合だけ
理解されているとかじゃない?
あと、content-typeの改行コードを、CRLFにしてみるとか、
perlならbinmodeになっているかどうかとか。
それと、おっしゃるように拡張子が、クライアント側で関連付けられていて
それが優先されているとか。IEならありそう。
0514名無しさん@お腹いっぱい。
2001/06/23(土) 13:20ID:???↓でだめか?
my($host) = &nslook($ENV{'REMOTE_ADDR'}) || '???';
sub nslook{
my($x) = shift;
($x =~ /([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)/)
? ((gethostbyaddr(pack('C4',$1,$2,$3,$4),2))[0] || $x)
: $x;
}
0515名無しさん@お腹いっぱい。
2001/06/23(土) 13:23ID:???my($x) = shift;
($x =~ /([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)/)
? ((gethostbyaddr(pack('C4',$1,$2,$3,$4),2))[0] || $x)
: 0;
}
ちょっと修正
0516CGI串
2001/06/23(土) 16:00ID:???置換する様にしてみました。あいかわらず、ロケーションで5回も飛ばされるけど、ゴールに到達できません。CGI串なので
、当然、ブラウザには、ロケーションを吐き出せません。サーバー側で、クライアントのロケーションを調べる方法ってあるん
ですかね?リファラーも設定したけど、あいかわらずだし。今なぜか、サーバーも、落ちてるし。中止かなぁ。ちなみに、
http://www.email.com/login/snap/login.jhtmlからログイン後のhttp://www2.email.com/snap/index.jhtml?dest=welcomeです。
0517511
2001/06/23(土) 17:32ID:zX58xGlkやってみましたがダメです。
何も表示されません…
0518あああ
2001/06/23(土) 17:41ID:uDMh12hc$a =~ /^aaa/; で$a の先頭に“aaa"があるかを確認できますが、
$st = "aaa"; $a =~ /^$st/; とやってもうまく動きません。
$a の先頭に $st が含まれているのかを確認する方法ってありま
すか?
0519名無しさん@お腹いっぱい。
2001/06/23(土) 19:21ID:???if(index("$a","$st") == 0){ #$aの中にて$stが0バイト目に存在したら
$ok = 1;
}
0521名無しさん@お腹いっぱい。
2001/06/23(土) 19:58ID:???0522T女の竹田
2001/06/23(土) 21:21ID:???多分そうだよね。
$a=~/\$Q$st$E/;
にしたらうまくいくはず。
ってゆーか自分は昔これ知らないで手動でエスケープしてたなー。ここに
来て勉強になったことのひとつ。
0523T女の竹田
2001/06/23(土) 21:22ID:???$a=~/^\Q$st\E/;
だね。
0524名無しさん@お腹いっぱい。
2001/06/23(土) 22:20ID:uDMh12hc0525あああ
2001/06/23(土) 22:22ID:uDMh12hc試してみます。
\Q \E ってなに? って調べればわかるかな。
0526あああ
2001/06/23(土) 22:32ID:uDMh12hcとりあえず、ダメでした。
ちょっと別途試験プログラム作ってから、もう一度組み込みしてみます。
0527名無しさん@お腹いっぱい。
2001/06/23(土) 22:35ID:???とにかくソースの一部を出せばすぐに解決するような気がするのだが。(保証はせんが)
0528飛ばんな
2001/06/23(土) 23:14ID:JvcuVhUoチェックBOXに関してお聞きしたいんですけど
皆さんチェックBOXどのように使ってますか?
複数のチェックBOXにおいて渡す側でリストをつくりたい場合
私はチェックBOXの名前を配列にしてしまって受け取ったほうで
キーとリストを入れ替えるっていうなんか邪道なことやってるんですが
なんかほかにいい方法あるでしょうか?
0529名無しさん@お腹いっぱい。
2001/06/24(日) 15:50ID:???perlのバージョンは大丈夫か?
0530名無しさん@お腹いっぱい。
2001/06/24(日) 21:16ID:???え?関係あるの?
0531名無しさん@お腹いっぱい。
2001/06/25(月) 03:29ID:???1つだけが"1"を含んでいることを確かめるにはどうしたら
良いのでしょうか。
どうしてもif文を大量に組み合わせたものしか考えられないのですが
もっと頭の良いプログラムにできないものかと思いまして。
0532名無しさん@お腹いっぱい。
2001/06/25(月) 03:40ID:5VbEnasMその程度のサイズなら、3×3×3=27個の要素のテーブルを作るかな。
@table = (0, 1, 1, 1, 0, ・・・以下略);
$hantei = $table[$a * 9 + $b * 3 + $c];
@tableのデータは手作業で作るのが早いと思う・・・。
0533S
2001/06/25(月) 04:38ID:???なんていう、Perl批判の引き合いに出されそうな方法も。
0534_gunzip
2001/06/25(月) 04:39ID:???いろいろ。
--------------------------------------------
if( (($a == 1) + ($b == 1) + ($c == 1)) == 1 ){
# 処理
}
--------------------------------------------
@array = (); #作業用配列(ハッシュでも可)
$array[$_]++ for $a, $b, $c;
if( $array[1] == 1 ){
# 処理
}
--------------------------------------------
#逝かれたコード(真似しないこと)
print "ok" if ($a ^ $b ^ $c) & !($a & $b & $c)
0535名無しさん@お腹いっぱい。
2001/06/25(月) 05:55ID:???こんなのよく思いつくねえ (´ー`)y−~~
0536名無しさん@お腹いっぱい。
2001/06/25(月) 10:30ID:???if(($a+$b+$c)==1){
処理;
}
0537名無しさん@お腹いっぱい。
2001/06/25(月) 14:27ID:???0538名無しさん@お腹いっぱい。
2001/06/25(月) 14:34ID:???0539531
2001/06/25(月) 16:31ID:CR99XO02ちなみに自分が出していた結論は変数に2が入っていたらそれを2倍して、
$a+$b+$cが1or5or9になっていたら処理を行う、というものでした。
(組み合わせが
1/4/4
1/4/0
1/0/4
1/0/0
のパターンを識別する)
(かな〜り死んでますね。)
うーん・・自分のプログラミング能力に自信が無い(こんなプログラムしか書けない)
のですが、プログラミング能力を伸ばすにはやはり手を動かして
ひたすらプログラムを書いた方が良いのでしょうか?
0540名無しさん@お腹いっぱい。
2001/06/25(月) 16:36ID:???他人の書き方を参考にするのも勉強。
例えばここで出された答えの意味を全部理解できてる?
理解できてなければどうしてそうなるかを勉強する。
理解できるようになったら「こういうやり方もあるんだ」と覚えておく。
もちろんその時に自分で書いてみるのが一番勉強になると思う。
0541名無しさん@お腹いっぱい。
2001/06/26(火) 00:21ID:???要領が掴めていないのにたくさん書いてもよくわからんものができあがるだけ。
まずは人の書いたソースをどうやって動いているか分かるようになるまで読んでみては?
0542名無しさん@お腹いっぱい。
2001/06/26(火) 11:32ID:???自分のソースを添削してもらったほうば楽
0543名無しさん@お腹いっぱい。
2001/06/26(火) 15:14ID:ai8VquTYrename < 現在のファイル名 > , < 変更後のファイル名 > ;
なぜかうまくいかないのです
0544rubbish_lister
2001/06/26(火) 15:31ID:???renameするのにopenの必要は無い。
まず$!を見ること。
Windowsなら$^Eもチェック。
0545名無しさん@MZ-2000
2001/06/26(火) 15:31ID:???「なぜかうまくいかない」というのは状況説明としては最低レベル。
エラーが出るならエラーメッセージを書く。
0546名無しさん@お腹いっぱい。
2001/06/26(火) 15:34ID:???権限無しだろどーせ
0547ななしでお願いします
2001/06/26(火) 17:37ID:MIeivAlo例えば、一つのディレクトリに10000のおファイルをぶち込むのと、
100のディレクトリに、100のおファイルをぶちこむのでは、
どちらがいいのでしょう。
UNIXのおファイルシステムは、線形検索との事ですが、
やっぱり入れすぎはよくないのでしょうか。
0548名無しさん@お腹いっぱい。
2001/06/26(火) 18:18ID:Ml2Xpmsgそのとおり。ディレクトリ検索はファイル数に比例して遅くなる。
単純計算で、1万ファイル×1ディレクトリ内のファイルアクセスは、
100ファイル×100ディレクトリの数十倍の平均時間を要する。
0549547
2001/06/27(水) 00:11ID:???どーもです。
安心した℃です。
0550名無しさん@お腹いっぱい。
2001/06/27(水) 00:23ID:???って優香「お」とか「℃」ってなに?
0551名無しさん@お腹いっぱい。
2001/06/27(水) 01:20ID:FKg3tYUg@a = ("11-22-33","22-33-44","55-66-77","88-99-00","22-44-55");
#a案
foreach(0..$#a) {
(@split) = split(/\-/,$a[$_]);
if($split[0] eq '88'){ print $a[$_]."\n"; }
}
#b案
for(@a){
(@split) = split(/\-/);
if($split[0] eq '88'){ print $_."\n"; }
}
0552名無しさん@お腹いっぱい。
2001/06/27(水) 01:25ID:???foreach (@a){
print "$_\n" if (split '-')[0] eq '88';
}
0553S
2001/06/27(水) 01:35ID:???foreach( @a ){ print $_, "\n" if /^88-/ }
0554名無しさん@お腹いっぱい。
2001/06/27(水) 01:38ID:???print "$_\n" for(grep /^88\-/, @a);
そろそろ限界か?
0555名無しさん@お腹いっぱい。
2001/06/27(水) 02:04ID:IVYsrfFEa案とb案の比較なら当然bがベターだろ。a案は逝ってよし。
0556551
2001/06/27(水) 02:05ID:???速度的にはどれでしょうか?自分で測れってならいいですけど。
0557名無しさん@お腹いっぱい。
2001/06/27(水) 02:19ID:IVYsrfFE自分でベンチマーク実行すれ。
で、結果はここに公開してね。
0558551
2001/06/27(水) 02:22ID:???for(@a){
(@split) = split(/\-/);
if($split[0] eq '88'){ $x = $_; }
}
こんな感じ?
foreach(@a){
if ((split '-')[0] eq '88'){ $x = $_; }
}
こんな感じ?
foreach(@a){ if (/^88-/){ $x=$_; } }
0559名無しさん@お腹いっぱい。
2001/06/27(水) 02:23ID:???x1: 13 wallclock secs (13.05 usr + 0.00 sys = 13.05 CPU) @ 766342.25/s
(n=10000000)
x2: 12 wallclock secs (12.96 usr + 0.00 sys = 12.96 CPU) @ 771724.03/s
(n=10000000)
x3: 13 wallclock secs (12.97 usr + 0.00 sys = 12.97 CPU) @ 771128.93/s
(n=10000000)
x4: 25 wallclock secs (25.47 usr + 0.00 sys = 25.47 CPU) @ 392649.60/s
(n=10000000)
x1=b, x2=c, x3=d, x4=e, print は $x = $_ に変えた。
自明な結論: 細かいことを気にするな。
0560551
2001/06/27(水) 02:31ID:???558の上から、AVG .90sec、AVG .60sec、AVG .25sec です。
次は、一応データをランダムにして測ってみます。
0561551
2001/06/27(水) 02:33ID:???0562551
2001/06/27(水) 02:38ID:???AVG .99sec、AVG .60sec、AVG .60secでした。
0563551
2001/06/27(水) 02:42ID:???0564551
2001/06/27(水) 02:51ID:???0565名無しさん@お腹いっぱい。
2001/06/27(水) 03:10ID:???Perlのベンチマークなら
use Benchmark;
を使うのが定番。便利だよ。>>559の人もこれ使ったんでしょ。
まあやってる内容はtimesで測るのとあまり変わらないけどな。
0566名無しさん@お腹いっぱい。
2001/06/27(水) 04:27ID:???ってのも一応あるんだな
コピペじゃないので間違ってたらすまん
0567
2001/06/27(水) 10:21ID:38kJ5CJwindex.html upload.cgi
edit.cgi tmp/
上のようにサーバAの index.html 内のフォームから
サーバBの upload.cgi を呼び出してファイルを
tmp/ ディレクトリ以下に保存するようにしたあと、
Location: でサーバAの edit.cgi を呼び出して
index.html を書き換えると言うのはありですか?
サーバAはディスク容量は限られているが広告なし、
サーバBはディスク容量無制限だが広告あり、という
状況です。
0568名無しさん@お腹いっぱい。
2001/06/27(水) 11:40ID:POUsw9kMサーバーAからsocket 使っちゃダメなの?
…ってレンタルだから多分無理なんでしょうな。
0569名無しさん@お腹いっぱい。
2001/06/27(水) 20:35ID:???0570名無しさん@お腹いっぱい。
2001/06/27(水) 21:56ID:???アホデスカ?
0571名無しさん@お腹いっぱい。
2001/06/27(水) 22:13ID:???0572名無しさん@お腹いっぱい。
2001/06/28(木) 05:06ID:???0573名無しさん@お腹いっぱい。
2001/06/28(木) 10:22ID:???0574名無しさん@お腹いっぱい。
2001/06/28(木) 12:44ID:???print "hoge";
って1行ずつ出力していくのと、
print <<"EOM";
hoge
EOM
ってまとめて出力していくのはどう違うんだろう。
下の書き方のほうが楽なのに、世の中の多くのスクリプトでは
1行ずつ出力する方式を選んでるってのに疑問が。
やっぱ実行速度とか違うのかな?
0575名無しさん@MZ-2000
2001/06/28(木) 13:04ID:???実行速度はそれとわかるほど変わったりしないと思う。
個人的には下のやりかたのほうがよく使ってるよ。
0576名無しさん@お腹いっぱい。
2001/06/28(木) 13:27ID:???例えばトクトクみたいなところでは別サーバーのデータを読み込むような
スクリプトは禁止されてるよ。
0577名無しさん@お腹いっぱい。
2001/06/28(木) 14:22ID:C.rSbvu.cp copyでさがしたのですが無いような・・
0578名無しさん@お腹いっぱい。
2001/06/28(木) 14:33ID:???#! perl
use File::Copy;
copy("./hogehoge.txt", "./copyhoge.txt");
0579名無しさん@お腹いっぱい。
2001/06/28(木) 15:01ID:???0580名無しさん@お腹いっぱい。
2001/06/28(木) 15:53ID:DvKLUY5Mフォームに書き込んだ文字をログファイルに記録すると言う
単純なものを作りたいのですが
↓のようにやってうまくいきません。どこが間違ってるのでしょうか?
#!/usr/local/bin/perl
#ファイルの読み込み
open(IN, "<./a.dat");
$domo = <IN>;
close(IN);
#ファイルへの書き込み
open(OUT, ">./a.dat");
print OUT $domo;
close(OUT);
$domo = $form{'koumoku'};
# サーバ出力
print <<END;
Content-type: text/html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head><title>ファイルの読み込み</title></head>
<body>
<form action="a.cgi" method="POST">
項目 <input type=text name=koumoku size=30>
<input type=submit value="項目を追加">
</form>
</body>
</html>
END
0581名無しさん@お腹いっぱい。
2001/06/28(木) 16:16ID:???一から勉強しなおせ。
間違ってるなんてもんじゃない。
0582名無しさん@お腹いっぱい。
2001/06/28(木) 16:19ID:???明らかに流れがおかしいよ。
$domoに何が入ってるのか、よく考えながら見直してみ。
0583582
2001/06/28(木) 16:21ID:???>581 とかぶったし。
0584名無しさん@お腹いっぱい。
2001/06/28(木) 16:28ID:???Socketは使えるけど規約で禁止されてるの。
>・その他、コマンド発行を行うCGI
>他サーバーへのアクセスおよび攻撃を目的とするため禁止
>・proxy.cgi 系のCGI もしくはそれを含むパッケージ
>・whois.cgi 系のCGI もしくはそれを含むパッケージ
>・flood.cgi 系のCGI もしくはそれを含むパッケージ
>・sendmail.cgi 系のCGI もしくはそれを含むパッケージ
>・その他、他サーバーへのアクセスを行うCGI
>上記CGIを設置の場合は一切の警告なしにアカウント削除を行います。
>>580
よぉく見てみよう。
データを読み込んでからデータを書き換える前に書き込みをしていないかい?
これじゃあ読み込んだデータをそのまま何の手も加えずに書き込み直す事になるよ?
0586580
2001/06/28(木) 16:43ID:DvKLUY5Mドキュンな質問ですいません・・・
#!/usr/local/bin/perl
# サーバ出力
print <<END;
Content-type: text/html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head><title>ファイルの読み込み</title></head>
<body>
<form action="a.cgi" method="POST">
項目 <input type=text name=item size=30>
<input type=submit value="項目を追加">
</form>
</body></html>
END
$domo = $form{'item'};
#ファイルへの書き込み
open(OUT, ">./a.dat");
print OUT $domo;
close(OUT);
0587名無しさん@お腹いっぱい。
2001/06/28(木) 16:46ID:???とあるのに「ちょっと書き直した」だけで動くと思うなよ(藁
0588名無しさん@お腹いっぱい。
2001/06/28(木) 16:47ID:???>>2のリンクからお勉強サイトに行って勉強してきなさい。
基礎の基礎がなってない。
ここにいる人間だって数字を知らない人間に足し算を教えることは
できないんだよ。
数字から順に教える人間もいないと思うし。
まずは自分で勉強する。
その場は>>2に用意されている。
0589580
2001/06/28(木) 16:53ID:DvKLUY5M0590名無しさん@MZ-2000
2001/06/28(木) 16:54ID:???>>2 で Perl を学べてもどうしようもないような気がする。
「サーバ出力」「ファイルの読み込み」が謎すぎ
0591名無しさん@お腹いっぱい。
2001/06/28(木) 17:06ID:???0592名無しさん@お腹いっぱい。
2001/06/28(木) 17:08ID:???勘違いかな?
0593名無しさん@お腹いっぱい。
2001/06/28(木) 17:11ID:???0594名無しさん@お腹いっぱい。
2001/06/28(木) 17:21ID:???初心者はデコードとか自力でやんないで
素直にCGI.pm使ったほうが幸せなんじゃないかね。
$domo = $form{'item'}
↓
use CGI;
$domo = CGI::new()->param('item');
0595名無しさん@お腹いっぱい。
2001/06/28(木) 18:55ID:???激しく同意!
中途半端なレス不要
最後まで丁寧に教えるか放置推奨
0596名無しさん@お腹いっぱい。
2001/06/28(木) 19:57ID:???といって放置しちゃいつまでたっても厨房のままだから、勉強の方法を教えてるんじゃないか。
0597名無しさん@お腹いっぱい。
2001/06/28(木) 20:30ID:???それが中途半端なお節介って言うんだよ
0598名無しさん@MZ-2000
2001/06/28(木) 20:35ID:???0599名無しさん@お腹いっぱい。
2001/06/28(木) 20:41ID:???放置すればいいだろ?
お前の理想の2chはここには無い!
0600名無しさん@お腹いっぱい。
2001/06/28(木) 20:48ID:???以前ドキュソな質問をして煽られた事を根に持つ厨房
0601名無しさん@お腹いっぱい。
2001/06/28(木) 21:51ID:???0602名無しさん@お腹いっぱい。
2001/06/28(木) 21:53ID:???0603名無しさん@お腹いっぱい。
2001/06/28(木) 22:02ID:???いや、俺には支障無いけど基本的には>>595や>>599に賛成である
ここは初心者コーナー。無知な人間こそ積極的に参加するべきである
0604名無しさん@お腹いっぱい。
2001/06/29(金) 00:01ID:dTFZ7jKsダブりがないかをチェックしたいのですが、いろいろやったのですがどうも
うまくいきません。
なにかよいスクリプトがありましたら、教えていただけるとうれしいです。
ちなみに、こんな感じで生成しています。
srand;
for (0..$place-1) {
$rand[$_] = int(rand(9))+1;
}
# $place = ケタ数
0605名無しさん@お腹いっぱい。
2001/06/29(金) 00:03ID:???999 とかはNGで、566 とか 583 とかはOKってこと?
0606604
2001/06/29(金) 00:25ID:dTFZ7jKs説明不足ですいません。
999,566はNG、583はOKです。
昔、女神転生っていうゲームであったコードブレイカーっていうゲーム
なんですよー。だれも知らないだろうけど。
0607名無しさん@お腹いっぱい。
2001/06/29(金) 00:25ID:???my $nums;
srand;
for (0 .. $place - 1) {
while (1) {
$num = int(rand(9)) + 1
if ($nums !~ /$num/) {
$nums .= "\0$num";
last;
}
}
}
my @rand = split(/\0/,substr($nums,1));
なんか汚い・・
0609名無しさん@お腹いっぱい。
2001/06/29(金) 00:35ID:wJE5mVUE解説きぼん
0610名無しさん@お腹いっぱい。
2001/06/29(金) 00:43ID:???ヒットアンドブローで探せばいろいろ見つかるかも
0611_gunzip
2001/06/29(金) 00:58ID:???#--------------------------------------------------------
# ハッシュ%mapをスライスで一気に初期化
#--------------------------------------------------------
# @rand = (7,5,9,1,0) の時、(重複無し)
# $map{'7'} = $map{'5'} = $map{'9'} = $map{'1'} = $map{'0'} = undef
# %map のキー数 = 5, @rand の要素数 = 5
#--------------------------------------------------------
# @rand = (8,8,4,3,2) の時、(重複在り)
# $map{'8'} = $map{'4'} = $map{'3'} = $map{'2'} = undef
# %map のキー数 = 4, @rand の要素数 = 5
#--------------------------------------------------------
@map{ @rand } = ();
# ハッシュ%map のキー数と元の配列の要素数が等しければ、重複は無い。
if(keys %map == @rand){
# ok
}
0612rubbish_lister
2001/06/29(金) 01:00ID:???Perlらしいからいいか (´ー`)y-┛~~
1 while( (join("", sort(split //, $n = int( rand(999) )))) =~ /(\d)\1/ );
print $n;
私も>>608のスクリプトの解説きぼんぬ。
0613rubbish_lister
2001/06/29(金) 01:02ID:???なるほど>>611
0614604
2001/06/29(金) 01:27ID:???>>608
ありがとうございます。おかげでとりあえず完成させることができました。
まだPerlを触りだしたばかりなので、_gunzipさんの方は理解できませんでしたが、
これから勉強していこうと思います。
ちなみに、こんな感じになりました。プログラム初心者なので笑わないように(w
ttp://members.tripod.co.jp/up_for_2ch/test2.txt
0615名無しさん@お腹いっぱい。
2001/06/29(金) 02:19ID:fQQ8ciRQ入力すると"Who are you?"、数字を入力すると"Type the letters"となるように
したいのですが、どうしてもうまく行きません。
elsif ( $input != /\w/)だとうまく行きます。しかし
elsif ( $input == /\W/)やelsif ( $input == /\d/)
だと全く意図しない結果が出てしまいます。
具体的には
elsif ( $input == /\W/)やelsif ( $input == /\d/)
数字を入力すると"Who are you?"
HOGE以外の文字だと"Type the letters"
なぜこうなってしまうのか教えてください。また、elsif ( $input == //)の
形で、//のところに/dを入れて意図した結果を得るのはどうすれば良いのでし
ょうか?
#!/usr/bin/perl -w
$test = "HOGE";
print "What is your name?: ";
chomp ( $input = <STDIN> );
if ( "$input" eq "$test" ) {
print "Hello,$input\n";
} elsif ( $input == /\d/ ) {
print "type the letter\n";
} else {
print "Who are you?\n";
}
__END__
0616名無しさん@マジ教えてください
2001/06/29(金) 02:26ID:GZ8oljgsechoでリダイレクトするみたいに、、
やり方教えてください。
0617名無しさん@お腹いっぱい。
2001/06/29(金) 02:39ID:???正規表現の表記方法って知ってる?
elsif ( $input !~ /\w/)
elsif ( $input =~ /\W/)
elsif ( $input =~ /\d/)
0618名無しさん@お腹いっぱい。
2001/06/29(金) 03:00ID:???system('echo >foo.dat Hello');
or
open OUT, '>foo.dat';
print OUT 'Hello';
close OUT;
0619名無しさん@お腹いっぱい。
2001/06/29(金) 03:02ID:???>>618さんの後者のやり方の場合
ディレクトリのパーミッションを変え忘れないようにね。
0620名無しさん@マジ教えてください
2001/06/29(金) 03:22ID:GZ8oljgsこれからやってみます。
0621615
2001/06/29(金) 03:25ID:fQQ8ciRQやっと意味が分かりました。
すんません。
0622616
2001/06/29(金) 03:51ID:GZ8oljgsファイルを固定の名前にしても作成されませんし、書き込みもされません。
最終的には、配列の名前をくみ合わせた名前でファイルを作成して
そこに別の配列の内容を書き込みたいんですが、可能なのでしょうか?
0623名無しさん@お腹いっぱい。
2001/06/29(金) 03:54ID:???0624616
2001/06/29(金) 03:54ID:GZ8oljgs$FORM{'namae'}_$zikan.txtみたいなファイルを作り、そこに
$NyuryokuNaiyoを書きこむということをしたいと考えています。
どうやったらいいんでしょうか?
0625616
2001/06/29(金) 03:55ID:GZ8oljgs0626名無しさん@お腹いっぱい。
2001/06/29(金) 04:05ID:???0627名無しさん@お腹いっぱい。
2001/06/29(金) 04:06ID:???0628616
2001/06/29(金) 04:20ID:GZ8oljgsエラーがでないんです。CGIの一部で、CSVにFORMの内容を時系列で(当たり前ですか)書き出すようにつくって、
そのバックアップ用に各々FORMの内容を保存しようと考えたんです。
で、理由はわかりませんが、ブラウザで見る限りエラーは表示されません。
また、WINDOWSでパーミッションを変更する方法を知りません。今、探してるんですが。
FTPでは777になっているんですが、WINDOWSでは無理ということだったのでしょうか、、
0629名無しさん@お腹いっぱい。
2001/06/29(金) 04:48ID:w2xN.oIEIISがわかる奴ここは少ないからなあ。おれも知らない。
とりあえずエラー補足用に
use CGI::Carp qw(fatalsToBrowser);
をスクリプトの最初に入れて、
open(OUT, '>foo.dat') or die "$!";
とでもしてエラーメッセージ出してみたら。
0630名無しさん@お腹いっぱい。
2001/06/29(金) 05:33ID:???ローカルでデーモンとか使ってる可能性も。
0631名無しさん@お腹いっぱい。
2001/06/29(金) 12:23ID:???Win鯖って事はパスミスじゃないか?
相対パスじゃなくて絶対パスで試してみたら?
あと、""の中で使うなら、\を\\にするのを忘れないようにな。
open OUT, ">c:\\inetpub/wwwroot/user/cgi-bin/$FORM{'namae'}_$zikan.txt";
print OUT "$NyuryokuNaiyo";
close OUT;
0632名無しさん@お腹いっぱい。
2001/06/29(金) 12:24ID:gTGq9vOIファイルを読み込むにはどうしたらいいでしょうか。
open(READ,'/my/file');
push(@line,$_) while (<READ>);
close(READ);
としてますが・・・
0633名無しさん@お腹いっぱい。
2001/06/29(金) 12:29ID:???open(READ,'/my/file');
@line = <READ>;
close(READ);
0634名無しさん@お腹いっぱい。
2001/06/29(金) 12:30ID:???ファイル内容の書き換えがないなら
open(READ,'/my/file');
while (<READ>){
処理
}
close(READ);
の方がメモリは食わないと思う
0635名無しさん@MZ-2000
2001/06/29(金) 13:49ID:???0636名無しさん@お腹いっぱい。
2001/06/29(金) 14:47ID:6bTr92VU(flock以外しりません
特徴なども教えてもらえるとありがたいです。
0637名無しさん@お腹いっぱい。
2001/06/29(金) 15:12ID:???0638名無しさん@お腹いっぱい。
2001/06/29(金) 16:13ID:???では、flockが使えない場合、何を使用すればいいのでしょうか?
見極め方も教えてもらえると非常にありがたいです。
0639名無しさん@お腹いっぱい。
2001/06/29(金) 17:12ID:6dQwBEa6逆に例えば2001年,6月,29日,18時,30分,15秒みたいなモノから
time()を使った様な秒数って取れるのですか?
7月1日以降はコレを表示って感じのものをやりたいんです。
0640名無しさん@お腹いっぱい。
2001/06/29(金) 17:25ID:???380 名前:JAPU 投稿日:2001/04/30(月) 21:19
NAME
Time::Local - efficiently compute time from local and GMT time
SYNOPSIS
$time = timelocal($sec,$min,$hours,$mday,$mon,$year);
$time = timegm($sec,$min,$hours,$mday,$mon,$year);
# 使うときは、use Time::Local; するように。
JAPUさんいつもありがとうございます。
0641ピーちゃん
2001/06/29(金) 17:33ID:okzsTr02変数名を変数で制御する方法を、どなたかお教え下さいますでしょうか。
お願いします。
0642名無しさん@お腹いっぱい。
2001/06/29(金) 17:34ID:???${$hensu}
0643なり
2001/06/29(金) 19:27ID:???例えば200まで来たら数値を0に戻すというようなことがしたいのですが。
$countfile = "./count.log";
というファイルにカウンタ値を格納していっているのですが
count.logの中身を0に戻すやり方を教えてください。
0644名無しさん@お腹いっぱい。
2001/06/29(金) 19:39ID:???IO::File->new('>./count.log')->print(0);
0645なり
2001/06/29(金) 20:13ID:???ただ自分はほんとに初心者向けの本しか持ってなく
use IO::File;
については解説がなくよくわかりませんでした。すいません。
200以上って場合は200という数値は
どこに記入すればよいのでしょうか。
0646名無しさん@お腹いっぱい。
2001/06/29(金) 20:25ID:???IO::File->new('>./count.log')->print(200);
0647名無しさん@お腹いっぱい。
2001/06/29(金) 20:53ID:T5IdSdfg大きな利点はなんでしょうか?
モジュールを使うことによっての、悪い点はないのでしょうか?
ご教授ください。
open(FILE,">$countfile"}
flock(FILEOUT,2);
print(FILE '0');
close(FILE);
0648名無しさん@お腹いっぱい。
2001/06/29(金) 22:37ID:???簡単な事だからこそ標準モジュールで
てっとりばやく済まそうってことでしょ。
初心者の人もIOモジュールの使い方ぐらいは
早めに覚えとくといいっすよ。
0649名無しさん@お腹いっぱい。
2001/06/29(金) 23:11ID:???モジュールは無関係だが、目をふさぎたくなるような酷いコードだな。
openの末尾はタイポとしても、酷さは変わらないぞ。
0650なり
2001/06/29(金) 23:32ID:???明日本屋でも行って調べてみます。
0651名無しさん@お腹いっぱい。
2001/06/30(土) 00:04ID:???ここは読み書き両方にしたほうがいいよ。flockの意味がない。
0652647
2001/06/30(土) 01:12ID:???マジレスありがとう。モジュールを使うと遅くなるとかは関係有りませんか?
>649 651
つっこみありがとう。わざとでした。スマン。
0653名無しさん@お腹いっぱい。
2001/06/30(土) 02:32ID:???オブジェクト指向なモジュールは特にそう。
だが、簡単なものなら速度より簡潔さを重視するし、
そうでない場合も自分で書くより正確なことが多いので多用するね。
ただし、IO::*モジュールは簡単な一発もの以外では使わない。俺はね。
0654名無しさん@お腹いっぱい。
2001/06/30(土) 03:46ID:piXvKdHwどこがいけないんでしょうか?
0655名無しさん@お腹いっぱい。
2001/06/30(土) 03:59ID:???「インストールできないんですが」で原因わかるわけねーだろ!
だいたいActivePerl-522て何だっけ? 古すぎてわからんよ。。。
とりあえず最新版入れろ。
0656名無しさん@お腹いっぱい。
2001/06/30(土) 04:13ID:piXvKdHwシステムレジストリがどうのってでてるんだが。
0657名無しさん@お腹いっぱい。
2001/06/30(土) 04:14ID:???それを書くのが一番。
0658名無しさん@お腹いっぱい。
2001/06/30(土) 04:23ID:piXvKdHwあなたはシステムレジストリでHキーローカルマシーンへ書き込む
パーミッションをもっていない。
とかいてあるらしい。
0659名無しさん@お腹いっぱい。
2001/06/30(土) 04:46ID:coQpTjskWin2000やWinNTで、Administrator以外の一般ユーザでログインした状態で
インストールしたときと出てきそうなエラーメッセージだな。
0660名無しさん@お腹いっぱい。
2001/06/30(土) 05:16ID:9uBIGUjkどうすりゃいいのよ?
0661名無しさん@お腹いっぱい
2001/06/30(土) 05:34ID:G8StaOtQ別々のページに振り分けるものを作ろうとしているのですが・・・
困っています。
条件に一致するならPRINTで@のHTML部分を出力して
一致しないならAのHTML部分を出力するように記述していますが
一致しない場合のHTMLが404になってしまいます。
何がいけないのでしょうか?
Perl厨房で申し訳ありません・・・
0662名無しさん@お腹いっぱい。
2001/06/30(土) 09:22ID:???何故かって?
それはファイルが存在しないから。
#機種依存文字を使うのやめれ。
0663:名無しさん@お腹いっぱい
2001/06/30(土) 09:51ID:G/0pMLQwレスどうも。
エラーコードの意味はわかるのですが
なぜ404になってしまうのかが解決できません。
現状ではindex.cgiというスクリプト中に
ページ1とページ2のHTML記述をして出力させるようにしているのですが
両ページの記述方法は同じなのになぜ
後者の方の場合だけ出力されないのでしょうか?
よろしくお願いします
0664昆布茶
2001/06/30(土) 10:37ID:???0665名無しさん@お腹いっぱい
2001/06/30(土) 11:17ID:G/0pMLQwつい先日からperlをはじめたので恐縮なのですが
スクリプトを公開しますのでどうかよろしくお願いします。
http://www.geocities.co.jp/Technopolis/6437/index.txt
スクリプトに関するお叱りはありがたいですが
スクリプト以外のことでの誹謗中傷はご遠慮ください。
0666名無しさん@お腹いっぱい。
2001/06/30(土) 11:49ID:???ざっと見た感じだけど、
# if ($ENV{'HTTP_REFERER'} eq $_){
こういうところで、改行コードを除外してないから
flagが1にならないんじゃないか?
それでflagが0でも1でもないから何も表示されないとか。
末尾を
#HTML出力部分
if($flag == 0){
print "$accept";
}elsif(flag == 1){
print "$deny";
}else{
print "$error";
}
とかにしてみるのがよさげ。
0667名無しさん@お腹いっぱい。
2001/06/30(土) 11:53ID:???$flag の $が抜けてるよ。
0668667
2001/06/30(土) 11:55ID:???チェック抜けるんだね…鬱…
0670名無しさん@お腹いっぱい。
2001/06/30(土) 12:00ID:???iモードの絵文字に悩まされてます、絵文字を除去するにはどうすれば
いいのでしょうか?
0671E_ERROR
2001/06/30(土) 12:05ID:???サーバに上げて見たけど動くんですよね。こっからどうしたいのかな?
強制的にリファ送ったけど認識するし。
>スクリプト以外のことでの誹謗中傷
若し機種依存文字の件だったら662さんは間違った事は言ってないかと。
Script書く上で文字コード・機種依存文字の問題はかなり難しい件であり、
各所でそのネタは重視されています。MLにも入って見れば、ウザイ
ぐらいそれ系のネタは飛び交ってます。
いっぱしのScript書きを目指すならその辺の認識は重要かと私は思うのですが?
その類のネタは知りたかったらすぐ見つかるので検索して勉強する事を
お勧めしますよ。
実は今書きたかったのはこっち(笑)。
私もどっちかというと趣味Script書きなんでへぼなんですわ。
0672E_ERROR
2001/06/30(土) 12:09ID:???なるほど、ぱっと見で気づかんあほの私もなんだか。
PHPに嵌り切ってるからPerl忘れてるって言い訳しても通じなさそう。
暑い中逝って来ます…。
0673661
2001/06/30(土) 13:00ID:???あとここからは自分で勉強して解決しようと思います。
ご意見のほう参考になりました。
レスくれた方々どうもありがとうございました。
0674名無しさん@お腹いっぱい。
2001/06/30(土) 13:16ID:???ttp://www.specters.net/cgipon/labo/it_emoji.html
聞く前に検索くらいしよう。
http://www.google.com/search?q=%22i-mode%22+%8AG%95%B6%8E%9A&btnG=Google+%8C%9F%8D%F5&hl=ja&lr=
Googleで1発だ。
これじゃ初心者丸出しだろ?
0675名無しさん@お腹いっぱい。
2001/06/30(土) 14:03ID:???お恥ずかしい限りです、ありがとうございました。
0676名無しさん@お腹いっぱい。
2001/06/30(土) 14:28ID:???おれもMSI形式のActivePerlがインストールできなかったことがある。
ASPackage形式のやつだとインストールできた。
いやあんときはWin2kじゃなくてWin98使ってたんだっけかな?
0677名無しさん@お腹いっぱい。
2001/06/30(土) 14:48ID:???ファックス送信するモジュールとかあります?
0678654
2001/06/30(土) 15:31ID:9uBIGUjk0679ピーちゃん
2001/06/30(土) 16:26ID:VUBp7HbU変数名を変数で制御する方法をどなたかお教え下さいますでしょうか。
0680名無しさん@お腹いっぱい。
2001/06/30(土) 16:30ID:???うちも Win2Kで、APi522e.exeで入れたけど
特に詰まった覚えはないよ。
ちなみにその他の関係しそうな環境。
Apache1.3.14 + PHP4.0.5
何か他のがわるさしてるとか?
0681名無しさん@お腹いっぱい。
2001/06/30(土) 16:31ID:???別スレで同じ事言ってなかったか?
レスが付いていた気がするが。
0683ピーちゃん
2001/06/30(土) 16:37ID:VUBp7HbU詳しいことはここで聞いてくださいと言われましたので。
0684ピーちゃん
2001/06/30(土) 16:39ID:VUBp7HbU答えてくださった方もいましたね。
申し訳ありません。
0685名無しさん@お腹いっぱい。
2001/06/30(土) 17:09ID:6E6G/3mk自分もMSI形式がインストール出来ない事がありました。
2〜3日後に再ダウンロードしたら無事にインストール出来ましたけど。
大きなファイルの時、こういう事って結構ある様な気が・・・。
0686678
2001/06/30(土) 17:55ID:9uBIGUjkとりあえずオーエス再インストールするよ。
0687名無しさん@お腹いっぱい。
2001/06/30(土) 19:39ID:thezcsscjcode.plと違う、Jade.pmの書き方を使いたいのですが。
0688名無しさん@お腹いっぱい。
2001/06/30(土) 20:17ID:???IDかこいい!
0689名無しさん@お腹いっぱい。
2001/06/30(土) 20:31ID:thezcsscJcode.pmの使い方、日本語で解説してあるところありませんか?
jcode.plと違う、Jcode.pmの書き方を使いたいのですが。
スペル間違ってました。
0690名無しさん@お腹いっぱい。
2001/06/30(土) 20:42ID:???0691名無しさん@お腹いっぱい。
2001/06/30(土) 21:12ID:???my $jstr = Jcode->new("string");
print $jstr->xxx; # xxx = sjis, euc, jis, utf8
print Jcode->new("string")->xxx;
print jcode("string")->xxx;
だが俺は専らconvertしか使わない。
print Jcode::convert("string", "sjis");
0692名無しさん@お腹いっぱい。
2001/06/30(土) 21:44ID:???ありがとうございます。
http://www.netfort.gr.jp/%7Ekiyoka/jcode_intro/index.html
ユーザーサイト
Jcodeを使おう(実用本位のJcode紹介)
こことか見てたんですがよくわからなくて
0693名無しさん@お腹いっぱい。
2001/06/30(土) 22:28ID:???0694名無しさん@お腹いっぱい。
2001/06/30(土) 22:56ID:???具体的にどんなことが知りたいの?
ちょっと抽象的すぎてよく分からない。
0695名無しさん@お腹いっぱい。
2001/06/30(土) 22:57ID:FLPQLr3kできるのでしょうか?
手元にパソコンが3台もあるわけがなく、確認しようがないんですので、
スマソ。
0696ヽ(´ー`)ノ
2001/07/01(日) 01:25ID:4azTXvJ2↓ココのメーラーなんですけど、
http://ipveov.virtualave.net/hope/index.html
どうやって使うんですか?
管理人が放置してるみたいなんで
だれか教えてくださいm(_ _)m
0697楽しいCGI
2001/07/01(日) 01:42ID:???--------使い方が判らないものは使わないようにしましょう--------
0698名無しさん@お腹いっぱい。
2001/07/01(日) 07:27ID:???ファイルの使い方が和歌欄所〜!
0699名無しさん@お腹いっぱい。
2001/07/01(日) 10:45ID:???Perl Module
0700名無しさん@お腹いっぱい。
2001/07/01(日) 14:00ID:jQM8Nz7Eディレクトリ内のファイル一覧を表示するのに
#!usr/local/bin/perl
print "Content-type: text/html\n\n";
print <<"HEAD";
<html><head><title>ichiran</title>
</head><body>
HEAD
opendir(DIR,"./");
@list=readdir(DIR);
close(DIR);
@list=sort(@list);
foreach(@list){
print "$_<br>\n";
}
print "</body></html>";
exit;
という風に書いてローカルで動かしたところ、ちゃんと動いたので
サーバにアップロードして動かしてみたところエラーになって
しまいます。原因はなんなんでしょう?くだらない質問かもしれ
ませんがご教授願います。
ローカル:Win、ANHTTPd、Active Perl
アップ先:hypermart.net
0701'
2001/07/01(日) 14:28ID:???0702名無しさん@お腹いっぱい。
2001/07/01(日) 15:11ID:???#!/usr/local/bin/perl
0704名無しさん@お腹いっぱい。
2001/07/02(月) 00:09ID:???Content-type: image/png ?
0705名無しさん@お腹いっぱい。
2001/07/02(月) 00:27ID:???可能だろ。
っつか、一度試行すればわかるだろうが。
0706JAPU
2001/07/02(月) 07:49ID:???0707名無しさん@お腹いっぱい。
2001/07/02(月) 16:31ID:???iモードの絵文字をHTMLで表示するのはわかったんだけどメールで
表示する場合ってどうすればいいんでしょう?
0708名無しさん@お腹いっぱい。
2001/07/02(月) 19:03ID:???受信?
メーラーは?
0709名無しさん@お腹いっぱい。
2001/07/02(月) 20:50ID:wG0apBZwディレクトリ構造を教えてください
0710名無しさん@お腹いっぱい。
2001/07/02(月) 21:05ID:???ちょっと解らないところがあるのです。
$kinsi='うひ';
@kinsiword = (
'死',
'殺',
);
sub kinsi {
foreach (@kinsiword) {
$com =~ /$_/gi;
$com =~ s/$_/$kinsi/gi;
}
}
コレで送られてきたメッセージ内 ($com) の文字は上手く置換できるのですが、
@kinsiword = (
'',
);
とすると、表示がおかしくなります。
例えば、$com が あ なら、 うひb、ひうひ という風に。
空の文字が配列内にあっても何も起こらないようにするにはどうしたら良いのでしょうか。
0711名無しさん@お腹いっぱい。
2001/07/02(月) 21:05ID:???ちょっと解らないところがあるのです。
$kinsi='うひ';
@kinsiword = (
'死',
'殺',
);
sub kinsi {
foreach (@kinsiword) {
$com =~ /$_/gi;
$com =~ s/$_/$kinsi/gi;
}
}
コレで送られてきたメッセージ内 ($com) の文字は上手く置換できるのですが、
@kinsiword = (
'',
);
とすると、表示がおかしくなります。
例えば、$com が あ なら、 うひb、ひうひ という風に。
空の文字が配列内にあっても何も起こらないようにするにはどうしたら良いのでしょうか。
0712見習い君
2001/07/02(月) 21:17ID:???if ($kinsiword[0]) { &kinsi; }
てな感じに呼ぶ。
0713名無しさん@お腹いっぱい。
2001/07/02(月) 21:25ID:???@kinsiword = (
'死',
'殺',
'',
'',
);
のような形にも対応させたいのです。
見習い君氏の方法では、やはり同じ結果になるのですよ。
0714名無しさん@お腹いっぱい。
2001/07/02(月) 21:29ID:???sub kinsi {
if ($kinsiword[0]) {
foreach (@kinsiword) {
if ($_){
$com =~ /$_/gi;
$com =~ s/$_/$kinsi/gi;
}
}
}
}
お騒がせして申し訳ない。
0715名無しさん@お腹いっぱい。
2001/07/02(月) 21:29ID:???sub kinsi {
if ($kinsiword[0]) {
foreach (@kinsiword) {
if ($_){
$com =~ /$_/gi;
$com =~ s/$_/$kinsi/gi;
}
}
}
}
お騒がせして申し訳ない。
0716名無しさん@お腹いっぱい。
2001/07/02(月) 21:31ID:???0717名無しさん@お腹いっぱい。
2001/07/03(火) 00:10ID:iSdl1db6コンパイルなどしてバイナリファイル化(もしくは簡単に読めない化)
する良い方法をご存知の方はいらっしゃいますか?
ちょっと調べてperlccっていうのを見つけたのですが、マニュアルによると、
実験レベルで製品などには使用しないようにと注意書きがあって使用を
躊躇しています。
実はお客さんに、Perlのスクリプトが入ったRedHatベースのLINUXマシンを
提供するのですが、中のPerlスクリプトは、簡単には解析してほしくない
事情があります。
最初からCなどでCGIを作ればよかったのですが、今となっては、
その時間もなく。。。らら〜、先見性のなさに、困っています。
0718名無しさん@お腹いっぱい。
2001/07/03(火) 00:20ID:???「素人には分からない」ってのなら幾つか方法はあるがな。
0719717
2001/07/03(火) 00:45ID:iSdl1db6解析するの気力を失わせるだけでも、やる意義はあります。
よろしければ、「素人には分からない」方法のヒントを教えてくださーい。
0720名無しさん@お腹いっぱい。
2001/07/03(火) 01:13ID:???0721名無しさん@お腹いっぱい。
2001/07/03(火) 02:34ID:???# 簡易エンコード/デコードツール hperl
use strict;
my($encode, $decode, $hperl);
while(@ARGV and $ARGV[0] =~ s/^-//){
foreach (shift){
/e/ and $encode++, last;
/d/ and $decode++, last;
/h/ and ($hperl = shift), last;
}
}
if($encode){
print "#!$hperl\n" if $hperl;
while (<ARGV>){
tr[a-zA-MN-Z0-9* _\t<>{}'"\n$:?][N-ZA-Mn-za-m5-90-4 *\t_}{><"'$\n?:];
print;
}
}elsif($decode){
while (<ARGV>){
$. == 1 and /^#!.*hperl$/ and next;
tr[N-ZA-Mn-za-m5-90-4 *\t_}{><"'$\n?:][a-zA-MN-Z0-9* _\t<>{}'"\n$:?];
print;
}
}else{
open PERL, "|$^X -";
while (<ARGV>){
$. == 1 and /^#!.*hperl$/ and next;
tr[N-ZA-Mn-za-m5-90-4 *\t_}{><"'$\n?:][a-zA-MN-Z0-9* _\t<>{}'"\n$:?];
print PERL;
}
close PERL;
}
__END__
$ hperl -e foo.pl >foo.hpl # エンコード
$ hperl -d foo.hpl >foo.pl # デコード
$ hperl foo.hpl # エンコードしたスクリプトを実行(但しスクリプト名はあてにしないこと)
$ hperl -h /foo/bar/hperl -e foo.pl >foo # -h のあとにhperlのPATHを書いておく
$ foo # 実行可能スクリプト(CGIとしての動作も可能?)
これで生のスクリプトは読めない。
0722709
2001/07/03(火) 10:08ID:XVjOTMAwWAKWAK(http://www.wakwak.ne.jp)では
CGIスクリプトや自作モジュールの設置場所を/cgi-bin/直下に限定しています
×/cgi-bin/my_module/hoge.pm
○/cgi-bin/hoge.pm
LWPモジュール群(libwww-perl-5.53_94)を展開すると
/cgi-bin/以下にサブディレクトリが作成されるのでWAKWAKでは動作しないのです
require '/cgi-bin/my_module/hoge.pm';
や
BEGIN {unshift(@INC,'/cgi-bin/my_module/');}
use hoge.pm;
では使えませんでした
ディレクトリ構造を無視して全ファイルを/cgi-bin/に移動しようと思っても
同名ファイルが存在するので上手くいきません
どうすればよいでしょうか?
0723名無しさん@お腹いっぱい。
2001/07/03(火) 10:12ID:???あと、かりに BEGIN {unshift(@INC,'/cgi-bin/my_module/');} がうまくいってても、
use hoge.pm; じゃ無理。
use hoge; ね。
0724>>wakwak"管理人"
2001/07/03(火) 17:14ID:???0725名無しさん@お腹いっぱい。
2001/07/03(火) 17:16ID:???0726名無しさん@お腹いっぱい。
2001/07/03(火) 17:18ID:???ルート直下のcgi-bin使ってんのか?
0727名無しさん@お腹いっぱい。
2001/07/03(火) 21:01ID:???0728名無しさん@お腹いっぱい。
2001/07/03(火) 21:30ID:???0729名無しさん@お腹いっぱい。
2001/07/03(火) 22:26ID:???require './omaemona.txt'
require '/omaemona.txt'
require 'omaemona.txt'
cgi-bin以下にあるスクリプト限定なら同じだろ?
まー意地悪な設定ならエラー扱いされるけど
0730名無しさん@お腹いっぱい。
2001/07/03(火) 22:32ID:???行の先頭に中黒が付いてたらリストとみなして、
<p>ほげ</p><p>・リスト1<br>・リスト2<br>・リスト3<br></p><p>ほげ・ほげ<br>・りすと4</p>
<p>ほげ</p><ul><li>リスト1</li><li>リスト2</li><li>リスト3</li></ul><p>ほげ・ほげ</p><ul><li>リスト4</li></ul>
というようなことをしたいのです。
どうにか良い方法は無いでしょうか。
0731名無しさん@お腹いっぱい。
2001/07/03(火) 22:33ID:???4行目を6行目の様にしたいってことです。
0732238
2001/07/03(火) 22:37ID:???0733732
2001/07/03(火) 22:38ID:???0734名無しさん@お腹いっぱい。
2001/07/03(火) 22:42ID:???あー、さらに追記です。
・リスト3<br></p> のような <br></p> や <p><br> などは段落置換処理を行なって出ないようにしてます。
#ちなみに <br> が複数続くことも無いです。
0735見習い君
2001/07/04(水) 00:27ID:???元ファイルの構成がイマイチ判らないんだけど…
こんな感じかなぁ。。恥かしい処理だ。。
foreach $line (@lines) {
$line =~ s/^・(.*)/<ul><li>$1<\/li><\/ul>/;
$new .= "$line\n";
}
$new =~ s/<\/li>(<\/ul>\n<ul>)?<li>/<\/li>\n<li>/g;
print <<"EOE";
Content-type: text/html
$new
EOE
exit;
@linesにファイル入れてね。
0736rubbish_lister
2001/07/04(水) 01:06ID:???0737rubbish_lister
2001/07/04(水) 01:08ID:???s/\//;→s/\///;
0738名無しさん@お腹いっぱい。
2001/07/04(水) 08:49ID:???ありがとうございます。
でもちょっと出来なかったです。
構成っていうとどの辺りを書けば良いんでしょうか。
書きこみ処理はまんま KENT の Aska BBS v1.51 です。
というか Aska を改造してるのですけど…
http://members.nbci.com/nfvxsd/cgi.txt
ここに置いておくので、宜しければ見て下さい。
# 重くて開かない時もあります…
0739見習い君
2001/07/04(水) 09:37ID:???foreach $line (@lines) {
$line =~ s{^・(.*)}{<ul>\n<li>$1</li>\n</ul>};
$new .= "$line\n";
}
$new =~ s{</li>\n(</ul>\n<ul>)\n<li>}{</li>\n<li>}g;
こんな感じになるんかな?
0741名無しさん@お腹いっぱい。
2001/07/04(水) 09:56ID:???@lines にファイルを入れるということで、
@lines = $com; #com はデータ (タイトルや投稿者、メッセージなど)
としました。
0742見習い君
2001/07/04(水) 17:20ID:???行の先頭に「・」がくるって言ったくせに・・・(;;)
0743名無しさん@お腹いっぱい。
2001/07/04(水) 17:31ID:???申し訳ないです、説明不足でした…
0744見習い君
2001/07/04(水) 17:57ID:???$com =~ s{>・([^<].*?)<}{><ul><li>$1</li></ul><}g;
$com =~ s{</ul><br><ul>}{}g;
時間かかっちゃった(-▽-;
0745名無しさん@お腹いっぱい。
2001/07/04(水) 18:24ID:???完璧です、素晴らしい。
ありがとうございました、今度はこれを解析して学習してみようと思います。
#実はどういう処理してるか解らない(汗
0746見習い君
2001/07/04(水) 21:36ID:???0747名無しさん@お腹いっぱい。
2001/07/04(水) 23:29ID:???g と i は解るが、o は未だに解らない…
0748名無しさん@お腹いっぱい。
2001/07/04(水) 23:54ID:???パターンを1回だけコンパイルする
と青ラクダ本に書いてある
0749名無しさん@お腹いっぱい。
2001/07/05(木) 00:04ID:???foreach(1 .. 9){
$test = "123456789";
$test =~ s/$_/a/og;
print $test ."\n";
}
こういうことを試してみれば、どういう事かわかると思う。
0750名無しさん@お腹いっぱい。
2001/07/05(木) 13:01ID:???やり方が見つからないんでここで質問。
ちなみにスクリプトの実行から終了までの時間を取れれば。
#ベンチマークやるんで
0751名無しさん@お腹いっぱい。
2001/07/05(木) 13:10ID:???0752名無しさん@お腹いっぱい。
2001/07/05(木) 13:11ID:???それとも use Benchmark かしら
0753名無しさん@お腹いっぱい。
2001/07/05(木) 13:58ID:???use Benchmark は…どうやって使うのか解らない(汗
use Benchmark;
(コード)
その後、結果を出力する方法が解らないっす。
0754名無しさん@お腹いっぱい。
2001/07/05(木) 15:02ID:???use Benchmark;
#1
$t1 = new Benchmark;
code;
$t2 = new Benchmark;
print "the code took:", $t2->timediff($t1)->timestr, "\n";
#2
$count = 10000;
timethese( $count, {
foo => sub{ code1 },
bar => sub{ code2 },
});
__END__
0755707
2001/07/05(木) 17:37ID:???i−modeからFROMタグを使ってsendmailでiーmodeなり
PCにメールを送る際に文字化けが起こるので絵文字を他の文字に変換したりは
していたんですが、i−modeからFORMタグを使ってi−modeに送る
場合はなんとか絵文字が送れないかと思ったのです。
ざっと文献やネットを見回していると「無理だ」とかかれてましたね。。。
でも今話題の出会い系サイトでいくつかのサイトでは送れるんですよね、なんで
だろう?
0757名無しさん@お腹いっぱい。
2001/07/05(木) 19:02ID:WznWMXtoたどって綺麗に表示してくれるパッケージ等はありますか?
0758_gunzip
2001/07/05(木) 19:30ID:???Data::Dumper とか
http://www.bekknet.ad.jp/~bero/docj/module/06/Data_Dumper.html
0759名無しさん@お腹いっぱい。
2001/07/05(木) 20:06ID:???ありがとっす。
>>756
了解、今夜か明日にでも見てみます。
0760名無しさん@お腹いっぱい
2001/07/05(木) 20:16ID:4qZ7uZOMそこにそのメールの内容をログとしてファイルに記載したいのですが、
どうすればよいのでしょうか?
0761ど素人
2001/07/05(木) 20:35ID:???どこかまちがってますか?
22時間かかってもわかりません
どなたかキツイ指摘を・・・
環境変数のスクリプトです
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "<html>\n\n";
print "<title>Proxy checkr</title>\n;
print '<body bgcolor="black" text="dimgray" link="dimgray" alink="dimgray" vlink="orangered">'\n
$host = $ENV{'REMOTE_HOST'};
$addr = $ENV{'REMOTE_ADDR'};
$red = '<font color="silver">';
$endf = '</font>';
if ($host eq "") { $host = gethostbyaddr(pack('C4',split(/\./,$addr)),2) || $addr }
print "<br><br>\n;
print "$host\n" ;
if ($host =~ /(proxy|prox|squid|cache|www|dns|ns|gateway|gatekeeper|gate|^gw|^fw|firewall)/i){
print "$red<- テスト $endf <br>\n";
$pflag = 1;
}
else {
print "<- テスト<br>\n";
$pflag = 0;
}
$via = $ENV{'HTTP_VIA};
if( $via != "") {
print "$red HTTP_VIA テスト -> $via $endf<br>\n;
print "テスト<br>\n";
$via_flag =1;
}
else {
print "テスト<br.\n;
$via_flag = 0;
}
$client = $ENV{'HTTP_CLINT_IP'};
if( $client != "" ) {
print "$red CLENTテスト-> $clint $endf<br>\n;
}
else {
if ($via_flag == 1) {print "テスト"<br>\n";}
else {
if ( $pflag == 1 ) {print "テスト<br>\n"; }
else { print "テスト?<br>\n";
}
}
print "\n</body>\n";
print "</html>\n\n";
exit;
0762名無しさん@お腹いっぱい。
2001/07/05(木) 20:41ID:FPnmy2lY↑なにこれ?
0764名無しさん@お腹いっぱい。
2001/07/05(木) 21:00ID:???つーか、クォーテーションの囲い損ねが沢山…
キツイ指摘する気力も起こらんわ。
0765名無しさん@お腹いっぱい。
2001/07/05(木) 21:08ID:???Perl5対応のマトモな本 or スクリプトなら
普通q/qq/qxクォートやヒアドキュメントが載ってると思うのだが。
…糞本や糞スクリプトが出回っているってことか(鬱)
0766名無しさん@お腹いっぱい。
2001/07/05(木) 21:42ID:???とりあえず>>761は注意力をもうちょっと上げてくれ。
0767名無しさん@お腹いっぱい。
2001/07/05(木) 22:14ID:2FhZLyb60768名無しさん@お腹いっぱい。
2001/07/06(金) 00:29ID:???他人のスクリプトをコピペして使ってるんだろ?
本なんか読んでないに決まってるじゃないか。
・・・昔の俺がそうだったんだよ。
0769ど素人
2001/07/06(金) 00:33ID:???レスありがとうございました
もっと
注意力をあげてきます
動かせるようになったら報告します
本も色々読んだ方がいいのですか
よい本と糞本の区別もつかないもので・・
ありがとうございました
0770名無しさん@お腹いっぱい。
2001/07/06(金) 00:45ID:???http://corn.2ch.net/test/read.cgi?bbs=php&key=988809842
0771名無しさん@お腹いっぱい。
2001/07/06(金) 00:49ID:???まさかWEBサーバー上でテストしてないだろうな?
スクリプトのテストをするならローカルでやれよ。
参考:http://tohoho.wakusei.ne.jp/wwwcgi6.htm
0773ど素人
2001/07/06(金) 02:22ID:???だいたい 俺みたいなスーパー初心者が
「ちょ〜っといぢってみようかな〜」なんて
色気だしたのが間違いでした
フリーシージーアイのパス変更のみで
満足するべきでした
折角レスもらったのにすみません
一から出直してきます m(_ _)m
0774名無し
2001/07/06(金) 03:31ID:YsXZOyrU一つでは書き込めないため、三つに分けさせて頂きます。
ごめんなさい。
775のスクリプトで
return $result_x, $result_y;
この一行があると無いとでは結果が全く違います。
ここで問題にしたいのは$calc_value[0]と$calc_value[1]に入る値です。
この一行があってもなくても、いつでも
$calc_value[0] = $argument1(つまり10)
$calc_value[1] = $argument2(つまり1)
というわけではないのでしょうか?
また、776にある
my ($result_x, $result_y, $argument1, $argument2);
($argument1,$argument2) = @_;
この二行はそれぞれこのスクリプトの中でどういう役割を果たしているのでしょうか?
宜しくお願いします
0775名無し
2001/07/06(金) 03:31ID:YsXZOyrU$argument1 = '10';
$argument2 = '1';
@calc_value = &return_value($argument1,$argument2);
print "$calc_value[0]\n";
print "$calc_value[1]\n";
sub return_value {
$result_x = $argument1 + $argument2;
$result_y = $argument1 + $result_x;
print "----サブルーチン始----\n";
print "\$result_x = $result_x\n";
print "\$result_y = $result_y\n";
print "\$argument1 = $argument1\n";
print "\$argument2 = $argument2\n";
print "----サブルーチン終----\n";
return $result_x, $result_y;
}
0776名無し
2001/07/06(金) 03:32ID:YsXZOyrU$argument1 = '10';
$argument2 = '1';
@calc_value = &return_value($argument1,$argument2);
print "$calc_value[0]\n";
print "$calc_value[1]\n";
sub return_value {
my ($result_x, $result_y, $argument1, $argument2);
($argument1,$argument2) = @_;
$result_x = $argument1 + $argument2;
$result_y = $argument1 + $result_x;
return $result_x, $result_y;
}
0777名無しさん@お腹いっぱい。
2001/07/06(金) 04:05ID:???悪い。
use strict;が無いってだけで目が読むのを拒否しやがった。
0778名無しさん@お腹いっぱい。
2001/07/06(金) 04:08ID:???# 775
> $calc_value[0] = $argument1(つまり10)
> $calc_value[1] = $argument2(つまり1)
> というわけではないのでしょうか?
まず、returnしている変数が$result_x,$result_yなのでお望みの結果にはなりません。
常に10,1でいいなら
return($argument1, $argument2);
としてやればいいでしょうね。
# ただ、こんなことやってもこのサブルーチンの存在している意味がないですけど。
ちなみに、サブルーチンに明示的にreturnを指定していない場合は
一番最後に評価された値が戻ります。
@calc_value = (1,undef); という結果になるかと。
# 776
まず、レキシカル変数について勉強しましょう。
グローバル特殊配列@_には、サブルーチンに引き渡された変数が格納されています。
> my ($result_x, $result_y, $argument1, $argument2);
> ($argument1,$argument2) = @_;
まず、4つの変数をレキシカルスコープ宣言した後に、
変数を代入しているわけです。
# 説明下手ですいません。
0779名無しさん@お腹いっぱい。
2001/07/06(金) 05:30ID:YsXZOyrUすみません。775の説明はよく理解したのですが、776の説明がよく理解できません。
@_ = ($argument1, $argument2);
ではなく、逆になっているのが良く分かりません。
また($argument1,$argument2) = @_; をサブルーチンの中に置くのと外に置くのと
では意味が変わるのでしょうか?
()や位置関係が絡むとややこしくって・・・。
お願いします。
0780名無しさん@お腹いっぱい。
2001/07/06(金) 07:56ID:ex2YDxP.0781778
2001/07/06(金) 09:48ID:???仮に、$str1に$str2を入れたい場合、どうします?
$str1 = $str2; とするでしょう?
同じように、$argument1,$argument2に@_を入れてるんですよ。
サブルーチン内では$argument1,$argument2共にレキシカル変数になっているので
もはや10,1という値は入っていません。それを代入してやってるというか。
@_は場所によって、適宜引数が格納されているので、意味は変わるというのが正解でしょうか。
0782名無しさん@お腹いっぱい。
2001/07/06(金) 09:56ID:???一度、本屋さんに置いてある全てのPerl本の「サブルーチン」を
説明している部分を立ち読みすると良いと思いますよ。
0783名無しさん@お腹いっぱい。
2001/07/06(金) 15:44ID:RNx.m3EUなるほど!
自分で色々試してやっと理解しました。
ありがとうございました。
でも参考書の一冊も手元にないのも限界かな・・・。
0784名無しさん@お腹いっぱい。
2001/07/06(金) 17:59ID:???0785名無しさん@お腹いっぱい。
2001/07/06(金) 18:05ID:YlE0Cv3o0786783
2001/07/06(金) 22:54ID:GVXvZTOcえ?どういう意味ですか?(不安)
0787名無しさん@お腹いっぱい。
2001/07/07(土) 20:25ID:???なんですけど、外国サーバーに設置すると15時間少なく記録されしまいます。
どのように直せばいいのでしょうか。
0788名無しさん@お腹いっぱい。
2001/07/07(土) 20:46ID:???gmtime(time() + 9*60*60);
0789名無しさん@お腹いっぱい。
2001/07/07(土) 20:48ID:???タイムゾーンと時間取得の関数について勉強してください。
# $ENV{TZ}, localtime(), gmtime() あたり
0790名無しさん@お腹いっぱい。
2001/07/07(土) 20:49ID:???ソ・ー・ス・だ・せ!
0791VEDA
2001/07/07(土) 21:22ID:???http://cgi18.plala.or.jp/downward/
このCGIで改造途中いきづまってしまいました。
サポートへはきけないのでだれかおしえてくださーいぃ
ここのスクリプトの表示部分のhtml.cgiに「$id」があります。
ちなみに$idの例をあらわすと
1-1とか1-2とかスレッドの番号です
この$idをveda.cgiの860行あたりにある
sub make_partial_message{
の部分で$idのショットカットをつかいたいんです。
どうすればつかえることができますか?
自分のめちゃくちゃな発想では
my $thread = shift;
ここを変えるとおもうのですが・・
どなたかどうかおしえてくださいぃ〜
今日の昼からずっと考えてトライしまくって無理でした・・
目が痛いです。だれかおしえて〜〜〜〜!
0792787
2001/07/07(土) 21:29ID:???みなさんありがとうございました。
0793名無しさん@お腹いっぱい。
2001/07/07(土) 21:58ID:???ショットカットって何よ
というか、こっちでない?
http://corn.2ch.net/test/read.cgi?bbs=php&key=988808396&ls=50
>>787
素直にgmtimeで9時間足せば、どこの国だろうが日本時間になるよ
0794VEDA
2001/07/07(土) 22:25ID:???0795DAZZ
2001/07/08(日) 11:11ID:6JyxvsmwSSIを呼び出しています。
こういった場合、アクセスログ解析で、
refererを取得する事はできないんでしょうか?
やはり、直接htmlやcgiを指定しないと無理ですか?
どなたかご存じでしたら、教えてください。
0796名無しさん@お腹いっぱい。
2001/07/08(日) 11:26ID:???これいい加減FAQだよな。
0797名無しさん@お腹いっぱい。
2001/07/08(日) 13:08ID:???0798名無しさん@お腹いっぱい。
2001/07/08(日) 13:34ID:???それはフレームじゃ無理。
0799名無しさん@お腹いっぱい。
2001/07/08(日) 14:51ID:???過去ログに<em>90%同じ</em>質問があり、回答もされています。
読みましたか?
0800DAZZ
2001/07/08(日) 16:32ID:CHSNDL26refererとフレームで検索かけつつ見たつもりでしたが、
見逃してしまったようです。
もう一度探してみます。
すいません。
0801名無しさん@お腹いっぱい
2001/07/08(日) 20:01ID:hb0UPetQttp://www.2ch.com/の時に自動リンクしたいんですが
正規表現が解りません、、、芯だ方が良いでしょうか
08025.005以上ね
2001/07/08(日) 20:38ID:???s|(?<!h)(ttp://[URLにありえる文字]+)|<a href="h$1">$1</a>|g;
hogettp://www.2ch.com でもリンクされるけど、君がどう望んでるのかわからんからne。
0803名無しさん@お腹いっぱい。
2001/07/08(日) 20:43ID:???s|([^h]?)(ttp://[URLにありえる文字]+)|$1<a href="h$2">$2</a>|gi;
では駄目なのかな?
0804名無しさん@お腹いっぱい
2001/07/08(日) 20:53ID:???が教えていただいた内容が理解出来る様に精進いたしますです。
あー情けなや、やっぱり芯でしまいたいです。。。
0805
2001/07/09(月) 02:22ID:fbWvSC9U例えば、100のパターンの分岐をさせたい場合、
-方法1-
srand();
$randam = int(rand(100));
if ($randam == 1){
$doreka = "1.txt";
}elsif ($randam == 2){
$doreka = "2.txt";
}elsif ($randam == 3){
$doreka = "3.txt";
・・・・・・以下elseまでずっと続く・・・。
-方法2-
パターンを20個つづの5グループに分けて、
最初にグループを選んで、次にグループの中で
パターンを選ぶ・・・
この場合、均等にばらけさせるのは方法2のほうなのでしょうか?
また、他にもっと効率よくばらけさせる方法はあるでしょうか?
0806名無しさん@お腹いっぱい。
2001/07/09(月) 03:10ID:???方法1で充分だと思うけど。
ただしifで分けるんじゃなくて、
$dareka = "$random.txt"; とでもしてやれば。
あと、Perl5以降はsrand要りません。
0807S
2001/07/09(月) 03:12ID:???$doreka = $doreka_array[int rand @doreka_array];
みたいなのがいちばん簡単なのではないでしょうか。
$MAX = 100;
$doreka = (int(rand $MAX)+1). ".txt";
も、使えるかも。
均等さは1も2も同じだと思います。もともとrandは引数が大きくなれぱ
ランダムじゃなくなりますし、気にすることはないでしょう。
0808名無しさん@お腹いっぱい。
2001/07/09(月) 03:15ID:???でかい配列は作りたくない気もする。
0809名無しさん@お腹いっぱい。
2001/07/09(月) 10:26ID:8Wkoq3g6807と同じ方法を使ったよ。
んでも805の場合は
出力する値が数字.txtとなってて一体感があるから
$num = int( rand((100) ) + 1; #1-100までのランダムな数字がはいる
$dareka = "$num.txt";
でいいんじゃないかな?
0810名無しさん@お腹いっぱい。
2001/07/09(月) 14:49ID:8Wkoq3g60811名無しさん@お腹いっぱい。
2001/07/09(月) 15:16ID:???これでREFERERが取れないことが凄く多いんだけど何故でしょうか?
明らかにbookmarkやコピペじゃない場合でも取得できないんですが。
ログ見てると取れる時間帯と取れない時間帯がありそうな気がするんですが。
鯖の状態によって取れたり取れなかったりするもんでしょうか?
0812名無しさん@お腹いっぱい。
2001/07/09(月) 15:18ID:???0813811
2001/07/09(月) 16:34ID:???取得できないからといって困るわけではないんですが。
0814名無しさん@お腹いっぱい。
2001/07/09(月) 17:18ID:8K4xE7OMURLとメールアドレスを打っていないとどちらともにリンクを張らず
かたほうにあるとそちらにリンクを張るようにしたいのですが
if ($in{'email'} eq "" & $in{'url'} eq "") { $name = "$pointer □ <b>$in{'name'}</b>"; }
if ($in{'email'} eq "" & $in{'url'} ne "") { $name = "$pointer <a href=\"http://$in{'url'}\" target='_blank'>□</a> <b>$in{'name'}</b>"; }
if ($in{'email'} ne "" & $in{'url'} eq "") { $name = "<a href=\"mailto:$in{'email'}\">$pointer</a> □ <b>$in{'name'}</b>"; }
↑のようにしてもうまくいきません。
わかる方がいればよろしくお願いします。
0815名無しさん@お腹いっぱい。
2001/07/09(月) 17:36ID:???&ではなく&&。
0816名無しさん@お腹いっぱい。
2001/07/09(月) 17:49ID:???Windowsでは無意味ですが、
環境変数PERL_DEBUG_MSTATSに1か2をセットしてperlを起動するとメモリ統計を表示できます。
Windowsの場合はどうすればいいのかは分かりませんね。
>>814
"&"ではなく"&&" または"and"を使うと幸せになれます。
ついでにif-elsif-elseを使うと更に幸せになれます。
0817816
2001/07/09(月) 17:49ID:???0818名無しさん@お腹いっぱい。
2001/07/09(月) 18:53ID:zlMbWq72andにしてみたのですがどうもうまくいきません。
if ($in{'email'} ne "" & $in{'url'} eq "")...はうまくいくのですが
それ以外がどうもだめです。
なにか問題があるのでしょうか?
if-elsif-elseの使い方がいまいちわかりません。
よろしくお願いします。
0819名無しさん@お腹いっぱい。
2001/07/09(月) 19:04ID:???試しましたが、&&でもandでも問題ないですけど。
まぁオペランドの違いによって優先順位ありますけどね。
つーか、両方とも値が入っていた時の処理してないから問題あるんでないの?
$in{email}と$in{url}の両方に値があったらどうすんのさ。
このままだと何も出ないじゃん。
>if-elsif-else
本でも買って一から勉強したほうがいいと思いますが。
0820名無しさん@お腹いっぱい。
2001/07/09(月) 19:20ID:???&の意味も分からず何を仰っているのですか?(笑)
もしかしてあなたM女史ですか?(笑)
0821名無しさん@お腹いっぱい。
2001/07/09(月) 20:09ID:???0822名無しさん@お腹いっぱい。
2001/07/09(月) 20:26ID:???if ($in{'email'} eq "" && $in{'url'} eq "") { $name = qq($pointer □ <b>$in{'name'}</b>); }
elsif ($in{'email'} eq "" && $in{'url'} ne "") { $name = qq($pointer <a href="http://$in{'url'}" target='_blank'>□</a> <b>$in{'name'}</b>); }
elsif ($in{'email'} ne "" && $in{'url'} eq "") { $name = qq(<a href="mailto:$in{'email'}">$pointer</a> □ <b>$in{'name'}</b>); }
else{両方入っていた場合の処理;}
ホラよ。
わかったら帰れ。
基本を覚えてくるまで帰ってこないでくれよ。
0823名無しさん@お腹いっぱい。
2001/07/09(月) 20:30ID:???if ( 条件1 || 条件2 || 条件3 || 条件4 ) { 処理 }
if ( 条件1 ) { 処理 }
elsif ( 条件2 ) { 処理 }
elsif ( 条件3 ) { 処理 }
elsif ( 条件4 ) { 処理 }
else { }
っていうのはどちらが良いんだろう。
0824名無しさん@お腹いっぱい。
2001/07/09(月) 20:40ID:???する必要があるってんじゃ、手間が全然違うだろ?
0825名無しさん@お腹いっぱい。
2001/07/09(月) 21:07ID:???>>824のいうとおり、普通は…というか常識的には前者だろう。
0826名無しさん@お腹いっぱい。
2001/07/09(月) 21:12ID:???ちなみに>>823の処理っていうのは全部エラー処理だったり。
0827名無しさん@お腹いっぱい。
2001/07/09(月) 22:20ID:???いっぱいあるけどみんなはなにつかってるんだろ?
今からつかってみようとおもうんだけどサ!
あと2ch用ブラウザは2ch型ならどれでも対応してるんですか?
0828名無しさん@お腹いっぱい。
2001/07/09(月) 22:27ID:???tkz6.plにキ・マ・リ
0829名無しさん@お腹いっぱい。
2001/07/09(月) 22:36ID:???ギコタクの「だから逝ってないでしょ」出張所
http://corn.2ch.net/test/read.cgi?bbs=php&key=991966646
0830名無しさん@お腹いっぱい。
2001/07/09(月) 23:00ID:75iCECGw0831名無しさん@お腹いっぱい。
2001/07/10(火) 00:21ID:lYKZ.3DgBooksというファイルに任意の文章を書き付けておき、それを行で表示するとい
うものなのですが、++$testだけでなぜ一行ずつ加算されていくのか良く分かり
ません。『++』が一つずつ数を増やしていくためのものだというのは分かってい
るのですが、このスクリプトにおいて数を増やすポイントをどのように認識して
いるのか分かりません。
行頭で必ず行数が一つ増えて表示されるわけですが、『++$test』がどのポイン
トで一行増やすという認識をしているのでしょうか?
うーん。質問の仕方がマズいかな・・・。
このスクリプトにおいて、『++$test』はなぜ『行数を一つずつ増やせ』という
命令だと解釈できたのでしょうか?『$test』については行数を代入せよと指定し
ているわけでもないのに・・・。
自分で作っておきながら混乱してしまいました。
#!/usr/bin/perl -w
$file = "./Books";
open IN, "<$file";
while ( $contents = <IN> ) {
chop ($contents);
print ++$test, "行: ", $contents, "\n";
}
close IN;
0832名無しさん@お腹いっぱい。
2001/07/10(火) 00:23ID:???複数のページのアクセスログをとっているのですが、
どのページを見たログかを知るためには
どのような環境変数を使えばいいのでしょうか?
0833名無しさん@お腹いっぱい。
2001/07/10(火) 00:51ID:???アフォか?
マトモな本を読め。
>>832
環境変数で検索しろ
0834名無しさん@お腹いっぱい。
2001/07/10(火) 00:51ID:???ファイルハンドルと関係ないが?
ただ単にプラス1する演算子。
ちなみに
++$count
$count++
は、ちょっと振る舞いが違う。
0835名無しさん@お腹いっぱい。
2001/07/10(火) 01:55ID:???$testはただ単に行数の表示のみ。
$testは何も指定していない。
whileループで順に行を読み込んでいる。
0836名無しさん@お腹いっぱい。
2001/07/10(火) 05:25ID:???ssiは使えないの?
0837831
2001/07/10(火) 15:42ID:kZaiDUJU>>835
何となく分かって来ました。
書き付けたファイルの全体を読んでいるのではなく、
行ごとに読み込んでいるんですね?
ありがとうございました。
0838名無しさん@お腹いっぱい。
2001/07/10(火) 15:43ID:SGYXQF82処理できるようにってなんかうまい事できないでしょうか?
ActivePerlに関連付けた.plファイルだとD&D自体受け付けない・・
0839名無しさん@お腹いっぱい。
2001/07/10(火) 16:39ID:???とりあえず$0は知ってるのかしら。
0840838
2001/07/10(火) 17:04ID:SGYXQF82Webとは関係ないですけど他に聞く場所見当たらなかったもんで・・
例えばフォルダをD&Dで渡すとそのフォルダのtreeを表示する。みたいな感じのが作りたいんです。
perl c:\myperl\tree.pl %1
pause
みたいなBATファイル作ってそれにD&Dってやるとうまくいくんですが
直でperlに渡せないもんかなと・・
0841838
2001/07/10(火) 17:10ID:SGYXQF820842名無しさん@お腹いっぱい。
2001/07/10(火) 17:12ID:???このスレの上の方で書かれていたSOSを試してみたら?
あれでCOMファイルにすればD&Dできるとおもうよ。
0843名無しさん@お腹いっぱい。
2001/07/10(火) 17:19ID:???0844838
2001/07/10(火) 17:56ID:SGYXQF82や、一度落としてたんですが「BAT2COMみたいなやつか」と思って
コマンドラインで使わない限り必要ないと思って使ってませんでした。
うまくいきました。ありがとうございました。
0845805
2001/07/10(火) 23:20ID:???>>806さん、>>807さん、>>809さん返答ありがとうございました。
レス送れてすみません。
0846名無しさん@お腹いっぱい。
2001/07/11(水) 06:54ID:???D&Dってドラッグ&ドロップなんだな?
ある意味で新鮮な文字列に感じたぞ
0847名無しさん@お腹いっぱい。
2001/07/11(水) 15:42ID:9cey.Kcg<script language=PerlScript>
use Win32::OLE;
Win32::OLE->new('WScript.Shell')->Popup('Argument: '. $WScript->Arguments(0),2);
</script>
</job>
これをhoge.wsfファイルにして、何かをD&Dしてみそ。
0848名無しさん@お腹いっぱい。
2001/07/11(水) 17:34ID:???それってPerlをインストールしてなくても有効?
0849名無しさん@お腹いっぱい。
2001/07/11(水) 17:36ID:???0850848
2001/07/11(水) 18:32ID:???XPにActivePerl標準搭載してくんねぇかなー。
0851名無しさん@お腹いっぱい。
2001/07/11(水) 19:07ID:???別に、今の環境に普通にActivePerl入れればいいだけでは?
0852848
2001/07/11(水) 20:58ID:???知人らに送るときPerlのインストールを強制させるとなると…ね。
0853名無しさん@お腹いっぱい。
2001/07/11(水) 21:17ID:???0854名無しさん@お腹いっぱい。
2001/07/11(水) 21:54ID:tfiGyRpE0855名無しさん@お腹いっぱい。
2001/07/11(水) 23:34ID:???0856名無しさん@お腹いっぱい。
2001/07/12(木) 10:08ID:L16.sTWQリファレンスみたいのWeb上でない?
探したけど見つからなかった・・
0857名無しさん@お腹いっぱい。
2001/07/12(木) 11:14ID:Dza9cSXY現状だとMicrosoftのWSHドキュメントから類推するしかないから。
0858名無しさん@お腹いっぱい。
2001/07/12(木) 11:55ID:Dza9cSXYそれがコメントとかでも、エラーを誘発することがあるよ。
0859名無しさん@お腹いっぱい。
2001/07/13(金) 14:45ID:7/Tjfp6whttp://www.microsoft.com/japan/developer/scripting/windowshost/docs/reference/default.htm
0860_gunzip
2001/07/13(金) 16:34ID:???-----------
Perlクイックリファレンス(オライリー)の最後辺りに
ほんの少しだけ顔を出していた記憶があるよ。 >PerlScript
Perl & WSH については↓に幾つか例があるぐらいで、確かに資料が少ないね.....。
http://pages.infinit.net/che/perlwsh/perlwsh0.html
http://cwashington.netreach.net/
0861名無しさん@お腹いっぱい。
2001/07/13(金) 17:24ID:7/Tjfp6wWSHからだと、IEを作成して外からdocument.body.innerHTMLを書き換える
方法があるんだけど、HTAだと直に自分自身をいじれるから面白そうですね。
Drag&Dropはできないみたいですね。
0862_gunzip
2001/07/13(金) 18:30ID:???http://www.google.com/search?q=cache:Cxe9arpl5Eg:www.psu.unibel.by/biblio/books/perlnut/ch20_01.htm&hl=ja&lr=lang_en|lang_ja
今思い出したけれど、↓でもPerlScriptを扱っていたよ。(日本語)
http://village.infoweb.ne.jp/~kusaji/contents/perlscript/old/overview.htm
>>861
PerlScript+HTA なら
$window->{ 'element_id' }->{ innerHTML } = "<p>hogehoge</p>";
で動的に書き換えられるよね。他にも大量のプロパティがあるので当分飽きないと思う。
D&D は出来ないのかな...? (ondrop, ondragstart, ondragend とかはあるけれど)
-------------
PerlScript普及のためには、やっぱり分かりやすい(包括的な)リファレンスが必要だな.....。
(・・・と思って以前書いていたのだが、途中で放り出した。(使っている人少なそうだし)
暇があったらなぁ。)
0863名無しさん@お腹いっぱい。
2001/07/13(金) 18:32ID:???0864863
2001/07/13(金) 18:38ID:???0865http://N72ch-01p110.ppp11.odn.ad.jp
2001/07/13(金) 20:57ID:V4/V4Maoを使わないで同じ処理をできる方法教えてください・・・・
0866名無しさん@お腹いっぱい。
2001/07/13(金) 22:30ID:???0867名無しさん@お腹いっぱい。
2001/07/14(土) 07:29ID:???コマンドラインのみ。
0868通りすがり
2001/07/14(土) 09:36ID:???一覧したようなものはどこかにありませんか?
0869名無しさん@お腹いっぱい。
2001/07/14(土) 10:19ID:???0870名無しさん@お腹いっぱい。
2001/07/14(土) 10:26ID:???perlでやる物って言ったらcgiスクリプトくらいしかないからじゃないの?
ネット上でやるものは・・・・
後知らん。
0871名無しさん@お腹いっぱい。
2001/07/14(土) 10:35ID:???0872名無しさん@お腹いっぱい。
2001/07/14(土) 10:53ID:???あまりどれにするかどうかは意味がないものと思われ。
拡張子が.cgiでも.plでも.hogeでも、あるいはなくても、最初の1行目の
特殊コメント
#!/usr/bin/perl
がファイル識別の印なのですから。
もっとも、.htaccessのようにファイルの識別に拡張子を使っている例はある
のが難しいところ。
magicというのもあったなぁ。
0873名無しさん@お腹いっぱい。
2001/07/14(土) 11:23ID:???Perlスクリプトの拡張子が.cgiなんじゃなくて、CGIの拡張子が.cgi。
.cgi というファイルにアクセスがあったら、WWWサーバがCGIとみなして
それを「実行」させる。
その後は872の言う通り、最初の行が #!/usr/bin/perl なら Perl によって実行されるし、
#!/bin/sh でシェルスクリプトなのかもしれないし、
#!/usr/bin/ruby で Ruby が使われるかもしれないし
あるいはスクリプトじゃなくてCでコンパイルされたバイナリでも、C++でも、
実行可能なファイルで、結果として適切なContent-Typeを返せば何でも良い。
0874名無しさん@お腹いっぱい。
2001/07/15(日) 11:20ID:???確かに拡張子なんて余り意味無いですからね…いや無いって言ったらアレなんですが。
何はともあれサンクスです。
0875名無しさん@頭いっぱい。
2001/07/18(水) 16:10ID:p4.NpWMwVBScriptでAspファイルを書いています。
ここでVBScriptとHTMLを分割して、VBを独立させてしまいたいのですが
まずどうすればよろしいでしょうか?
0876名無しさん@お腹いっぱい。
2001/07/18(水) 19:06ID:???何故「Perl」スレに書くのか不思議だ…。
0877名無しさん@お腹いっぱい
2001/07/18(水) 19:13ID:gsEdjJ4Eあったら保存を止めて、そのファイルを表示するというのをしたいのですがどうしたら言いのでしょうか。
0878名無しさん@お腹いっぱい
2001/07/18(水) 19:23ID:f5fW.spoちょっと修正しますです。
今から保存するファイル名と同じファイルがなかったら指定ディレクトリにそのファイル名で保存して、 表示。
あったら保存を止めて、そのファイルを表示するというのをしたいのですがどうしたら言いのでしょうか。
0879名無しさん@お腹いっぱい。
2001/07/18(水) 19:36ID:???0880sage
2001/07/18(水) 20:52ID:???0881878
2001/07/18(水) 23:58ID:???0882名無しさん@お腹いっぱい。
2001/07/19(木) 00:08ID:???0883名無しさん@お腹いっぱい
2001/07/19(木) 04:28ID:DofrXLhMリプトを元に勉強しているわけではなく、参考書を読みながらどういう機能なの
か探っているだけなのでいまいち理解できないでいます。
これはどういう時に使えば良いものなのか、どういう時に使うものなのか教えて
ください。
0884名無しさん@お腹いっぱい。
2001/07/19(木) 04:44ID:???0885名無しさん@お腹いっぱい。
2001/07/19(木) 08:20ID:???0886名無しさん@お腹いっぱい。
2001/07/19(木) 13:58ID:???0887名無しさん@お腹いっぱい。
2001/07/19(木) 16:39ID:???違うぞ。
0888名無しさん@お腹いっぱい。
2001/07/19(木) 17:49ID:???n=整数
小学生でもわかるやん
0889名無しさん@お腹いっぱい。
2001/07/19(木) 19:01ID:pJLvWZos0890名無しさん@お腹いっぱい。
2001/07/19(木) 19:06ID:???俺はプログラミングPerlを読みつつ色々スクリプトを書いて理解した。
使い方は覚えれば自然と使うようになると思うぞ。
0891名無しさん@お腹いっぱい。
2001/07/19(木) 22:32ID:QQ.KsOwcバーカ
0892名無しさん@お腹いっぱい。
2001/07/20(金) 00:47ID:???使うべき時が来れば、って答えになってないか。
でも自分はそんな感じだったんだよね。
ちなみに自分は実際に使うまで理解できませんでした。
0893名無しさん@お腹いっぱい。
2001/07/20(金) 01:26ID:???http://whythishappened.tripod.co.jp
流出ログ一覧直リン!
http://members.nbci.com/zmkanamoe/success/PC-Success.cab 3.08MB 約170ファイル
http://members.nbci.com/zmkanamoe/success/eleven-jp.zip 110KB イレブン
http://members.nbci.com/zmkanamoe/success/coconuts.zip 24KB ココナツ
http://members.nbci.com/zmkanamoe/success/SONY.zip 1.55MB ソニー
イレブンはアダルトグッズ購入者
0894名無しさん@お腹いっぱい。
2001/07/20(金) 01:39ID:???ってなに?
なんかこの前IP表示するとこでIPにタグ使われて
荒らされてたんだけど これは凡ミスなんかな
0895名無しさん@お腹いっぱい。
2001/07/20(金) 01:55ID:???open MAIL "| sendmail -f $maddr";
とかかな。sendmailのオプションは忘れたんで違うかも。
0896名無しさん@お腹いっぱい。
2001/07/20(金) 01:57ID:???何故-Tしない
0897わ、
2001/07/20(金) 03:36ID:O.8zSDuM0898名無しさん@お腹いっぱい。
2001/07/20(金) 07:49ID:???タグと-Tは無関係では…?
0899名無しさん@お腹いっぱい。
2001/07/20(金) 07:58ID:???その前に、俺には894の言ってる意味がわからん。
IPにタグって何よ?
0900名無しさん@お腹いっぱい。
2001/07/20(金) 10:58ID:???サクセスの掲示板荒らしのときも使われてた。
IP取得に$ENV{X_FORWORD_FOR}(だっけ?)かなんかを見てる掲示板の場合、
ローカルプロクシとかでそこになんか突っ込んどく。
それを表示するから、掲示板閲覧者からするとIPにタグが入ってるように見える。
・・・・って感じだったはず。そっち方面には詳しくないんで適当。
訂正は歓迎するけど煽らないでね。
0901名無しさん@お腹いっぱい。
2001/07/20(金) 12:43ID:???$ENV{X_FORWORD_FOR}をそのまま使ってると汚染された文字列という
ことで警告が出るという意味では。
0902898
2001/07/20(金) 16:25ID:???丁寧な説明感謝。
素で意味がわからなかったもので。
それを踏まえた上で。
基本的に、私は外部からの入力は全部チェックしてます。
$ENV{HTTP_X_FORWARDED_FOR}であれば、
$ENV{HTTP_X_FORWARDED_FOR} =~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)\D*/
and
print "$1.$2.$3.$4";
くらいですかね。
0903名無しさん@お腹いっぱい。
2001/07/20(金) 16:44ID:???もしものときにログにさえ残しておけばいいんだし。
0904名無しさん@お腹いっぱい。
2001/07/20(金) 22:40ID:???同意
この話題とは直接関系無いが、IPなんて表示させても何の意味も無いと思うのだが…
0905名無しさん@お腹いっぱい。
2001/07/20(金) 23:56ID:???同意。IPは表示させないでログるだけでIDを表示すると良いと思われ。
0906名無しさん@お腹いっぱい。
2001/07/21(土) 02:52ID:???これで嫌がって荒らさないでくれるといいなぁくらいじゃない?
0907名無し募集中。。。
2001/07/21(土) 04:33ID:???-e "filename"
ってどういう違いがあるんですか?
0908名無しさん@お腹いっぱい。
2001/07/21(土) 05:02ID:dTwqWpWYUse of uninitialized value at ./perl001.pl line 36, <STDIN> chunk 1.
スクリプトは機能するのですが、この表示が気になるので、どこか悪いところが
あるのかご指摘ください。
#!/usr/bin/perl -w
%list = ( "kamata" => "Ohta",
"yoyogi" => "Shibuya",
"sugamo" => "Toshima");
print "名前を入力してください: ";
$name = <STDIN>;
chomp($name);
$orig_name = "$name";
$name =~ s/\W.*//;
$name =~ tr/[A-Z]/[a-z]/;
if ( $name =~ /^mona/i ) {
print "OK\n";
} else {
print "Input your password: ";
$secretword = $list{$name};
if ( $secretword eq "" ) {
$secretword = "guest";
}
$word = <STDIN>;
chomp($word);
while ( $word ne "$secretword" ) {
print "It's wrong. Input again: ";
$word = <STDIN>;
chomp($word);
}
}
0909名無しさん@お腹いっぱい。
2001/07/21(土) 06:07ID:???-e ファイルかディレクトリが存在
-f ファイルが存在
「ファイル演算子」で検索かければ他にも(もっと詳しい)説明があるはず
0910名無しさん@お腹いっぱい。
2001/07/21(土) 08:08ID:04l8oGkY@dayname = ('月','火','水','木','金','土','日');
この1行を入れるとエラーになってしまいます。
何がいけないんでしょうか?
ネタじゃないです。マジなんです。素で。。
環境はWin + ANHTTPD + ActivePerlです。
ホントすいません。
0911名無しさん@お腹いっぱい。
2001/07/21(土) 09:01ID:???(,');のどれかが全角になっているのに100カノッサ
0912名無しさん@お腹いっぱい。
2001/07/21(土) 11:13ID:???0913名無しさん@お腹いっぱい。
2001/07/21(土) 12:11ID:???0914910
2001/07/21(土) 15:49ID:P71/r1DMんなこたぁない
っていうかそういう記述ミス以外になんか理由ないですかね。
何回も手動で書き直したり、他のファイルで試したりもしたんです。
ダブルクオートにしたりしてもだめでした。
もし何かこの書き方以外でミスしにくい書き方があるならどうか教えてください。
つまらない質問なのは申し訳ないです。
0915名無しさん@お腹いっぱい。
2001/07/21(土) 16:02ID:???$dayname = ('日','月','火','水','木','金','土') [$wday];
これは?
0916910
2001/07/21(土) 16:04ID:P71/r1DM回答ありがとうございます。
この行を削除した場合何もエラーは起きず、問題なく作動します。
っていうかスクリプト自体はもうほぼ完成してるんですが、
なぜかこれだけが引っかかって困っております。
ホントいまさらな感じなんですが…
教えていただいたやり方を試してみます。
ありがとうございました。
0917910
2001/07/21(土) 16:05ID:P71/r1DMあくまで配列に入れたいんですよね。
このやり方だと配列には入りませんよね?
とりあえずやってみます。
0918名無しさん@お腹いっぱい。
2001/07/21(土) 16:08ID:???> @dayname = ('月','火','水','木','金','土','日');
の最後のセミコロンが全角になってるから
> んなこたぁない
が全然信用できないんだけど。
ま、それはともかく、とりあえず use strict; と -w かな。
@dayname = qw(mon tue wed thu fri sat sun);
にしてみるとか。
あと、どんなエラーメッセージが出るのか教えてくれないと、見当違いな指摘しか出せないかも。
0919名無しさん@お腹いっぱい。
2001/07/21(土) 16:13ID:???・
・
・
・
>>915様
ありがとうございました。
>>918
ありがとうございます。
自分は生きる価値もない男だと悟ったので逝ってきます。
;
ああ、いまさら。。。。。。
0920名無しさん@お腹いっぱい。
2001/07/21(土) 16:18ID:???ま…初心者には極めて良くあることだし。
とりあえず先輩が「怪しい」と言った事は*徹底的に*確認してみようね♥
0921910
2001/07/21(土) 16:21ID:???もう生意気な口利きません。
精進します。
0922
2001/07/21(土) 21:15ID:kAjGF5YAって、どのくらいのサイズまでOKなんでしょうか?
2000とか3000行のファイルを置いても動作するのでしょうか?
0923名無しさん@お腹いっぱい。
2001/07/21(土) 21:31ID:???数行でも負荷が高ければ禁止だろうよ。
0924名無しさん@お腹いっぱい。
2001/07/21(土) 21:32ID:???そんなもんここで聞いてどうする。その鯖屋に聞けや
0925名無しさん@お腹いっぱい。
2001/07/22(日) 09:18ID:???0926名無しさん@お腹いっぱい。
2001/07/22(日) 09:36ID:???http://corn.2ch.net/test/read.cgi?bbs=php&key=991966646&ls=100
0927名無しさん@お腹いっぱい。
2001/07/22(日) 23:07ID:???0928名無しさん@お腹いっぱい。
2001/07/23(月) 02:19ID:???ヒサシブリニワラタヨ
0930名無しさん@お腹いっぱい。
2001/07/23(月) 15:58ID:ONcVkwDwたいてい、ブラウザ自身が(プラグインで)そのまま表示されますが、
fuu.cgi?nantoka.pdfという形式のリンクにして、cgiで何か工夫すれば、
pdfをダウンロードできたとおもいます。
その、「cgiで何か工夫」のやり方を、とんと忘れてしまいました。
教えていただけませんでしょうか?
0931名無しさん@お腹いっぱい。
2001/07/23(月) 16:58ID:???拡張子を変える。
ネスケとIEじゃ動作が違うよ。
0932931
2001/07/23(月) 17:03ID:???http://corn.2ch.net/test/read.cgi?bbs=php&key=988727833&ls=50
0933名無しさん@お腹いっぱい。
2001/07/23(月) 17:05ID:e2J6vTUkNetfirmの相対パスの書き方がわかりません…。
最初からwwwというディレクトリとcgi-binというディレクトリに分かれてますが、
cgi-binからwwwディレクトリの呼び出しがうまくいかないんです。
下図なのですが、
A.cgiから見て0〜9.gifへのパスを、
B.cgiから見てhoge.gifへのパスを、
C.cgiから見てindex.htmlへのパスをそれぞれ教えてください。
|----/www/
| |
| +--index.html
| |
| +--/image/
| |
| +--/gif/
| | |
| | +--0〜9.gif
| +--hoge.gif
|
|----/cgi-bin/
|
+--/hoge/
| |
| +--A.cgi
| +--A.log
|
+--/hoge2/
| |
| +--B.cgi
| +--B.log
|
+--C.cgi
+--C.log
0934名無しさん@お腹いっぱい。
2001/07/23(月) 17:16ID:???複雑だと思うなら絶対パスで指定しろ
0936名無しさん@お腹いっぱい。
2001/07/23(月) 18:07ID:???Perlの話題では無いと思われ。
結局htmlファイルとして見せるのだからcgi-binの仮想パスを
http://※/cgi-bin/とすると、相対パスは、
「../image/gif/0.gif」のようになる。
それともbinモードでgifを直接出力しているんなら
話はちがうけどね(w
0937名無しさん@お腹いっぱい。
2001/07/23(月) 18:25ID:???はい、すみません。perlに行き着く前の話です。
でもここでしか聞けないのです、すみません。
A.cgiはカウンタなのですが、どうしても画像が表示されないんです。
DDDでNetfirmのカウンタの設置がなんたらとありましたが、
うまくいった方はいるのでしょうか。
0938名無しさん@お腹いっぱい。
2001/07/23(月) 18:39ID:???絶対パスを書けない訳でもあるのか?
A.cgi->0-9.gif
相対パス
./../../www/image/gif/0-9.gif
絶対パス
/home/foo/www/image/gif/0-9.gif
あとは自分で考えろ
0939名無しさん@お腹いっぱい。
2001/07/24(火) 00:07ID:3WzxCf.o「Global symbol "$no" requires explicit package name at hoge.cgi line 5.」
というのがいっぱい出て、
Execution of nikki.cgi aborted due to compilation errors.
になります。
execution...はわかるのですが、Global symbol...というのはなんなのでしょうか?
0940名無しさん@お腹いっぱい。
2001/07/24(火) 00:40ID:???グローバル変数
0941名無しさん@お腹いっぱい。
2001/07/24(火) 14:09ID:???補足:変数をmy宣言すればエラーはなくなります。
0942名無しさん@お腹いっぱい。
2001/07/24(火) 21:15ID:???@a=(
['山田太郎','男','19780101'],
['田中花子','女','19901122'],
['鈴木一郎','男','19850613'],
);
配列 @a に名前、性別、生年月日が入っている場合、
若い順に'田中花子'、'鈴木一郎'、'山田太郎'となるように
並べ替えるには、どうすればよいのでしょうか?
配列の配列をどうやってsortすればいいか判りません。
0943名無しさん@お腹いっぱい。
2001/07/24(火) 21:19ID:???0945名無しさん@お腹いっぱい。
2001/07/25(水) 06:01ID:Sh3McWYI0946名無しさん@お腹いっぱい。
2001/07/25(水) 06:08ID:???hoge は ほげ です。
0947946
2001/07/25(水) 06:10ID:???bah 【発音】bα':、【レベル】7{間投} ばかばかしい!、ばかな!、フフン!、ヘン!、ベーだ
とか
blah 【発音】blα':、【レベル】6{形} 退屈な、つまらない、毒にも薬にもならない{名} ばかげたこと、ナンセンス
とか
fugaとかahoとかunkoとかも使います。
@pair{0}[3] とかするとエラーになってしまうんです。
むずかしいぃ・・・
0949名無しさん@お腹いっぱい。
2001/07/25(水) 09:27ID:???すさまじいネタだな。
でも考えすぎ。
もっと単純っぽいのにすればいいのに。
0950名無しさん@お腹いっぱい。
2001/07/25(水) 09:37ID:???そいつはちょいと複雑だな
%pair = (0 => [0, 1, 2, 3]);
$value = (@pair{(0)})[0]->[3];
print "$value\n";
尤も俺ならもっと単純な方法を取るがね。
$value = $pair{0}[3];
print "$value\n";
0951名無しさん@お腹いっぱい。
2001/07/25(水) 09:44ID:???$value = @pair{(0)}->[3];
0952948
2001/07/25(水) 10:11ID:???実は突然慣れない事をまかされてしまって、必死こいてる次第です。
本を買ってきて勉強しますです。。。WEBと漏れの頭じゃ効率悪すぎ
やりたいのはたったこれだけの事なのですが
リスト1(要素数は不定)
"mother","40yo","aidaho"
"father","45yo","newyork"
"dog","1yo","hawaii"
(以下こんな感じで200行程続く)
リスト2
"aidaho","40yo","mother"
"newyork","45yo","father"
"hawaii","1yo","dog"
用は並べ替えたいだけなのです、 はは・・・・
本屋さんに逝って、本買って何故ネタなのか頑張って考えます、
回答有難う御座いました。
0953948
2001/07/25(水) 10:15ID:???その要素の一つづつをもう一回配列に入れようと思ったのです。
って何言ってるか解らなくなって来た 頭いたい・・・
0954名無しさん@お腹いっぱい。
2001/07/25(水) 13:01ID:???あなたには、新スレ作成の権利と義務が与えられました。速やかに
このスレのPart.6を作成して下さい(藁
0955949
2001/07/25(水) 15:57ID:???ネタじゃなかったのか、スマソ。
んじゃマジレスしておく。参考になればどうぞ。
my @a = qw(mother 40 aidaho);
my @b = qw(father 45 newyork);
my @c = qw(dog 1 hawai);
my %pair = (0 => [\@a, \@b, \@c]);
print @{$pair{0}->[0]}->[0]; # mother
print @{$pair{0}->[0]}->[1]; # 40
print @{$pair{0}->[0]}->[2]; # aidaho
print @{$pair{0}->[1]}->[0]; # father
print @{$pair{0}->[1]}->[1]; # 45
print @{$pair{0}->[1]}->[2]; # newyork
print @{$pair{0}->[2]}->[0]; # dog
print @{$pair{0}->[2]}->[1]; # 1
print @{$pair{0}->[2]}->[2]; # hawai
>>950
よろしく(藁
0956名無しさん@お腹いっぱい。
2001/07/25(水) 16:41ID:LDIFpqRg種類と名前で分けて、それぞれ変数に入れたいのですが
うまくいきません。
neko giko
・・・というデータを使ってやってみました。
$data = "neko giko";
$data = s/(\S+) (\S+)/$syurui,$namae/;
print "$syurui\n";
print "$namae\n";
exit;
結果は何も表示されません。どなたかおしえてください。
0957956
2001/07/25(水) 16:44ID:LDIFpqRg[(種類)(tab)(名前)]というフォーマットのデータを・・・
↑の部分わかり難いですが[(種類)(TAB)(名前)]という表示です。
0958名無しさん@お腹いっぱい。
2001/07/25(水) 16:52ID:???$data = "neko giko";
($syurui, $namae) = split /\t/, $data;
0959956
2001/07/25(水) 21:55ID:KeUxvh6I\tを\sにしたら、うまく動きました。
0960名無しさん@お腹いっぱい。
2001/07/25(水) 23:37ID:???0961名無しさん@お腹いっぱい。
2001/07/25(水) 23:39ID:???0962名無しさん@お腹いっぱい。
2001/07/25(水) 23:47ID:???シンスレ係に任命
0964名無しさん@お腹いっぱい。
2001/07/26(木) 00:11ID:HJVdQqzUなるほど。これでスッキリしました。
サンクス
0965undefさん
2001/07/26(木) 00:41ID:???http://corn.2ch.net/test/read.cgi?bbs=php&key=996075607&ls=50
0966950
2001/08/06(月) 02:11ID:???惜しいことをしてしまったかな(藁
0967名無しさん@お腹いっぱい。
2001/08/17(金) 22:15ID:???0968名無しさん@お腹いっぱい。
01/09/16 23:55ID:???をsubstrなどで途中で区切って
...を最後につけるにはどうすればいい?
ふつうに
$msg2 = substr($msg,0,20);
などとすれば
全角を途中できることになる場合があるので
むりなので。。。
0969名無しさん@お腹いっぱい。
01/09/17 00:13ID:???新スレは
http://corn.2ch.net/test/read.cgi?bbs=php&key=996075607&ls=50
−−−−−−−−−−−−−−終了−−−−−−−−−−−−−−
0970名無しさん@お腹いっぱい。
01/09/17 00:15ID:???Part 7
http://corn.2ch.net/test/read.cgi?bbs=php&key=1000267444&ls=50
0971名無しさん@お腹いっぱい。
01/09/17 00:25ID:???6ならまだしも何で一ヶ月も前のスレに・・ w
>>968
大崎さんの所は参考になるぞ
http://www.din.or.jp/~ohzaki/perl.htm
ここはおしまいなんです、続きは新スレでね
0972名無しさん@お腹いっぱい。
01/09/17 01:33ID:???−−−−−−−−−−−−−−終了−−−−−−−−−−−−−−
0973名無しさん@お腹いっぱい。
01/09/17 18:26ID:???sub cut_string {
$_ = shift;
my($num) = shift;
my($opt) = shift;
m/(^(?:[\x00-\x7f]|[\xa1-\xfe][\xa1-\xfe]|\x8e[\xa1-\xfe]|\x8f[\xa1-\xfe][\xa1-\xfe]){$num})/
? $1 . ($opt ? '...' : '')
: $_;
}
ただし、EUCに限る。
0974名無しさん@お腹いっぱい。
01/09/17 21:56ID:???0975名無しさん@お腹いっぱい。
01/09/17 22:30ID:???0976.
01/09/17 22:47ID:???0977..
01/09/17 22:48ID:???0978...
01/09/17 22:50ID:???0979....
01/09/17 22:51ID:???0980.....
01/09/17 22:52ID:???0981......
01/09/17 22:53ID:???0982.......
01/09/17 22:54ID:???0983........
01/09/17 22:55ID:???0984.........
01/09/17 22:56ID:???0985名無しさん@お腹いっぱい。
01/09/18 00:46ID:???0986千 ◆yH3hWzUo
01/09/18 18:37ID:???0987千 ◆yH3hWzUo
01/09/18 18:38ID:???0988千 ◆yH3hWzUo
01/09/18 18:38ID:???0989千 ◆yH3hWzUo
01/09/18 18:38ID:???0990千 ◆yH3hWzUo
01/09/18 18:38ID:???0991千 ◆yH3hWzUo
01/09/18 18:38ID:???0992千 ◆yH3hWzUo
01/09/18 18:38ID:???0993千 ◆yH3hWzUo
01/09/18 18:39ID:???0994千 ◆yH3hWzUo
01/09/18 18:39ID:???1000
01/09/18 19:40ID:tsbbU4Ew10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。