【Perl】初心者コーナーPart9
レス数が1000を超えています。これ以上書き込みはできません。
0001名無しさん@お腹いっぱい。
01/12/28 23:21ID:SPLRvqQi1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。
1と3が無いと誰も答えられないよ、良い回答は良い質問から。
一緒に勉強しましょう。
参考書籍はこちら【【Perl,CGI】参考書籍 第2版 】
http://pc.2ch.net/test/read.cgi/php/988809842/
CGIの質問はこちら【CGIだけど、なんか質問ある?part5】
http://pc.2ch.net/test/read.cgi/php/1009331505/
その他の雑多な話題は、【CGIに依存しないPerlの話題一般】
http://pc.2ch.net/test/read.cgi/php/991313362/
過去ログ、その他の役立ち情報は>>2-10を見よう。
0002名無しさん@お腹いっぱい。
01/12/28 23:32ID:SPLRvqQiPart1 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 参照不能
Part5 http://pc.2ch.net/test/read.cgi/php/988728069/
Part6 http://pc.2ch.net/test/read.cgi/php/996075607/
Part7 http://pc.2ch.net/test/read.cgi/php/1000267444/
Part8 http://pc.2ch.net/test/read.cgi/php/1003900311/
[ひまぢん氏のミラー]
Part1 http://www.angelfire.com/ak5/2ch-web-program/kako/957208980.html
Part2 http://www.angelfire.com/ak5/2ch-web-program/kako/971817087.html
Part3 http://www.angelfire.com/ak5/2ch-web-program/kako/979894521.html
Part4 http://www.angelfire.com/ak5/2ch-web-program/kako/984430156.html
Part5 http://www.angelfire.com/ak5/2ch-web-program/kako/988728069.html
0003名無しさん@お腹いっぱい。
01/12/28 23:34ID:SPLRvqQi・Perl Com: http://www.perl.com/pub/
・CPAN.com: http://search.cpan.org/
・ActivePerl: http://www.activestate.com/
・CGI-ML:http://forest.ne.jp/cgi-ml/
[お薦め]
・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
・Perl初心者の部屋:http://www.harukaze.net/~mishima/perl/
・Perlリファレンス:http://www.big.or.jp/~mio/ga/pl/plref/pl_ref.htm
・Perlのページ:http://homepage1.nifty.com/nomenclator/perl/
[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/
0004名無しさん@お腹いっぱい。
01/12/28 23:37ID:SPLRvqQi・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
[Security]
・安全なプログラミングのためのガイドライン:http://www.FreeBSD.org/ja/security/#spg
・Perl security:http://www.perldoc.com/perl5.6/pod/perlsec.html
・CGI and Security http://www.japu.org/cgi/security/
・Perl security和訳:http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlsec.html
・The Unofficial Web Hack FAQ:http://www.nmrc.org/faqs/www/
・How to Write Secure Code:http://www.shmoo.com/securecode/
・Safe CGI Programming :http://www.improving.org/paulp/cgi-security/safe-cgi.txt
[OS]
・Linux日本語マニュアル:http://www.linux.or.jp/JM/
・FreeBSD日本語マニュアル:http://www.jp.freebsd.org/man-jp/
0005_gunzip
01/12/28 23:46ID:SPLRvqQiPerl6 & Parrot VM についての情報
http://dev.perl.org/perl6/
--------------------
Parrot Hello world!
--------------------
# hello.pasm
print "Parrot Hello world!\n"
end
0006名無しさん@お腹いっぱい。
01/12/29 00:20ID:5xfLHV23時のお勧めサイトって有る?
0007名無しさん@お腹いっぱい。
01/12/29 01:08ID:???TryAndCatch萌え ヽ(´ー`)ノ
FILE *handle1 = NULL, *handle2 = NULL, *handle3 = NULL;
try {
handle1 = fopen ( ... );
handle2 = fopen ( ... );
handle3 = fopen ( ... );
...
}
catch ( ... ) {
if ( handle1 ) close ( handle1 );
if ( handle2 ) close ( handle2 );
if ( handle3 ) close ( handle3 );
throw;
}
0008名無しさん@お腹いっぱい。
01/12/29 14:21ID:gaX+fcP8文字列検索よりは早そうだし。
0009名無しさん@お腹いっぱい。
01/12/29 22:51ID:???0010名無しさん@お腹いっぱい。
01/12/30 08:01ID:tHdvBy1wスレ立てお疲れ様です。
さっそく質問させていただきます。
Win98にActivePerlをインストールしましたが、
DOSプロンプトから起動できません。
「コマンドまたはファイル名が違います」と言われてしまいます。
sample.plをダブルクリックすると、一瞬だけですが起動するので
Perl自体のインストールは出来ていると思いますが……。
何がおかしいのか、考えられることを教えてください。
0011名無しさん@お腹いっぱい。
01/12/30 11:13ID:???DOSプロンプトから perl -v でVersion情報が出力されますか?
問題無く出力されるようなら、
perl C:\somewhere\sample.pl
で実行できるはずですが。(C:\somewhere\は適当に読み替えて下さい)
0012デフォルトの名無しさん
01/12/30 11:16ID:???セッションのテストってどんな風にしてます?
モンキーレンチとか使えるのかなぁ・・・・・
0013名無しさん@お腹いっぱい。
01/12/30 12:59ID:???PATHが通ってないだけじゃないの?
0014名無しさん@お腹いっぱい。
01/12/30 13:56ID:???能動的な型付けとか、最適化に関わる所が結構突っ込まれてるのかな
Class eq Package じゃ無くなるってのも中々よさげ
今よりずっとOOusefulになると良いな
でもオペレータ変更しすぎなんだよ先生よぅ・・・・
%hash{foo} ← これが参照外したスカラーなんて・・・ (死
0015名無しさん@お腹いっぱい。
01/12/30 13:59ID:???>>10
同じくPATHに一票
SETENVだかPATHだかでSET出来たかな(適当)
キーワード書くから調べて栗 w
「PATH」「環境変数」「DOS」「追加」「SET」
0016名無しさん
01/12/30 14:54ID:???間違えてんぞ〜
$hash->{foo} が $hash{foo} or $hash.{foo} だろ、んで
$hash{foo} が %hash{foo} だよん
つーか嫌すぎこれ
0017名無しさん@お腹いっぱい。
01/12/30 14:57ID:vG4UP0Ysforeach(0..2){$tmp[$_] = $tmp{aa$_};}
みたいな事をやりたいのですが、
foreach(0..2){$tmp = "aa$_"; $tmp[$_] = $tmp{$tmp};}
しかわかりません。
もっとスマートな方法があれば教えて下さい m(_ _)m
0018名無しさん
01/12/30 15:05ID:6JQJx1N90019名無しさん
01/12/30 15:18ID:???ん?
foreach(0..2){$tmp[$_] = $tmp{aa$_};}
↓
foreach(0..2){$tmp[$_] = $tmp{aa.$_};}
002017
01/12/30 15:42ID:vG4UP0Ysあっ、そうですね。恥。。
即レスどうもありがとうございます。
002110
01/12/30 17:17ID:???どうもお答えありがとうございます。
カレント\binでは、perl -vもちゃんと動いていましたが、
他の場所からでは起動できませんでした。
だからアドバイスどおり、PATHが通っているかをまず疑いました。
autoexec.batには、SETで始まる\binまでの行がちゃんとありました。
しかし実際にはうまくいっていないため、
試みにこの行を上の方にもってきて、再起動をすると、なぜかうまくいきました。
というわけで(一応無事に)解決したようです。
どうも助かりました。ありがとうございました。
0022名無しさん@お腹いっぱい。
01/12/30 23:56ID:uoyv0Wnn上の様に追記でファイルをオープンした場合
ファイル内容が空になる瞬間というのはあるのですか?
0023名無しさん@お腹いっぱい。
01/12/31 00:40ID:???ある。
* 他のプロセスが空にする。
* 自分で空にする。
0024ダメ男
01/12/31 03:34ID:zWJaANkc002522
01/12/31 03:42ID:lAX6iAu+平気だったです。
002622
01/12/31 04:42ID:lAX6iAu+$tmp = "o(";
@data=grep(!/$tmp/,@data);
↑これを実行するとエラーとなるんですが、
何故でしょうか?
0027ダメ男
01/12/31 05:07ID:SHzKQGPS↓
$tmp = "o\\(";
0028名無しさん@お腹いっぱい。
01/12/31 12:50ID:???002922
01/12/31 15:02ID:???さらにgrepした後入力を表示させたいのですが、
こういう場合$tmpに格納されている文字はただの文字として
検索するという方法は無いのでしょうか?
またo(以外にも「ソ」もエラーになるのは文字コードが
メタ文字とかぶっているからですか?
003022
01/12/31 15:27ID:???@data=grep{($tmp1,$tmp2)=split /\t/,$_;$tmp1 ne $tmp}@data;
で緊急避難しました。
29の方法あったら教えて下さい。
0031デフォルトの名無しさん
01/12/31 15:51ID:???無い。但し存在しないファイルならサイズはO
>30
キーワード出たら検索な
http://www.google.com/search?hl=ja&q=PERL+%83%81%83%5E%95%B6%8E%9A+%83G%83%89%81%5B&lr=lang_ja
0032名無しさん@お腹いっぱい。
01/12/31 15:59ID:???CGIかなにかだと思うけど、内部の処理でS-JISを使用するのはお勧めしない。
入出力と内部の処理は分けて、内部ではEUCなんかを使うのが吉。
あと参考までに、quotemeta() や \Q も調べておくとよいでしょう。
perldoc -f quotemeta
perldoc perlre
003322
01/12/31 21:02ID:???どうもすいませんです;;
と検索どうもです。
>>32
なるほどです。
quotemeta() 調べてみます。
ご親切にどうもありがとうございました。
0034おねがいします!
02/01/01 02:00ID:RjS1sLKo逆スラッシュが打てません。
\になっちゃうんです。
どうしたらよいのでしょうか?
0035名無しさん@お腹いっぱい。
02/01/01 02:43ID:???これをインストールしよう!
0037名無しさん@お腹いっぱい。
02/01/01 02:55ID:???おれにはちゃんと逆スラッシュに見えてるが?
003834
02/01/01 02:57ID:dE6tT7EDすみません。
Mac OS 9.04
MacJPerl 5.2.Or4 J1
です。
よろしく!
0039名無しさん@お腹いっぱい。
02/01/01 03:01ID:???perlfuncだとdbm〜〜の変わりにtie,untieを使えと書かれてますが
レンタルサーバでモジュールの依存関係(標準も入ってないdeath)何かが面倒な時
はdbm〜を使っても良いですか?
1000件程度なんでそれ程速度も気になりません
>>34
\のままで良いよ (^-^
全角はダメだよ
0040
02/01/01 06:07ID:RYgD0SJzという62文字を使って 1 (あるいは 0)から ZZZZZZZZ までの
62進数を順番に生成したいのですが、上手にやる方法はありますか?
0041デフォルトの名無しさん
02/01/01 16:51ID:???ハードコーディングで良いなら
push (@value,0) for (1..8);
これを初期値(つまり$value[0]が1桁目、$value[1]が2桁目)にして
値を1増やす関数と、@valueを分解しながら$char[$value[$_]]とかして
表示する関数を書いてみ。
それが出来たら桁とか@charを可変に出来る様にしてみよう。
0042名無しさん@お腹いっぱい。
02/01/01 22:46ID:mPGnAllsBenchmark: timing 10000 iterations of for,foreach...
for: 27 secs (27.18usr 0.00 sys = 27.18 cpu)
foeach: 11 secs (10.54usr 0.00 sys = 10.54 cpu)
この出力結果はどういう意味なんでしょうか。forとforeachというアイテム?を比べて、
forが27秒かかってforeachは11秒、これはforeachの方がお得だね、というのは判るんですが、
usrとsysの意味が判らないです。この二つからcpuの使用率を出してるようなんですけど…
0043名無しさん@お腹いっぱい。
02/01/02 02:17ID:???んでsysが他のプロセスが使った時間じゃネーノ
んでcpuがトータルのCPU時間って事じゃネーノ
適当に想像だけどね
つーかその結果の方が気になるわっ (w
004442
02/01/03 02:53ID:jaPZDeyiありがとうございました。
0045
02/01/03 23:06ID:sFx8M0Ljdbmかndbm入っているんだったら、dbmopen使ったって別にいいんじゃないかと思うけど。
将来のバージョンでの対応が保証がされないだけで(笑)
動けばいいやっていうんだったら、全然かまわないかと。
0046名無しさん@お腹いっぱい。
02/01/04 00:04ID:VeQd/ckC0047名無しさん@お腹いっぱい。
02/01/04 00:16ID:???0048名無しさん@お腹いっぱい。
02/01/04 12:28ID:SUGVa40qGDBMを使ってDB化(?)しているのですが、
tell & seek のサイズ限界にひっかかっているようです。
この場合は、ファイルを分割するしかないのでしょうか?
初心者です。よろしくお願いします。
0049名無しさん@お腹いっぱい。
02/01/04 14:01ID:???なかなか面白そうだ。
005048
02/01/04 14:14ID:SUGVa40q005148
02/01/04 14:15ID:???005248
02/01/04 14:30ID:SUGVa40q教えてちゃんですみません。ロジックのヒントをお願いします。
0053名無しさん@お腹いっぱい。
02/01/04 14:49ID:kY4aCT8XあるCGIで生成した結果を表示後それをHTMLファイルとして保存するにはどうしたらよろしいでしょうか?
0054名無しさん@お腹いっぱい。
02/01/04 14:51ID:???005553
02/01/04 14:51ID:kY4aCT8XHTMLとして保存するスクリプト、または関数をご存知の方お教えください
005653
02/01/04 14:53ID:kY4aCT8X追記です
HTMLとして保存できるスクリプトか関数をお教えください
0058初心者
02/01/04 14:58ID:???005953
02/01/04 15:04ID:kY4aCT8Xマジ、わからないんですが、おっしゃられているのは「ファイル(F)→名前を付けて保存(A)...」
で保存してってことですか?
0060名無しさん@お腹いっぱい。
02/01/04 15:09ID:???ダイジョウブ?
0061初心者
02/01/04 15:10ID:???http://www.google.com/search?num=100&hl=ja&q=perl+%83t%83@%83C%83%8B%83n%83%93%83h%83%8B+print&lr=lang_ja
あとは自分で調べる努力を。
006253
02/01/04 15:18ID:kY4aCT8Xありがとうございます
0063名無しさん@お腹いっぱい。
02/01/04 16:04ID:???どのように記述すればいいんでせう?
よろしくお願いします。
0064名無しさん@お腹いっぱい。
02/01/04 16:05ID:???0065名無しさん@お腹いっぱい。
02/01/04 16:14ID:???分割したファイルが一つのファイルのように見えるようにインターフェイスを整えるのだ。
だから本当に大きなファイルが扱えるわけではない。
それでいいならちょいと書いてみるが?
0066名無しさん@お腹いっぱい。
02/01/04 16:33ID:ZcIQHoBD006748
02/01/04 16:33ID:SUGVa40qありがとうございます。お願いいたします。 ;;
ファイルサイズはこの先大きくなる一方なのですが、分割していくしかないでしょうか?
もしくは、データベースに突っ込むか・・・・・・
「Cで書け!」と言われてしまいました。
齢20代後半で今からCは身に付くでしょうか? ソース見てもクラクラします ;;
006865
02/01/04 16:58ID:???あくまでも個人的に面白いと思うから作るだけなんで。
だからといって適当な物を書くわけじゃないですが。
ついでに言うと*DBM_Fileとの連携は出来ないかと。
0069名無しさん@お腹いっぱい。
02/01/04 17:16ID:???KENTのPetitBoardに新記事のマークを付けるにはどうしたらようのでしょうか???
167 名前:名無しさん@お腹いっぱい。 投稿日:02/01/04 16:51 ID:???
↑何でマルチすんだよ糞ガキ消えろ
168 名前:名無しさん@お腹いっぱい。 投稿日:02/01/04 16:56 ID:ZcIQHoBD
うるせぇ俺は20歳だ。そんだけ気になっとんだ。
169 名前:名無しさん@お腹いっぱい。 投稿日:02/01/04 16:57 ID:ZcIQHoBD
そんな事より即効で文句言うてめぇの方がガキだ。
0070名無しさん@お腹いっぱい。
02/01/04 17:37ID:AGeoy3Tcバイナリで書くよりはCの方が簡単です。
まぁマジレスすると身につかないことは無い。
構文自体はPerlに似てるし。ただ、Perlに比べて
もっと「プログラムらしい規約」が多々出てくるので
Perl以外にプログラムをやったことが無かったら
馴染めないかもね。
おれは逆にZ80からCやFortran、RINGOやAppleScript等を
経てからPerlに来て、なかなかPerlに馴染めなかったけど。
007148
02/01/04 18:02ID:SUGVa40qすみません。ヒント程度の気楽なもので十分です。
ありがとうございます。
やりたいのはレコードの検索なので、DBMと連携なりは、考えます。
>>70
ありがとうございます。道のりの割に、使う機会が少なそうで・・・・
でも追い込まれないと勉強しないし・・・・・
自分は、N88BASIC -> 永い永い月日 -> Perl, PHP, VBScript群
しょぼ。
007265
02/01/04 19:28ID:???・配列にファイルハンドル(以下FH)を入れておく
・そのFHを通じて何か書き込みをする度にサイズをチェック(stat()してもいいし長さを記録しておいても良い)
・サイズが一定値を超えたら新しいファイルを作成して配列に新しいFHを追加
・seek()やらtell()やらは合計ファイルサイズを考慮して計算
・これらのことを通常のIOインターフェイスを通じて行えるようにタイクラスに閉じ込める。
って感じで(超適当な説明だが)
DBMと連携するにはまた別のことを考えなきゃいけないね。
複数のDBMハッシュを保持したタイハッシュクラスを考えればいけるんじゃないだろうか。
0073
02/01/04 19:32ID:CJ4spD6O0074
02/01/04 19:36ID:CJ4spD6Oメインデータは、データのカテゴリごとに分割する。
データ自体に一意のID振っておけば、それでデータの抽出が出来る。
そもそも、そんな巨大なデータをwhileとかで回しても、効率よくないだろうし。
007548
02/01/06 14:51ID:4VaeiTUGうをー! ありがとうです! エンジンかかってきた! やるでー!!
>73 >74
ありがとー
DBに入れるのも考えましたが、ディスク資源も既に虫の息なので、ホント ツライです。
0076名無しさん@お腹いっぱい。
02/01/07 23:02ID:???シーラカンス本(約\3,500)説明ワカリヤスイヨ.
プログラミング一から勉強するよりよっぽど楽勝ですし。
0077名無しさん@お腹いっぱい。
02/01/08 16:04ID:2bmV9luVファイルに記録する時などでファイルを
open (FILE,"+<$file");
で開いて変更するのと
open (FILE,"$file");
書き換え作業
open (FILE,">$file");
という方法だと後者だと良くないのでしょうか?
0078名無しさん@お腹いっぱい。
02/01/08 16:06ID:???0079名無しさん@お腹いっぱい。
02/01/08 16:11ID:???どういう考えでそういう結論に至ったのか問い詰めたい
0080名無しさん@お腹いっぱい。
02/01/08 16:20ID:2bmV9luVいろいろスクリプト見てると前者の方が多いと感じまして
後者の方はいかんのかな?と思ったです。
特に問題は無いと考えて良いみたいですね。
他に美しくない、負荷がかかる、なんかの問題も
無いのでしたら、何故前者の方がよく使われてるのでしょうか?
0081名無しさん@お腹いっぱい。
02/01/08 16:35ID:???処理中に落ちてデータが壊れる確率も大差ない気がする。
消えにくいようにするならこれかな?
open IN, "<$file" or die;
# ...
close IN;
open OUT ">$file.tmp" or die;
# ...
close OUT;
rename "$file.tmp" => "$file" or die;
0082名無しさん@お腹いっぱい。
02/01/08 16:36ID:XZoY9u5U後者の方が壊れる確率高いよ。
0083名無しさん@お腹いっぱい。
02/01/08 17:03ID:2bmV9luV減る可能性がある場合はtruncateは必須なんでしょうか?
0084名無しさん@お腹いっぱい。
02/01/08 17:09ID:???まず自分で試して見れ。
0085名無しさん@お腹いっぱい。
02/01/08 17:11ID:???ファイルサイズを揃えておきたい時なんかはそのまま書き出して
閉じたりするよ
必須と聞かれればNOになる
0086名無しさん@お腹いっぱい。
02/01/08 17:28ID:???ごめんです
試したら思いっきり変になりました。
これってOSによって実装されてない場合あるんですよね?
あんま使いたくなかったなぁ。
レスどうもでした。
0087名無しさん@お腹いっぱい。
02/01/08 17:45ID:2bmV9luV皆さんはチャットやらカウンターなんか作らない
かもしれないですが、
カウンターの場合は読み書き両用で1度だけopenするのに対して
チャットなんかだと読み込みのみでopenして
書きこみはまた後で書き込みのみでopenしてるのですが
この違いは何なのでしょうか?
0088名無しさん@お腹いっぱい。
02/01/08 17:48ID:???0089デフォルトの名無しさん
02/01/08 18:06ID:???ただCGI(だよな??)は排他とかトランザクション取らなきゃならないので
色んな手法でデータの同一性を保証出来るようなコードを書く必要は有る
チャット位ならどうって事ないような気がするが
0090どなたか
02/01/09 12:29ID:6I7ENOMK例えば1から100の範囲で4つ乱数を生成して、それを一つの配列に入れたいんですが。
$max = 乱数の最大値
$num = 個数
@kekka = 得られた乱数を[0..($num-1)]で格納する配列
という風にしたいんですが、どうしてもうまくいきません。
単純に指定個数の乱数を作って配列に入れるならできるんですが、
重複を許さないためにifやwhileで今までの結果を参照させようと
するとうまいコードが思い浮かびません。
もしかしたら簡単な解決方法があるのかと思いここに書き込ませてもらいました。
0091デフォルトの名無しさん
02/01/09 13:06ID:???until ($n == $max) {
$r = rand(100);
push(@ary,$r) and $n++ if(!grep /$r/,@ary);
}
0092デフォルトの名無しさん
02/01/09 13:08ID:???until (my $n == $num) {
my $r = rand($max);
push(@kekka,$r) and $n++ if(!grep /$r/,@kekka);
}
0093名無しさん@お腹いっぱい。
02/01/09 13:19ID:???my @kekka;
my $max = 100;
my $num = 4;
die('$max の値が $num より多いとダメだから注意な。') if $num > $max;
my %temp;
my $rnd;
my $n = $num;
!$temp{($rnd = int(rand $max) + 1)}++ and push(@kekka, $rnd) and --$n while $n;
009493
02/01/09 13:20ID:???009590
02/01/09 13:23ID:6I7ENOMKでも実行してみたらループしてる・・・うーん、どっか変数間違えたかな。
こんな感じでやってみたんですが
#ここから
$max="10";
$num="4";
until (my $n == $num) {
my $r = int(rand($max));
push(@kekka,$r) and $n++ if(!grep /$r/,@kekka);
};
print "@kekka";
#ここまで
これってgrepの結果が真だった場合は同じ$nでまたループしてるんですよね。
ということは、grepが真を返してない(?_?)
0096名無しさん@お腹いっぱい。
02/01/09 13:25ID:lzfPILoX009790
02/01/09 13:26ID:???助かった〜〜〜
91さんも93さんも有り難うございます。
解読して考え方を参考にしますね。
009890
02/01/09 13:27ID:6I7ENOMKperl5だといらないそうです
0099名無しさん@お腹いっぱい。
02/01/09 13:28ID:???らしき話をどこぞで見たような。
010090
02/01/09 13:31ID:???呼び出しているそうです。その場合はtimeとprocess IDを元にsrandしている
ことになるそうです。受け売り。
0101名無しさん@お腹いっぱい。
02/01/09 13:54ID:lzfPILoXなるほど〜、ありがとうございます。
5.003以前だとsrandしないといけないって事ですね。
バージョン依存は難しいです、いろいろ。。。
0102名無しさん@お腹いっぱい。
02/01/09 15:11ID:yTZZpKpqまったくうまい子といきません。
やりたいことは、名前入力 名前に対してのカウント数
これくらいです。
一応ソース載せます、めちゃくちゃだと思うので一から出直せとかきついこといってください。
read(STDIN, $query, $ENV{'CONTENT_LENGTH'});
foreach $pair(split(/&/, $query)){
($name,$value)=split(/=/,$pair);
$name=$value;
}
OPEN(FILE, ">+./$name/count.dat);
$count=<FILE>;
print FILE ++$count;
close<FILE>;
OPEN(NAME, ">+./namedata.dat");
while ($check=<NAME>){
if ($check ne $query){
seek(NAME,0,2);
print NAME $query\n;}
}
####スミホマ
print"content-type: text/html\n\n";
print"<table border=\"1\">";
while($uname[$list]=<NAME>){
$data="./$uname[$list]/count.dat";
print"<tr><th>$uname[$list]</th><td>$data</td>\n";
}
print"content-type: text/html\n\n";
print"<table border=\"1\">";
foreach $key (sort keys %uname){
print"<tr><th>$key</th><td>
まだ途中です。
0103名無しさん@お腹いっぱい。
02/01/09 15:29ID:???それだとフォームからのを ほとんど読み捨てない?
あと
OPEN(hoge,">+ filename");
だと関数名が違ううえに 開いた途端ファイルが空になりそう。
http://tohoho.wakusei.ne.jp/wwwperl.htm
0104名無しさん@お腹いっぱい。
02/01/09 15:33ID:yTZZpKpqううむ、もっかいやり直して載せてみます。
頑張ります。ありがとー
0105名無しさん@お腹いっぱい。
02/01/09 22:11ID:???何を参考にしたらそんなソースになったのか知りたい。
0106名無しさん@お腹いっぱい。
02/01/09 22:46ID:CEjm/hO6<#!/usr/bin/perl
となってしまいます。windowsからアップしているのですが、
LFでアップしようがなんだろうが<がついてしまいます。
原因わかるかたいらっしゃったら教えてくださいー
0107名無しさん@お腹いっぱい。
02/01/09 22:50ID:no3DVS2qどこに?
0108名無しさん@お腹いっぱい。
02/01/10 11:13ID:6z++Gsnnopen(F, file) || die;
tie(%IDX, 'GDBM_FILE', file.gdbm);
$id = tell(F);
while(<F>) {
$name = $_;
#ココ?
$IDX{$name} = $id;
$id = tell(F); #この行は
}
untie %IDX;
close F;
これはうまくいくのですが、「$id=tell(F);」を、「ココ?」に入れる方が
正しい気がしてなりません。
しかし、そうやって作ったgdbmファイルの返す結果はズレズレです。
えらい勘違いしてるのかもしれませんが、よろしくお願いします。
0109名無しさん@お腹いっぱい。
02/01/10 12:20ID:???0110名無しさん@お腹いっぱい。
02/01/10 12:50ID:???まったくうまい子といきません。
ワラタ
0111名無しさん@お腹いっぱい。
02/01/10 13:30ID:???鯖の問題では?
タグ埋め込もうとしてるとか
0112108
02/01/10 13:54ID:6z++Gsnn「ポインタは行頭にしか置かれない」と思い込んでました。アホー
前行の行末 = 次行の行頭 なんですね。
スッキリしました。ありがとうございました。
0113名無しさん@お腹いっぱい。
02/01/11 13:45ID:sSwGXaK5これ使ってる人って居ます?
0114名無しさん@お腹いっぱい。
02/01/11 15:34ID:uaH1srIUソース見てると出てくる
<input type=hidden name=time value=1010730193>
って何? 時間みたいだということはわかるんだけど・・・
あと,perlで書かれた2ch書き込みプログラムのサンプルが
あったらきぼんぬ
0115名無しさん@お腹いっぱい。
02/01/11 15:50ID:USEv/wv3time関数で取得した書き込み時間をhidden属性で渡してると思われ。
0116名無しさん@お腹いっぱい。
02/01/11 15:55ID:???何の為に? (笑
0117名無しさん@お腹いっぱい。
02/01/11 15:57ID:???0118名無しさん@お腹いっぱい。
02/01/11 16:01ID:???0119名無しさん@お腹いっぱい。
02/01/11 16:08ID:???0120名無しさん@お腹いっぱい。
02/01/11 16:15ID:???本当に困っています
教えて下さい
0121名無しさん@お腹いっぱい。
02/01/11 16:26ID:USEv/wv3>>120 = >>114 なの?
>>114でゆってる「ソース」ってブラウザ画面からとってきたやつ?
0122名無しさん@お腹いっぱい。
02/01/11 16:35ID:???0123114
02/01/11 16:37ID:uaH1srIUあ,>>120じゃないです,けどThx.IEやネスケの「ページのソースを見る」
ってやつだとオモタ(IEもネスケも使ってないから知らん).
生timeを10進数で書いただけなのね
…あ,もしかして,これをいじると連続投稿できたりするの?
もしかして(って,そこまで杜撰じゃないか)
0124名無しさん@お腹いっぱい。
02/01/11 16:43ID:???HTMLにID埋めて判別出来なる訳ないじゃん
0125121
02/01/11 17:01ID:???ソース見てない作者でもない >115で書いたことくらいしかわがんねっす。
0126名無しさん@お腹いっぱい。
02/01/11 17:06ID:???こときぼんぬ
0127121
02/01/11 17:18ID:???0128名無しさん@お腹いっぱい。
02/01/11 21:22ID:???0129名無しさん@お腹いっぱい。
02/01/12 02:26ID:Ex/FkKTs電卓を使いましょう。
0130名無しさん@お腹いっぱい。
02/01/12 03:30ID:???$ENV{'TZ'} = 'JST-9';
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
$day = ('日','月','火','水','木','金','土')[$wday];
$date = sprintf("%04d/%02d/%02d(%s) %02d:%02d:%02d",$year+1900,$mon+1,$mday,$day,$hour,$min,$sec);
}
とあって、時間表示で秒を表示させたくないとか年を表示させたくないとか、
色々変えたいのですが初心者すぎてどうしたらいいのかわかりません。
時間表示をどういう風にカスタマイズしたらいいのか、
解説してあるサイトを教えていただけませんか?
他の所も勉強すべきなんでしょうけど、急いでいるので
とりあえず時間表示の部分だけどうしたらいいのか知りたいのです。
検索しようにも漠然としててどうしたらいいかわからないし、よろしくお願いします。
0131
02/01/12 03:52ID:H5EXwuVV;### 時分秒・年月日・曜日を取得するなら以下で充分
($sec,$min,$hour,$mday,$mon,$year,$wday)= (localtime)[$[ .. $[+6];
;### 年および月は次のようにする
$year+= 1900; $mon++;
;### 時・分・秒・月・日は、ゼロサプレス無しにするなら次のように
;### する。(sprintf関数がオーバーヘッドは大きくてらっしゃるから)
if ( $sec < 10 ){ $sec= '0' . $sec; }
0132130
02/01/12 04:39ID:???ありがとうございます…
一生懸命理解しようとしたのですがよくわかりませんでした。
どこにどうやって記述したらいいのかが…
年表示は2002年なら02にするか非表示にしたいんです。曜日表示も消したいんですが…
例えば(02/01/12/04:38)か(01/12/04:38)のようにしたい。
途中経過を無視して答えだけクレクレ厨してるようで心苦しいのですが
どう書けばいいのか丸ごと教えてくださればうれしいです。
本当にすみません。
0133名無しさん@お腹いっぱい。
02/01/12 04:43ID:???>どう書けばいいのか丸ごと教えてくださればうれしいです。
ここはPerlのコーディングで困ってる人のスレです。
0134名無しさん@お腹いっぱい。
02/01/12 04:51ID:???http://pc.2ch.net/test/read.cgi/php/988808396/
0135張り直し
02/01/12 04:52ID:???http://pc.2ch.net/test/read.cgi/php/988808396/
「こういうふうにスクリプトを改造したいけどやりかたわかんないよー」
という人がいましたらここで聞いてください。
ひょっとしたらアドバイス出来るかもしれません。
0137
02/01/12 06:11ID:h7K0q4m9;### 年表示フラグ
$DISP= 1; # (0:年非表示, 1:年表示)
;### 年月日・時分の取得
$get_time= &get_time;
;### 年月日・時分取得用サブルーチン
sub get_time{
my( $min, $hur, $day, $mon, $year )= (localtime)[$[+1 .. $[+5];
$year+= 1900; $mon++;
if ( $min < 10 ){ $min= '0' . $min; }
if ( $hur < 10 ){ $hur= '0' . $hur; }
if ( $day < 10 ){ $day= '0' . $day; }
if ( $mon < 10 ){ $mon= '0' . $mon; }
$year= $DISP ? substr($year, -2, 2).'/' : '';
"$year$mon/$day/$hur:$min";
}
0138
02/01/12 06:29ID:gr/TbQbq補足しておきますが、字下げのために全角スペースを使用していますので、
コピペする場合は半角スペースに書き替えてください。
0139名無しさん@お腹いっぱい。
02/01/12 07:12ID:???ご丁寧にありがとうございます…
スペースを半角にしてそのままコピペしましたが、
でもそれでやると、[]となって一つも表示されません…
素直に改造スレへ逝って来た方がよさそうです…
0140
02/01/12 07:30ID:8mAO1za5これをやっても表示されないとなると困ったことですね。
念のため次の実行でワーニングが出るかどうか試してみては?
perl -wc xxx.pl
0141名無しさん@お腹いっぱい。
02/01/12 08:31ID:???sub get_time{
$ENV{'TZ'} = 'JST-9';
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
$date = sprintf("%02d/%02d %02d:%02d",$mon+1,$mday,$hour,$min);
}
0142名無しさん@お腹いっぱい。
02/01/12 10:04ID:???やっとわかりました!
希望通りにできました。
色々と変える変更も好きなようにできました。
脱線話題なのにつきあってくださって教えてくださって本当に感謝します、
ありがとうございました。
0143名無しさん@お腹いっぱい。
02/01/12 22:55ID:WkPCmc4xそれと、CGI作る際に覚えといたほうがいい言語って何ですか?perlは駄目??
0144名無しさん@お腹いっぱい。
02/01/12 23:24ID:???とほほとか。
CGIはPerlでもいいけどPHPの方が簡単だと噂
0145ム板の住人
02/01/13 03:44ID:XUMgdFRPちゃんと削除依頼も出していたみたいやから、えらいね。
144がいう。とほほはここ。
http://tohoho.wakusei.ne.jp/wwwperl.htm
PHPもいいけど、RubyができるならeRubyでもいいかも。
言語として簡単と言うより、PHPやeRubyはCGIを作るのが簡単。
CGIはPerlが一番資料があると思うけど、
配布されているPerlのCGIのソース見るとわかるように、
ほとんど暗号だから。
保守性やOOで組みたいなら、PythonやRubyを使った方がいいかもね。
0146初心者
02/01/13 04:52ID:DlteyoA5CGIを使いたいのですが
自分で色々やってみたんですがどうしてもできませんでした
やったことはActive PerlとJperlをInstallして
落としてきた掲示板CGIにそのパスを書いたんですが
FTPからそのCGIの属性変更をしようとしても変更できず
HTTP 500内部サーバエラーが出てできませんでした
どなたか詳しく教えていただけませんか?
0147名無しさん@お腹いっぱい。
02/01/13 04:54ID:H4tslrXdテキストファイルやMIDIファイルを主に扱いたいのですが
JPEGファイルだけでなくいろいろな形式のファイルを
アップロードできる掲示板のスクリプトで
デファクトスタンダードっぽい有名なものとかあるのでしょうか?
イメージ掲示板にはどこに行ってもこれと同じのを使っているなぁという
有名なのがあるみたいですが
0148名無しさん@お腹いっぱい。
02/01/13 04:54ID:34eWZDO9ネタだろ?
0149名無しさん@お腹いっぱい。
02/01/13 04:56ID:???http://www.google.co.jp/search?hl=ja&q=%83A%83b%83v%83%8D%81%5B%83_+cgi%81@%83t%83%8A%81%5B&lr=
これでもくらえ。
0150名無しさん@お腹いっぱい。
02/01/13 05:07ID:H4tslrXdおれも「アップローダー」&「CGI」&「フリー」&「配布」で
検索して同じように膨大な結果になったんですけど
無難なとこで、みんなが使っている有名なやつにしたいなぁなんて
ダメっすか?(^^;
0151名無しさん@お腹いっぱい。
02/01/13 05:39ID:???0152初心者
02/01/13 06:14ID:DlteyoA5ここでこんな事を聞くのはお門違いなのでしょうか
0153名無しさん@お腹いっぱい。
02/01/13 06:17ID:9ZeVW+fZいちいち反応しないでじっくり待ってみなよ。
0154名無しさん@お腹いっぱい。
02/01/13 06:53ID:???属性とは何か。パーミッションとは何か。
調べれば自ずと答えが見つかる気がする。
あとはhttpdのヘルプでも読んでくれ。
要するにPerlの問題じゃないって事。
0155名無しさん@お腹いっぱい。
02/01/13 07:14ID:rQlmrkvV0156名無しさん@お腹いっぱい。
02/01/13 07:34ID:Wnlhf2ri掲示板にトリップ機能を組み込みたいんですが、誰かわかりますか?
0157名無しさん@お腹いっぱい。
02/01/13 07:49ID:???みちのくんとこにある2ちゃんコピーの掲示板についてる。
0158名無しさん@お腹いっぱい。
02/01/13 11:31ID:0YPd0etQ#!/usr/bin/perl
print "Content-type:text/html\n\n";
require "a.cgi";
print $tmp;
require "b.cgi";
print $tmp;
require "a.cgi";
print $tmp;
exit;
a.cgiには $tmp="a";
b.cgiには $tmp="b";
と書いてあります。
と書くと、結果はabaとしたいのですが、abbとなるんです。
3回目のrequireが1回目と同じために3回目の処理を勝手にスキップ
してるのではないかと推測してみたんですがあってますでしょうか。
別の案として、
require "a.cgi";
$tmpa=$tmp;
require "b.cgi";
$tmpb=$tmp;
print "$tmpa$tmpb$tmpa";
と考えたんですが、a.cgi b.cgiは本来40個くらい変数格納していて、
全て変数に取っとくのもどうかと思い最初の案を考えたのですが。
日本語が不鮮明だな…。まとめてみると、
「2度目のrequireを有効にすることができるか、できるならその方法」
「別の案の場合、サーバーに掛かる負担ってのは憂慮するほどのものであるか」
の二点が疑問です。
どなたかご教授頂ければ幸いです。
0159名無しさん@お腹いっぱい。
02/01/13 11:49ID:???それは、requireの仕様。
# てか、requireの使い方を激しく勘違いしているような、、、
とりあえず、perldoc -f requireしてみること!
158の知りたいことが全て解説されている。
0160158
02/01/13 11:53ID:0YPd0etQrequireの使い方は人のCGIを見て使い方を自分の中で勝手に認識したので…。
perldoc -f requireやってみます。
というかどこで(?)やればいいのかも解らないのでとりあえず調べてきます。
それでは。
> というかどこで(?)やればいいのかも解らないので
コマンドラインから
0162名無しさん@お腹いっぱい。
02/01/13 13:35ID:2oX90M6u505で動きません。
アスキーモードで転送したし、
Perlのパスは指定のものに変更したし、
パーミッションも755にしているのに動きません。
何故かしらー??
どころか、テストのために同じ状態でUPした、
Hello World!クラスのcgiも動かないのです。
鯖が悪いのか?FTPソフト(FFFTP)が悪いのか?
お分かりの方おりましたらお教えください。
0163名無しさん@お腹いっぱい。
02/01/13 13:48ID:???使いまくると見づらい?
例えば、$ENV{'QUERY_STRING'}を参照すればいいものをPOSIX::getenv("QUERY_STRING")とやるということ。
0164名無しさん@お腹いっぱい。
02/01/13 15:45ID:???Perlのエラーログ見ました?
0165名無しさん@お腹いっぱい。
02/01/13 15:53ID:iK+xIF0shttpdのログだろ?
0166名無しさん@お腹いっぱい。
02/01/13 15:57ID:???0167名無しさん@お腹いっぱい。
02/01/13 16:06ID:???横から煽るな。
0168名無しさん@お腹いっぱい。
02/01/13 16:14ID:???CGIだけど、なんか質問ある?Part 5
http://pc.2ch.net/test/read.cgi/php/1009331505/
0169156
02/01/13 19:36ID:ZxK7891Wもしよろしければ、もう少し詳しいことを教えてください。
0170名無しさん@お腹いっぱい。
02/01/13 20:05ID:???http://www.google.co.jp/search?q=%82%DD%82%BF%82%CC%82%AD%81@%8Cf%8E%A6%94%C2%81@cgi&hl=ja&lr=
0171156
02/01/13 21:05ID:ZxK7891W申し訳ない。わざわざ有難うございます。
0172名無しウィルス ◆UETvirus
02/01/13 21:26ID:hUoFkGoFております。Q2接続プログラムの解析、関係団体へのメール等、ランキングクリックに
よる宣伝業者へのアクセス数減少と人手はまだまだ必要です。
WEBプログラム板の皆さんの技術を貸していただけないでしょうか。
下記のスレをご覧の上で、ご協力戴ければ幸いです。
「■ 悪徳宣伝業者の画像や動画をばらまくスレ2 ■」
http://wow.bbspink.com/test/read.cgi/ascii/1010876229/
0173名無しさん@お腹いっぱい。
02/01/14 15:38ID:xszmZ/SM子プロセスがいくつ生成されているか、
親プロセスが知るにはどうすれば良いのでしょうか?
具体的にはHTTPのGETをしたりするスクリプトで
子プロセスの数を(例えば3個までとかに)制限したい
ということなんですけど。
0174perl初心者
02/01/14 19:00ID:n0YvEQb/HC Editorというフリーのテキストエディエターで
perlを書いているんですが、保存時の漢字コードをEUCにすると
なぜか保存して、再び読み出したときに中身が文字化けしてます・・・
OSはWINDOWSです、よろしくお願いします。
0175名無しさん@お腹いっぱい。
02/01/14 19:05ID:???なぜその製作者のサイトで聞かない?
それが一番確実なはずだけど。
全然Perlと関係ないぞ、それ
0177perl初心者
02/01/14 20:10ID:RxHccNR/そーします。
0178名無しさん@お腹いっぱい。
02/01/14 23:46ID:zLD178tUpackage foo;
*bar = \&CORE::die;
bar("hoge");
と書いてみましたが,そんな関数知らんと怒られてうまくいきません。
どうやればできますか?
0179名無しさん@お腹いっぱい。
02/01/14 23:57ID:x1aEi06n書き込ませてください。
CGIかうんた設置を試みてるのですが、どうもうまくいきません。
FFFTPを最近使い始めたのですが、転送する前・・・つまり
こちら側にあるファイルのサイズと、鯖に転送したファイルのサイズが
微妙に違うのです。
20000バイトなら、鯖のは19621バイトといったふうに。
こういうのって、CGIの誤作動に繋がりますか?
何度転送してもそのようなサイズになってしまいます。
もしかして広告とか?
でも、やっぱりここで訊くのは間違ってる
0181名無しさん@お腹いっぱい。
02/01/15 00:11ID:???それはFTP転送がASCIIモードだと改行コード変換が行われるから(多分)。
WindowsだとCR/LFで改行だけど、他のOSだとLFだけだったり。
つまり、改行一つにつき1バイト分、サイズが少なくなる勘定。
ちなみにCGI関係は
http://pc.2ch.net/test/read.cgi/php/1009331505/
0182名無しさん@お腹いっぱい。
02/01/15 00:11ID:???他の板で聞いてみます
広告とは?
>>179
> 広告とは?
ゴメソ。適当に言っただけ。忘れて下さい。
0184名無しさん@お腹いっぱい。
02/01/15 08:49ID:DyvaVHMP(sub内のmyな変数のリファレンスを返却)
sub foo {
my %ret;
$ret{"bar"} = "baz";
\%ret;
}
my $r = &foo();
print $$r{"bar"} . "\n";
0185名無しさん@お腹いっぱい。
02/01/15 10:28ID:mJdfZzdE結果はどうなの?
最後の一行を
print $r->{"bar"}."\n";
でどうよ。
0186名無しさん@お腹いっぱい。
02/01/15 11:29ID:???0187185
02/01/15 13:37ID:mJdfZzdEなんだ。そのままで動くやん。
「sub内でのmy変数のリファレンスを返す」こと自体は全然マズくないよ。
0188184
02/01/15 15:41ID:DyvaVHMP>「sub内でのmy変数のリファレンスを返す」こと自体は全然マズくないよ。
ああ、そうなんだ。ありがとう。
0189名無しさん@お腹いっぱい。
02/01/16 02:09ID:JQVH7PKSsub foo {
my ($k, $v) = @_;
my %ret;
$ret{$k} = $v;
\%ret;
}
my $r1 = &foo('key1', 'var1');
print $r1 . "\n";
print $$r1{"key1"} . "\n";
my $r2 = &foo('key2', 'var2');
print $r2 . "\n";
print $$r2{"key2"} . "\n";
print $r1 . "\n";
print $$r1{"key2"} . "\n";
$ ./x.pl
HASH(0x8105ce4)
var1
HASH(0x80f857c)
var2
HASH(0x8105ce4)
$
0190102再びです。
02/01/16 10:23ID:MJHKAqJj時間が空いたのでもう一度書き直してみましたが、動作しません。
出席簿みたいな感じのCGIです、
少しチェックして欲しいです。
require'jcode.pl';
require'cgi-lib.pl';
&ReadParse(*answer);
$name="$answer{'name'}";
open(DATA,">>./log.dat");
while(@dname=<DATA>){
foreach $key(@dname){
($namelist,$count)=split(/,/,$key);
if($namelist eq $name){
++$count;
}
}
print DATA "$name,$count";
0191102再びです。
02/01/16 10:24ID:MJHKAqJj0192名無しさん@お腹いっぱい。
02/01/16 10:52ID:???0193102再びです。
02/01/16 10:57ID:MJHKAqJjでデータを保存したいのです。
それを参照して同じ名前があったらカウント数増加、
なかったら新規で作成という感じにしたいのです。
0194名無しさん@お腹いっぱい。
02/01/16 11:04ID:???追記モードで開いてもポインタがファイルの終端を指しているから
データの読み込みは無理。
SEEKするか?
>while(@dname=<DATA>){
↑これは
>@dname = <DATA>;
こうするか
>while(<DATA>){
こうしなさい。
どちらにしても、追記モードでオープンしてるんじゃ無理。
0195102再びです。
02/01/16 11:08ID:MJHKAqJjopen(DATA,"+>./log.dat");
にして入出力用にすればいいのかな
もうちょっとのところまできてるんでしょうか?
とりあえずもうちょっと修行します。
また、報告させていただきます。
0196名無しさん@お腹いっぱい。
02/01/16 11:11ID:???( ´ ・∀・`) へー
0197名無しさん@お腹いっぱい。
02/01/16 11:16ID:???追記モードだとSEEKでも前に戻れなかったね。
スマソ。
>195
とりあえず書いてみろよ。
ローカルでテストする分には誰も文句言わないから。
0198超初心者
02/01/16 12:10ID:zfCnc17Sopen IN, "highschool.csv";
while ($line = <IN>){
if ($line eq '') { print "(空行)<hr>\n"; next;}
@splited = split (/\n/, $line);
$test = @splited;
@test = grep (/東京/, @splited);
print "@test<hr>\n";
}
close IN;
とhighschool.csvを読んで「東京」というキーワードでGrepかけ、検索結果を<HR>つきで表示させたいの
マッチしなかったところにも<HR>がついちゃいます。どのように回避するのかお教えください、
0199名無しさん@お腹いっぱい。
02/01/16 12:16ID:???これが何やってるかが分からないから
その後も何やってるかが分からない
@splited に何を入れたいんだろう・・・
0200名無しさん@お腹いっぱい。
02/01/16 12:25ID:???while (<IN>) {
if ($_ eq "") {
print "空行<hr>";
} elsif (index($_, "東京") >= 0) {
print $_, "<hr>";
}
}
close (IN);
0201超初心者
02/01/16 12:38ID:zfCnc17S一応読んだcsvを改行コードで区切って@に入れてるんですが。間違ってますか?
それと198で訂正がありましたすみません
open IN, "highschool.csv";
while ($line = <IN>){
if ($line eq '') { print "(空行)<hr>\n"; next;}
@splitted = split (/\n/, $line);
@test = grep (/東京/, @splitted);
print "@test<hr>\n";
}
close IN;
0202名無しさん@お腹いっぱい。
02/01/16 12:45ID:???一行ずつ読み込んで、改行マークでsplitしたって、全文が$test[0]に入るだけでしょ?
csvファイルの区切り文字って\nでしたっけ?
0203超初心者
02/01/16 12:52ID:zfCnc17Sいえこの時点でカンマで区切る必要はなく、改行で区切る必要があったんです。
0204名無しさん@お腹いっぱい。
02/01/16 12:58ID:???これはなにをしてる所?
俺は「ファイルから1行ずつ呼び出す」ものだと思ってるんだが。
つまり\nが二つ以上ある可能性はないのだけれどね。
0205名無しさん@お腹いっぱい。
02/01/16 13:01ID:???while ($line = <IN>){
$c++;
print qq($c行目 $line\n);
@splitted = split (/\n/, $line);
foreach $i(0 .. $#splitted){
print qq($c行目$i個目の要素 $splitted[$i]\n);
}
}
close IN;
とりあえずこれを実行してみて何が起きているか考えてみてくださいな。
0206名無しさん@お腹いっぱい。
02/01/16 13:02ID:???0207超初心者
02/01/16 13:15ID:zfCnc17S>>200さんのアドバイスでできました。
ホントお恥ずかしい・・・
という62文字を使って 1 (あるいは 0)から ZZZZZZZZ までの
62進数を順番に生成したいのですが、上手にやる方法はありますか?
0209名無しさん@お腹いっぱい。
02/01/16 20:36ID:???0210名無しさん@お腹いっぱい。
02/01/16 20:41ID:???0211名無しさん@お腹いっぱい。
02/01/16 21:30ID:???生成した数値(文字列)をどうしたいのか
配列に入れると218340105584895個要素が居るがそれでも良いのか
つーか41で分からんの?
0212名無しさん@お腹いっぱい。
02/01/16 22:55ID:iUy26tny0213名無しさん@お腹いっぱい。
02/01/17 02:36ID:???簡単過ぎ
@char= ('0'..'9','a'..'z','A'..'Z');
for $char ( @char ){
print &xxx($char),"\n";
}
sub xxx{
my( $ret, $flg );
for ( reverse split(//, $_[$[]) ){
unless ( $flg ){
if ( $_ eq 'Z' ){
$_= '0';
}
else {
if ( $_ eq '9' ){ $_= 'a'; }
elsif ( $_ eq 'z' ){ $_= 'A'; }
else { $_++ ; }
$flg= 1;
}
}
$ret= $_ . $ret;
}
$flg ? $ret : "1$ret";
}
0214名無しさん@お腹いっぱい。
02/01/17 02:41ID:EnQVX8GIと
$foo->hoge;
は、上がハッシュだとして、下のは何を表すんでしょうか?
0215名無しさん@お腹いっぱい。
02/01/17 02:50ID:???0216214
02/01/17 02:55ID:EnQVX8GI0217名無しさん@お腹いっぱい。
02/01/18 02:21ID:/Sq0HWtq0218名無しさん@お腹いっぱい。
02/01/18 02:24ID:???0219名無しさん@お腹いっぱい。
02/01/18 12:15ID:/Sq0HWtq試しに「for」と「while」のベンチマークをしてみたところ
やや「while」の方が効率がいいようですね。<読み込むスクリプトでは
まだ簡単なスクリプトでしか試してないので、分かりませんが。
0220名無しさん@お腹いっぱい。
02/01/18 13:09ID:mZLIoXNkmy $query = $ENV{'QUERY_STRING'};
Win用のアパッチでテストした時は良かったんです。
理由を教えていただけませんか
0221名無しさん@お腹いっぱい。
02/01/18 13:17ID:???myを外そう
0222220
02/01/18 13:22ID:mZLIoXNkPerlが腐ってるんですね。
感謝
0223名無しさん@お腹いっぱい。
02/01/18 15:03ID:???解説希望。うちだとエラー起きないから、何処が腐ってるのかわかんない・・・
0225名無しさん@お腹いっぱい。
02/01/18 17:07ID:???ということで>224に同意。
0226223
02/01/18 17:21ID:???0227名無しさん@お腹いっぱい。
02/01/18 18:49ID:???0228名無しさん@お腹いっぱい。
02/01/18 19:10ID:6q/Kp0dNそれで、できたplファイルとshtmlを同じ階層に入れて、
shtmlをブラウザ(IE6.0)で開いて確認しようと思ったんですが、
開けないんです。どーしたらいいんでしょーか。
スクリプトは間違ってないと思うんですが。。。
0229 ◆efPZis9A
02/01/18 19:29ID:y3hRDyTH0230228
02/01/18 19:34ID:6q/Kp0dNApache起動して、ローカルでテストしてます。
ブラウザの右下にある青いバーが
増えていってるだけで画面は何も変わりません。
0231名無しさん@お腹いっぱい。
02/01/18 20:11ID:TBZ1H2T9別の方法があるのでしょうか。
0232名無しさん@お腹いっぱい。
02/01/18 20:35ID:???アクセスカウンターが無限ループしてるとかじゃないの?
>231
\?で大丈夫のはずだよ。
念の為にローカルで試してもみたけど、普通に出来た。
その前後の文に問題があるんじゃないのかな?
0233名無しさん@お腹いっぱい。
02/01/18 21:06ID:???無限ループは無いと思います。サンプルファイルでもやってみました。
アドレスに、
127.0.0.1/*.shtmlとやってますが、白いまんま。
shtmlをhtmlにかえると表示はされるのですが、スクリプトは動かないです。
shtmlのアイコンは、IEのアイコンにならないの?
0234名無しさん@お腹いっぱい。
02/01/18 21:08ID:???そのカウンタを直接呼び出したら?
てゆーか、ApacheのSSIの設定が通ってないとかは?
アイコン変える方法は、ファイルの関連付けでしょう。
0235232
02/01/18 21:18ID:???原因は、本に誤りがあったようです。ホームページで確認しました。
<!--#exec cmd="*.pl"-->
を
<!--#exec cgi="*.cgi"-->
に変えろということでした。変えたところ、上手くいきました。
どうもありがとうございました。
0236名無しさん@お腹いっぱい。
02/01/18 23:49ID:vKcOvEew例えば2002年1月1日の曜日を知りたい場合、以下の式で分かるのですが、なぜこ
れだけで分かるのでしょう?
($year + ($year-1)/4 - ($year-1)/100 + ($year-1)/400) % 7
上の式で出た余りを対応させれば2002年の最初の日の曜日が出ますが、これだけ
でなぜそうなるのか全く分かりません。
また、
$i = ($year + ($year-1)/4 - ($year-1)/100 + ($year-1)/400);
とした上で、
2002年4月1日の曜日を知りたい場合はその前の月(1月から3月まで)の日の合計
(31+28+31)を$iに足して7で割り余りを出すと出て来ます。
($i+(31+28+31)) % 7
でもこの仕組みが良く分かりません。そもそもなぜ年だけで、任意の年の最初の
日の曜日が分かるのか、また、それをもとにしてどうして任意の年の任意の月の
最初の曜日まで分かるのか全く分かりません。
どなたか説明をお願いできますか。
0237名無しさん@お腹いっぱい。
02/01/19 00:07ID:???Zellerの公式で検索してみて
ここに、日付け絡みのサンプルが色々出てるから必読
他にも役に立つしね
http://www.din.or.jp/~ohzaki/perl.htm
0238名無しさん@お腹いっぱい。
02/01/19 01:59ID:tDZ3djB8win98に、間違ってwinNTのPerlをインストールしてしまったんですが、
アンインストールはどうすればいいのでしょうか???
C:を「Perl」とか「NT」で探したら、Temporaryフォルダにしか
ないみたいなんで大丈夫かな?と思ったんですが、
インストーラーをもう一回起動させたら、
『指定されたサービスはすでに存在します』
ってエラーメッセージが!!!!
『アプリケーションの追加と削除』には、何もできてません。
どなたかお助けーーーー!
0239agege
02/01/19 05:21ID:???C:がダメならD:があるさ
0240Tupple3d
02/01/19 05:30ID:tSYJ2BTR$a = 1;
$a = $a++;
Perlで$aの値はどうなりますか?
0241agege
02/01/19 06:00ID:???「すんまそん」って、出だしから寒すぎて手がかじかんでうまく答えがかけないよー。
どうしよー。
0243名無しさん@お腹いっぱい。
02/01/19 06:34ID:???$a = $a++; # $aは 1
$a = ++$a; # $aは 2
0244名無しさん@お腹いっぱい。
02/01/19 07:06ID:tDZ3djB80245名無しさん@お腹いっぱい。
02/01/19 07:21ID:???おめでとう
0246名無しさん@お腹いっぱい。
02/01/19 15:46ID:b2nTXpDvFlashからデータをPOSTで送信しようとすると、
データが渡ってないようです。
GETだとちゃんとわたってます。
cgiはこんな感じです。(一部ですが)
#フォームデータの取得
if($ENV{'REQUEST_METHOD'} eq 'POST'){
read(STDIN,$query,$ENV{'CONTENT_LENGTH'});
}
else{
$query=$ENV{'QUERY_STRING'};
}
0247初心者
02/01/20 06:05ID:+Bzlb+s3サブルーチンの定義のところで
sub FormThList($;$)
{
処理・・・
}
という部分をいくつも見かけます
引数にある" $;$ " という部分は何をあらわしているのでしょうか?
自分で書籍やWebを調べてみたりしたのですが、引数なのか、リフ
ァレンスなのか、それとも他のものなのか、さっぱりわかりませんでした。
どなたかお分かりの方ご教授ください。宜しくお願いいたします。
0248名無しさん@お腹いっぱい。
02/01/20 15:18ID:GAoGOGYW0249
02/01/20 17:22ID:xUMdAd4Xほら、あれもってきて。って、よく、彼女とかにいってるでしょ。
そのあれ。だよ。
0250名無しさん@お腹いっぱい。
02/01/20 17:58ID:???引数の形式を指定してる。
$はスカラー。;以降は省略可。 ほかにもいろいろ指定できる。
詳しくはperldoc perlsubか,プログラミングPerl改訂版133Pを参照のこと。
0251名無し
02/01/20 21:19ID:Nggbj65w$dir = ''; # 指定ディレクトリ
$file = '.html'; # 検索対象ファイルの拡張子
$key = ''; # キーワード
opendir(DIR,$dir);
@files = readdir(DIR);
closedir(DIR);
foreach (@files){
if(/$file$/){
open(FILE,"$dir/$_");
@data = <FILE>;
close(FILE);
foreach (@data){
$seach = $seach . $_;
}
if($seach =~ /$key/i){
push(@list,$_);
}
}
}
foreach (@list){
print;
print "\n";
}
0252名無しさん@お腹いっぱい。
02/01/20 21:26ID:???URLデコードをしてないとか。
「ー」が含まれてるとか。
余談だけど無駄が多いからもうちょっとシェイプアップした方がいい。
grep使うとか。
0253名無しさん@お腹いっぱい。
02/01/20 23:36ID:9LP6jm+wEUCの場合
$EUC_JP = '(?:[\x00-\x7F]|[\xA1-\xFE][\xA1-\xFE]|\x8E[\xA1-\xFE]|\x8F[\xA1-\xFE][\xA1-\xFE])';
if $seach =~ /^$EUC_JP*$key/i {
...
perlメモだかに、詳しく載ってた気がする。
0254agege
02/01/21 03:26ID:???それにしてもサブルーチンに引数の形式を指定するメリットがわかんないんだけど、
どういうことYO!
単に引数形式を明確にするだけのこと?
うーん!こんやも眠れない。
0255名無しさん@お腹いっぱい。
02/01/21 03:31ID:???眠れないんだったらperlsub読みなよ。
どういうときに使うのか書いてある。
0256名無しさん@お腹いっぱい。
02/01/21 03:39ID:???逝っちゃってますねもう
0257agege
02/01/21 03:47ID:???なるほど、漏れが異常なのか。チョットだけ安心しました。
255さんの提案でperlsub読んでだいたいはわかりました。
それにしても今までラクダ本しか読んでなっかったからバージョンアップに伴う追加・更新部分は
未知な部分が多いネー。
0258あうあうあう
02/01/21 07:42ID:???日本語部分は(メッセージなど)EUCで書くのが正解と聞きました。
ところが、DOSプロンプトだとEUCは文字化けします。
Shift-JISで書けば、DOS上では問題ないですが・・・。
どうしたらよいですか?
print "日本語いーゆーしーだ!";
とかでやると
ニ・ワク・、。シ、譯シ、キ。シ、タ。ェ
になります。
0259名無しさん@お腹いっぱい。
02/01/21 09:52ID:yXZYknLAS-JISで全然問題ない。
0260名無しさん@お腹いっぱい。
02/01/21 12:43ID:O1LRho5n以降のデータが受取れません。
流れとしては、HTMLフォームから入力して送信ボタン→確認画面で送信ボタン→メール送信
というもので、確認画面ではスペースはちゃんと入ってて、例えば「山田 まさし」
と入るのですが、その確認画面から「送信」ボタンを押して再度同じCGIを呼びだして
データを受取ると「山田」で切れてしまうです。
$value =~ tr/+/ /;この行で送られてきたスペースコード(+)をスペースに変えて
いるのですが、再送信するときには変換されたスペースをまた(+)のようなコードに
戻してあげないとダメなんでしょうか?
試しに普通の+に戻してみたらそのまま+が出てきてしまいました。。
わかりづらくてゴメナサイ、アドバイス貰えればありがたいです。
0261aaa
02/01/21 13:36ID:7eJzqhDPありませんでした。(elements programming with Perlです。)
5.5?やってから5.6本やってもおそくないですか?
あと、支障とかないですか?
0262茶文字 ◆xELvisFU
02/01/21 15:57ID:0ovwchs4open FILE,"xxx.dat";
@page = split(/\n/,<FILE>);
print <<"EOH";
<html>
<head>
<title>$page[0]</title>
</head>
<body>
<h1>$page[0]</h1>
<h2>$page[1]</h2>
EOH
$count = 0;
foreach $i(@page){
if ($count > 1){
print $page[$i];
}
}
print "</body></html>";
close FILE;
2行目を$page[1]として<h2>に、3行目以降をforeachで順に出力するつもりで
以上のように書いたのですが、$page[2]以降を取得できないようです。
どこで勘違いしているのでしょうか?
0263名無しさん@お腹いっぱい。
02/01/21 16:08ID:???>foreach $i(@page){
ここに問題がある。
この場合、$iには何が入るのかな?
俺は数字じゃないように思えるんだが。
>foreach $i(1 .. $#page){
との違いはわかるかな?
0264名無しさん@お腹いっぱい。
02/01/21 16:09ID:???こっちが正しいな。
修正する前に書き込んじまった、スマソ。
あともう一つ質問。
$countはずっと0のままでいいのかな?
数字が全然増えてないから、if文の中に入れないようにも見えるぞ。
0266251
02/01/21 16:17ID:???逝ってきます。
0267茶文字 ◆xELvisFU
02/01/21 16:21ID:???をっとスマソ
うまくいかないので別の方法で無理やり辻褄あわせてて、もとのスクリプトと
違うこと書いちゃいました。
$count++をforeachの最後に入れて、print $page[$count];にしてたはず・・・
うがー なんでこんなところにひっかかってんだ私;
0268名無しさん@お腹いっぱい。
02/01/21 16:25ID:yxhIL91Y俺ならこんな感じ。チェックしてない。
open (FILE,"xxx.dat"); @page = (<FILE>); close (FILE);
$page[0] =~ s/\n//g;
$page[1] =~ s/\n//g;
print <<"EOH";
Content-type: text/html; charset=Shift_JIS
<html>
<head>
<title>$page[0]</title>
</head>
<body>
<h1>$page[0]</h1>
<h2>$page[1]</h2>
EOH
$count = @page;
for($i = 2;$i <= $count; ++$i) {
$$page[$i] =~ s/\n/<BR>\n/g;
print $page[$i];
}
print "</body></html>";
0269名無しさん@お腹いっぱい。
02/01/21 16:26ID:yxhIL91Yミス
>$$page[$i] =~ s/\n/<BR>\n/g;
$一個おおいっすスマソ
0270名無しさん@お腹いっぱい。
02/01/21 16:28ID:???print "Content-Type: text/plain\n\n";
print $ENV{QUERY_STRING}
とかやってデータを確認したら?
確認後のエンコード周りがあやしい。
>>261
5.6触ったこと無いが,
Perl5.6は仕様を足しただけみたいだから
Perl5やってからでも特に支障無いと思う。
0272
02/01/21 16:30ID:VXT1KPc/foreach (@page){
print $_;
}
じゃいけんの?
$countってどこでインクリメントするの?
0273
02/01/21 16:36ID:rALZtRCfContent-type: text/html; charset=Shift_JIS
<html>
<head>
<title>$page[0]</title>
</head>
<body>
<h1>shift(@page)</h1>
<h2>shift(@page)</h2>
EOH
foreach (@page){
print $_;
}
具体的にはこうか?
0274
02/01/21 16:38ID:pTKsFCnA0275傍観者
02/01/21 16:40ID:bIKApu3O0276ほげ
02/01/21 16:41ID:bIKApu3O0278名無しさん@お腹いっぱい。
02/01/21 16:52ID:???名前変えてもID出てるぞ。
0279名無しさん@お腹いっぱい。
02/01/21 16:53ID:???TMTOWTDIってことで、色々出てくるのはいいんじゃねーの。
0280名無しさん@お腹いっぱい。
02/01/21 16:55ID:???おしい。
ヒアドキュメントの中では @{[shift @hoge]} のように使うと吉。
0281名無しさん@お腹いっぱい。
02/01/21 17:00ID:yxhIL91Yでも、せっかく作ってきたので書いちゃう。
どうしてもforeach使うんだったらこんな感じ。
やっぱしチェックしてない。
open (FILE,"xxx.dat"); @page = (<FILE>); close (FILE);
$page[0] =~ s/\n//g;
$page[1] =~ s/\n//g;
print <<"EOH";
Content-type: text/html; charset=Shift_JIS
<html>
<head>
<title>$page[0]</title>
</head>
<body>
<h1>$page[0]</h1>
<h2>$page[1]</h2>
EOH
$i = 0;
foreach (@page){
if ($i ne "0" && $i ne "1"){
$_ =~ s/\n/<BR>\n/g; print $_;
}
++$i;
}
print "</body></html>";
0282名無しさん@お腹いっぱい。
02/01/21 17:01ID:yxhIL91Yお、おれ?
おれかよ!(笑)
@page = (<FILE>);
close (FILE);
$title = shift(@page);
$h2 = shift(@page);
print <<"EOH";
Content-type: text/html; charset=Shift_JIS
<html>
<head>
<title>$title</title>
</head>
<body>
<h1>$title</h1>
<h2>$h2</h2>
@page;
</body></html>
EOH
0284茶文字 ◆xELvisFU
02/01/21 17:11ID:???それぞれのサンプルもきちんと見て勉強させてもらうです。
WebProg板サイコー(・∀・)イイ!
0285名無しさん@お腹いっぱい。
02/01/21 17:14ID:???ということで>>275-276はギャフンと言え
0286名無しさん@お腹いっぱい。
02/01/21 17:19ID:???@page = map {$_ . <BR>} @page;
だね。
0288名無しさん@お腹いっぱい。
02/01/21 17:36ID:???このスレの回答者は (笑)
0290aaa
02/01/21 17:42ID:7eJzqhDP0291名無しさん@お腹いっぱい。
02/01/21 19:00ID:6X0/37gMちんぷんかんぷんです。しかもスレ違いの予感もしてます。ごめんなさい。
プログラムはグレー色のウィンドウで表すこと。
しかもユーザーに赤、青、緑から好きな色を選ばせられるようにすること。
なおかつ1度ではなく何度もユーザーにその色を何度も変える事ができるようにすること。
誰か教えてください。
0292名無しさん@お腹いっぱい。
02/01/21 19:06ID:???0293名無しさん@お腹いっぱい。
02/01/21 19:12ID:6X0/37gMプラットフォームとは何ですか・・・?
0294名無しさん@お腹いっぱい。
02/01/21 19:13ID:???それと、言語はPerlなの?
0295名無しさん@お腹いっぱい。
02/01/21 19:19ID:???君の開発環境を書くのだ。
しかし、宿題をスレに投げる という安直さがゴルァ!だ。
0296名無しさん@お腹いっぱい。
02/01/21 19:27ID:6X0/37gMYour name? Lucy
Occupation/Job Title? Comedian
Nice to meet you Lucy, Comedian!
名前を入れればそのままその名前が文章につかわれる
ってなのを前回説明されました。
これはPerlなのでしょうか?
0297名無しさん@お腹いっぱい。
02/01/21 19:34ID:???うーん・・・・・ 他になんかないの?
全部英語で書かれてて、一行目が「#!/usr/local/bin/perl」です、とか。
0298名無しさん@お腹いっぱい。
02/01/21 19:36ID:???取りあえず、環境を書いてくれ。
UNIX系なのか、Windowsなのかぐらいは判別できるだろ?
0299名無しさん@お腹いっぱい。
02/01/21 19:40ID:6X0/37gMとりあえず次の授業にきっぱりと出来ませんでしたって胸はって言います。
一緒に考えて下さってありがとうございました。
ところで、授業のレジュメにAlgorithmも学ぼうって書いてあります。
このAlgorithmもなにかの言語なのでしょうか?
0300名無しさん@お腹いっぱい。
02/01/21 19:49ID:???PerlでGUIのプログラムなんて出来ないよね?
ただ、適切なスレに誘導するために情報聞き出してるんだよね?
まさかPerlで書けるから聞いてるんじゃないよね?
ビクビク…。
0301名無しさん@お腹いっぱい。
02/01/21 19:51ID:???0302名無しさん@お腹いっぱい。
02/01/21 19:52ID:???ていうか授業出てなかったろ…。
出てれば絶対こんな質問しないぞ…。
0303名無しさん@お腹いっぱい。
02/01/21 19:56ID:???0304名無しさん@お腹いっぱい。
02/01/21 19:56ID:6X0/37gMやっぱりどうも難しいのでもっと初心者用のスレから出直してきます
ありがとうございました。。。
0305名無しさん@お腹いっぱい。
02/01/21 19:58ID:???>301は>300向けであって、あんたに言ってるんじゃないと思うぞ。
0306名無しさん@お腹いっぱい。
02/01/21 20:01ID:hWcQ0KB7どう見てもこれはCの課題だよな。
0307名無しさん@お腹いっぱい。
02/01/21 20:02ID:hWcQ0KB7VBかVCの課題だろ?
0308
02/01/21 20:07ID:OlNKxLTkパチマガで池上蓮から「旧友の自殺狂言騒動に抑えきれない嫌悪感」
で晒された本人(謎の人物)が池上に対して怒りまくってるぞ!!
謎の人物ホームページ↓
http://www.geocities.co.jp/Bookend-Hemingway/4715/
関連スレッド
謎の人物公式スレッド↓
http://kaba.2ch.net/test/read.cgi/pachi/1009686980/l50
0311茶文字 ◆d38VidMY
02/01/21 20:15ID:???ってことは、ここで聞いたコーディングがコンパイルされる可能性が
あったわけですね?(w
>>308
マルチポストウザイYo!
0312名無しさん@お腹いっぱい。
02/01/21 20:18ID:???何を聞きたいの?
もうちょっと分かりやすく書いてみて
0313300
02/01/21 20:19ID:???PerlでWindowsアプリケーションは作れないよね?
なんつーか、
> プログラムはグレー色のウィンドウで表すこと。
とか。。
それと同様にX Window のアプリケーションも作れないよね?
ってことはGUIのプログラムって作れないんでは?
んー。どこの考え方が間違ってるんだろう。。
「GUI」を勘違いしてるのかな…。
0314名無しさん@お腹いっぱい。
02/01/21 20:26ID:???一例。
http://freshmeat.net/img/screenshots/19044.jpg
(freshmeatで"Perl Gtk"とか"Perl Tk"で検索してみ。併せて100以上でてくるから)
検索エンジンなどでGtk-Perlとか、Perl/Tk, Perl/Qt. PythonならPyUI, PyQtとかを調べるよろし。
0315名無しさん@お腹いっぱい。
02/01/21 20:27ID:???(w とか言わずに一緒に勉強しようよ
>>313
Perlでは出来ないけど、TkとかGtk使えばperlの文法で出来るんだから
全然間違えて無いよ。
もし無くてもPerlが叩けるライブラリ書けば良いでしょ?
0316名無しさん@お腹いっぱい。
02/01/21 20:30ID:???0317名無しさん@お腹いっぱい。
02/01/21 20:35ID:hWcQ0KB7TkとかGtkを課題に出す情報処理系の宿題かこれ?
というそもそも論に帰ってしまった私です。
0318300
02/01/21 20:35ID:???なるほど。ありがとうございます。
>>316
初心者だけどなんか役に立つこと出てくるかなぁと思って
かちゅ〜しゃのお気に入りに入れて巡回してますが。。
0319名無しさん@お腹いっぱい。
02/01/21 20:50ID:???0320茶文字 ◆d38VidMY
02/01/21 21:01ID:???聞き流してくだされ>all
で、話は変わりますが。
Webサーバ上の特定のディレクトリにあるファイルをリストアップして、
ファイル一覧を表示するスクリプトを作りました。
せっかくだから各ファイルの更新日時を自動的に表示させたいのですが、
これはPerlでは無理なのでしょうか?
.cgiでSSIを許可するのはなんか怖いし、JavaScriptは自分自身あまり
ONにしないので、できたら避けたい今日この頃なんですが。
0321名無しさん@お腹いっぱい。
02/01/21 21:15ID:???基本的にそのディレクトリに有るファイルが、CGIのみから更新されるなら
SSIでincludeする(execは殺す)為のファイルを書き出すだけで良い。
もし、CGIが感知しない部分でダイナミックに更新されるなら
素直にCGIで表示するか、呼び出し元のHTMLを書き換えるしか無いんじゃ
無いかな
0322茶文字 ◆d38VidMY
02/01/21 21:32ID:???早レスさんくす。
実はファイルリスト表示も各ファイルの内容閲覧も同じスクリプトでまかなっています(リストされるファイルはすべてHTMLのbody部分です)。
例)
hoge.cgi
→引数がない場合はファイルリストを表示
hoge.cgi?page=020121
→ファイル名が020121のファイルをbody部に取り込んで表示
なので、更新日時を表示するときの拡張子が.cgiなわけです。
SSIを使うには、.cgiからSSIを使えるようにしなければならないわけで、
これは320に書いたように避けたいのです。
てことは、ファイルリスト表示は.shtmlで出力してやるのが無難っぽいですね。
短いスクリプトなので、頭の体操だと思って最初から組み直してみます。
ありがとうございました。
0323茶文字 ◆d38VidMY
02/01/21 21:34ID:???組み直さなくてもHTML出力部分だけ付け足して、
そのあとリダイレクトすればいいのか?
0324名無しさん@お腹いっぱい。
02/01/21 23:26ID:???> hoge.cgi?page=020121
Taint check をしっかりとやるようにね。
0325名無しさん@お腹いっぱい。
02/01/21 23:34ID:???$abcd = "AAAA";
open(CF, "./a.txt") || die "Can't open Header File $!";
while (<CF>){
chop;
print;
}
close;
と記述しました。
a.txtには
$abcd
と書きました。ですが、どうしても上記プログラムを実行したら
$abcdと表示されるだけでAAAAと表示されません。どうにかして
$abcdを変数としてファイルより読みだすことはできないでしょうか?
0326名無しさん@お腹いっぱい。
02/01/21 23:40ID:???かな?
0327名無しさん@お腹いっぱい。
02/01/21 23:40ID:???0329名無しさん@お腹いっぱい。
02/01/22 01:09ID:???細かいことだけど、自分がたずねる質問に「ご」をつけるのは
ちょっと変だと思うよ。
0330名無しさん@お腹いっぱい。
02/01/22 10:12ID:efarCwHc日記帳のように画像アップして1行コメントを入れるスクリプトを書いてるんですが
うまくいきません。
どこかによいサンプルはないでしょうか?
0331名無しさん@お腹いっぱい。
02/01/22 10:36ID:???http://pc.2ch.net/test/read.cgi/php/1003132904/l50
0332名無しさん@お腹いっぱい。
02/01/23 04:57ID:sT5Qn28Rhtmlファイル内の&を%44になおすプログラムを作っていて
以下のとおりやってはみたもののうまくいきません。
#!/usr/local/bib/perl
while(<stdin>){
s/&;/%44;/;
print;
}
どうしても置き換えてくれません。
教えてください。
0333名無しさん@お腹いっぱい。
02/01/23 05:16ID:???Perlへのパス
stdinからデータが読み込まれているか
検索・置換する文字列
を確認してみてわ
0334332
02/01/23 07:16ID:sT5Qn28R遅れてすみません
333さんがおっしゃられるところは確認しました。
自分で気になっているところは
test→test1みたいな普通の文字の置き換えはできるのですが
&とか%がはいっているとまったく駄目なのです。
どうしたら解決できるかわからなくて。。。
0335名無しさん@お腹いっぱい。
02/01/23 09:25ID:fLlnsoLj#!/usr/local/bin/perl
while(<stdin>){
s/&/%44/g;
print;
}
0336名無しさん@お腹いっぱい。
02/01/23 19:47ID:SS/bYptOCGIファイルと同ディレクトリに「mimew.pl」
http://www.cc.rim.or.jp/~ikuta/mime_pls/index.html を設置して、
CGI内のメールのヘッダ情報記述部分で
$mimew = './mimew.pl';
require $mimew;
$subject = "[カタログ請求]";
$subject2 = &mimeencode($subject);
open (SENDMAIL, "| $nkf | $sendmail -t -n") || die;
print SENDMAIL "To: $recieve\n";
print SENDMAIL "Bcc: $bcc\n";
print SENDMAIL "From: $mail\n";
print SENDMAIL "Reply-To: $mail\n";
print SENDMAIL "Subject: $subject2\n";
print SENDMAIL "Content-Type: text/plain; charset=\"iso-2022-jp\"\n";
print SENDMAIL "Content-Transfer-Encoding: 7bit\n\n";
上記のようにしたのですが、エンコードされません。
お助け。。。
0337名無しさん@お腹いっぱい。
02/01/23 20:15ID:???$nkf = '/usr/local/bin/nkf';
$sendmail = '/usr/sbin/sendmail';
$mimew = '/フルパス書いてちょ〜/mimew.pl';
でどうよ。
0338ちょっとおしえて ごめんね
02/01/23 20:48ID:FEde7HEx掲示板一覧ってどこから入るの?
0339名無しさん@お腹いっぱい。
02/01/23 21:30ID:Pj40bVNfの404のエラーの例として、.htaccessにて404.cgiを表示させてますよね。
この404.cgiの中で、ユーザーが打ち込んだURLを表示させてるんですが、
これってPerlでどう書いたらいいんでしょうか?
0340332
02/01/23 21:37ID:sT5Qn28R貴重なアドバイスありがとうございました。
解決しました。
あらためてありがとうございます。
0341名無しさん@お腹いっぱい。
02/01/23 22:30ID:RVBh2RNrテキストカウンタを作っている。
CGI自体はhtmlでなくテキストだけを吐いて、
イメージカウンタと同じような感じに
html内に挿入するようにしたい。
2:それでこんな風にやってみたが・・・
Content-typeをtext/htmlにしたままimgで貼ってみたけど
3:それだとこんなエラーが出て上手く行かなかった。
ペケが出るだけで無理だった。
0342名無しさん@お腹いっぱい。
02/01/23 22:34ID:6XVla5oihtmlフォームから送信ボタンを押すとcgiを呼んで確認で内容を一覧表示させてます。
そのあとにブラウザの戻るボタンを押したとき、htmlフォームに戻りますが、それまで
入力していた内容が消えてしまいます。元のcgiではブラウザの戻るボタンで戻っても
フォームに入力されていた内容は消えなかったんです。
この違いはどういった原因が考えられるでしょうか?
0343342
02/01/23 22:44ID:6XVla5oiCGIの影響じゃないのかな・・ この現象誰か知りませんか?
>>341
ペケが出るって事は画像へのリンクがうまくいってないんじゃないかな?
0344341
02/01/23 22:58ID:RVBh2RNrいや、画像でなくテキストを挿入したいんですが
コンテントタイプの吐きかたとhtml側の呼び出し方がわからなくて
とりあえずimgで貼ってみただけです。。
CGIが画像を吐いてないので当たり前といえば当たり前なんですが。。
>フォーム
戻るボタンは単にブラウザが自分の履歴を表示しているんだから
この場合呼び出されてないCGIは関係ないと思います。
というか、どんな風に手を加えたらおかしくなったかを書くと吉と思われ。
0345名無しさん@お腹いっぱい。
02/01/23 23:05ID:???一般にはSSIやフレームが使われる。
0346336
02/01/23 23:07ID:7DXRWN8lありがとうございます。
今外出中なんで明日にでも試してみます。
0347341
02/01/23 23:16ID:RVBh2RNr有り難うございます。
過去にフレームで画面をちっちゃく切り取って
そこにhtmlで吐いたカウントを放り込んでいたんですが、
それをやめたくていろいろ試しているので
SSIの方を調べてみようと思います。
0348名無しさん@お腹いっぱい。
02/01/24 00:12ID:gcEosdJofor ($no = 0; $no <9; ++$no){
@suuji = (1,2,3,4,5,6,7,8,9,10);
@kekka = grep /$no/, @suuji;
print "@kekka\n";
}
を実行すると、
10
1 10
2
3
4
5
6
7
8
と、10まで出てきてしまうんですが、
1から9までのみ出すようにするにはどうすればいいんでしょうか?
0349名無しさん@お腹いっぱい。
02/01/24 00:15ID:???@suuji = (1,2,3,4,5,6,7,8,9,10);
@kekka = grep /^$no$/, @suuji;
print "@kekka\n";
}
誰でも思いつく一番簡単な変更はこれだわな。
0350ブロックで使うとお手軽だにゃん
02/01/24 00:23ID:???my $max = 10;
my $min = 3;
my @result = grep{$_ > $min && $_ < $max}@ary;
print @result;
0351名無しさん@お腹いっぱい。
02/01/24 00:32ID:???0352名無しさん@お腹いっぱい。
02/01/24 00:34ID:???ありがとうございました。なんとか出来そうです。
正規表現だけで出来たんですね…。もっと本をよく読みます。
0353352
02/01/24 05:00ID:???1 あいうえお
2 かきくけこ
というようなものが、配列に100個ほど入っているとして、
右の番号を指定して、その部分だけ左のものと一緒に取り出したいんですが…。
上のやりかただと、どうやっても出来なくて…。
このままじゃ気になって寝られない…でも寝ないと死ぬので寝よう…
0354名無しさん@お腹いっぱい。
02/01/24 08:11ID:nUVwgo4zデリミタを使う。
1<>あいうえお
2<>かきくけこ
・
・
・
とする。
これを配列に読み込んで、、たとえば、@linesに読み込んだとしたら、
foreach (@lines) {
($number,$text) = split(/<>/,$_);
if ($number eq "目的の番号") {
print "番号は$numです。内容は$textです\n";
}
}
こんなかんじになるわけ。
0355名無しさん@お腹いっぱい。
02/01/24 09:08ID:???LinuxにPerlがインストールされているかどうかを
確認するには簡単にはどうするのでしょうか。
そのperlのVersionも表示させれると
うれしいのです。
よろしくサンクスコ
0356名無しさん@お腹いっぱい。
02/01/24 09:12ID:nUVwgo4zコマンドラインから、
perl -V
0357名無しさん@お腹いっぱい。
02/01/24 09:19ID:???0358336
02/01/24 10:49ID:ENGsaylW上記の部分を以下の様にすると、無事エンコード処理されました。
open (SENDMAIL, "| $sendmail -t -n") || die; #$nkfを外しました
結果的に解決はしたのですが、何が悪かったのかが分かっていません。
そもそも上記の箇所はいつもメール作成部分の定型的に使用していたの
で、nkfがどんな役割を果たしているのか、なぜnkfが絡むとエンコードさ
れなかったのかがわかっていません。
(ちなみにnkfは冒頭で $nkf = "/usr/bin/nkf -j"; と定義しています)
何が悪かったのでしょうか?
0359名無しさん@お腹いっぱい。
02/01/24 11:11ID:LyCCkAYD@ISAって何の略なのでしょう?
0360名無しさん@お腹いっぱい。
02/01/24 11:26ID:???@INCはIncludeかねぇ。
@ISAはISAバスしか思いつかない・・・。
0361名無しさん@お腹いっぱい。
02/01/24 11:44ID:???0362名無しさん@お腹いっぱい。
02/01/24 11:45ID:???なるほど。
0363名無しさん@お腹いっぱい。
02/01/24 11:46ID:???継承元と。
へぇ。
0364Technetium@1000ゲト ◆gZEJGdGE
02/01/24 12:57ID:???IPの桁を
「0.0.0.0」→「 0. 0. 0. 0」
こんな風にそろえるプログラムを作ってみたんです。
で、この桁をそろえる部分でどれくらいのロスがあるのかなと思って、2種類のプログラムを組んで試してみました。
プログラム「い」
($ipa , $ipb , $ipc , $ipd) = split(/\./, $remoteadd);
if ($ipa < 10) { $ipa = " $ipa"; }
elsif ($ipa < 100) { $ipa = " $ipa"; }
if ($ipb < 10) { $ipb = " $ipb"; }
elsif ($ipb < 100) { $ipb = " $ipb"; }
if ($ipc < 10) { $ipc = " $ipc"; }
elsif ($ipc < 100) { $ipc = " $ipc"; }
if ($ipd < 10) { $ipd = " $ipd"; }
elsif ($ipd < 100) { $ipd = " $ipd"; }
$ipadd = "$ipa\.$ipb\.$ipc\.$ipd";
プログラム「ろ」
@ip = split /\./, $remoteadd;
if ($ip[0] < 10) { $ip[0] = " $ip[0]"; }
elsif ($ip[0] < 100) { $ip[0] = " $ip[0]"; }
if ($ip[1] < 10) { $ip[1] = " $ip[1]"; }
elsif ($ip[1] < 100) { $ip[1] = " $ip[1]"; }
if ($ip[2] < 10) { $ip[2] = " $ip[2]"; }
elsif ($ip[2] < 100) { $ip[2] = " $ip[2]"; }
if ($ip[3] < 10) { $ip[3] = " $ip[3]"; }
elsif ($ip[3] < 100) { $ip[3] = " $ip[3]"; }
$ipadd = "$ip[0]\.$ip[1]\.$ip[2]\.$ip[3]";
この二つを、
while (--$kurikaesi){
}
の中に入れて1000000回(爆)繰り返してベンチマークした結果、プログラム「ろ」の方が約1秒も速いという結果を得ました。
速いのはいいんです。それはいいんですが、なぜ配列を使っただけで処理速度が上がったのかがわかりません。
これはなぜなのでしょう?
0365名無しさん@お腹いっぱい。
02/01/24 14:49ID:???sprintfとかじゃだめなんでしょうか?
0366配列
02/01/24 15:36ID:RS3bsnfp(1)配列をある文字列で検索して、その配列の番号を調べる。
(2)配列の任意の位置に要素を代入(追加)する
(3)配列をCSVデータ(カンマ割りテキスト)に変換する。
上の事をforeachなんかを使って配列の要素をグルグル一個一個
調べて実現する事は出来るんだけど・・・もっと効率的なやり
方があるような気がしてならない・・・。
(2)はつまり
@ary[0]="A";@ary[1]="C";@ary[2]="D";を、いかにして
@ary[0]="A";@ary[1]="B";@ary[2]="C";@ary[3]="D";
にするかって事なんだけど・・・簡単?
0367名無しさん@お腹いっぱい。
02/01/24 15:40ID:???@ary = (@ary[0 .. 1] , $newdata , @ary[2 .. $#ary]);
とかいう方法は?
0368名無しさん@お腹いっぱい。
02/01/24 15:49ID:???とりあえず(2)だけ
splice @hoge, 1, 0, 'B';
0369名無しさん@お腹いっぱい。
02/01/24 15:51ID:???こういうことかな?
join ',', @hoge;
0370名無しさん@お腹いっぱい。
02/01/24 15:53ID:nUVwgo4z0371配列
02/01/24 15:53ID:RS3bsnfpなるほどぉ、そういう風にするのかぁ。
できました、できました。ありがとうございます。
>>368
あっ、こんなやり方も・・・これから試してみます。
ありがとうございます。
>>369
そんなに簡単に・・・試してみます。
0373名無しさん@お腹いっぱい。
02/01/24 16:03ID:???my @hoge = qw(hoge fuga foo bar);
my $i;
print join " ", map { $_->[0] } grep { $_->[1] =~ /f/ } map { [ $i++, $_ ] } @hoge;
#=> 1 2
0374名無しさん@お腹いっぱい。
02/01/24 16:10ID:???インデント崩れるかな。
use Benchmark;
timethese(10000, {
A => sub {
my @hoge = qw(hoge fuga foo bar);
my $i;
my @res = map { $_->[0] } grep { $_->[1] =~ /f/ } map { [ $i++, $_ ] } @hoge;
},
B => sub {
my @hoge = qw(hoge fuga foo bar);
my @res;
for (my $i = 0; $i <= $#hoge; $i++) {
$hoge[$i] =~ /f/ or next;
push @res, $i;
}
},
});
0375名無しさん@お腹いっぱい。
02/01/24 16:12ID:nUVwgo4z0376配列
02/01/24 16:13ID:RS3bsnfpスゴ!ここまでになると僕には記号の羅列にしか見えませんが
出来ました。
う=ん。perlは深すぎる。
0377名無しさん@お腹いっぱい。
02/01/24 17:37ID:???めっちゃなごんだ
0378352
02/01/25 00:02ID:???えと、これを実行したところ、
($number,$text) = split(/<>/,$_);
の行でエラーが出ました…。
何か変えないといけないんでしょうか…。
0379名無しさん@お腹いっぱい。
02/01/25 00:06ID:???まさか全角スペースそのままでコピペとかしてないよな?
0380名無しさん@お腹いっぱい。
02/01/25 00:17ID:PBLVziZQそれだな・・・・
>378
インデント使えないから全角スペースはいってます。
半角スペースに直して下さい。
0381352
02/01/25 01:47ID:???半角にしてやったらうまく動きました。
今度こそ…。
ありがとうございました。
0382配列
02/01/25 12:07ID:IeC8qMZZ僕のような初心者がもう一歩踏み出す為の本ってなんかお
勧めありますか?
あと、思うのは英語がわかれば、プログラム言語の収得の
時間は半分くらいに短縮できるんじゃないだろうか?文献
もイパーイあるし、そもそも構文が英語だし、その点日本人っ
てかなり不利な様な・・。
関係ないけど今、Apacheの設定してんだけど、もう、この
コメントがスラスラ読めたらどんなに楽だろう・・・と・・・
ふ=。
0383名無しさん@お腹いっぱい。
02/01/25 12:51ID:???そんな君の為に http://www.scripts-lab.co.jp/qa/whatsmind.html
0384名無しさん@お腹いっぱい。
02/01/25 13:40ID:r3/rqZp3絶対に、わかりずらいぞ。
日本語記述プログラム
0385名無しさん@お腹いっぱい。
02/01/25 14:55ID:eF69uSNxwhile (read FILE, $_, 1024) {
unless ($Count % $DivSize) {
$FCount = sprintf("%04d", ++$FCount);
open(OUT, ">${FileName}_$FCount$AddExt");
binmode(OUT);
}
print OUT $_;
$Count++;
}
これは $DivSize に 500 とか指定して指定KB単位で
ファイルを分割する(昔DOSで使っていたkitcutみたいな)のですが、
Active Perl for Linuxでは期待通りに動くのに
Active Perl for Win32(Win98SE)では失敗します。
直接の原因は読み込むファイルに"0x1A"があると
そこで処理が終了してしまうようですが、
なぜそうなるのかは分かりません。
Windows系OSでも正常に動かすにはどうすればよいのでしょうか?
0386名無しさん@お腹いっぱい。
02/01/25 15:08ID:79BxtF4Tmy @array;
my @some_array = (1, 2, 3);
%hash = {'key' => @array};
for (@some_array){
push $hash{key} $_;
}
print $hash{key}[0]; #出力は「1」
となるようにしたいのですが、「push $hash{key} $_;」ここで
compilation errorが出てしまいます。
希望通りの結果を出すにはどのようにすればよいのでしょう?
my %hash = ("key" => \@some_array);
print $hash{"key"}[0];
0388■■■■■
02/01/25 17:52ID:xsDEBfwk↑の-wはどういう意味なのでしょうか?
0389名無しさん@お腹いっぱい。
02/01/25 17:57ID:???0390名無しさん@お腹いっぱい。
02/01/25 18:02ID:???#!/usr/local/bin/perl -プ
にすると警告メッセージの文体がうざくなります
0391名無しさん@お腹いっぱい。
02/01/25 18:03ID:/7cgUOJjワーニングのwだよ。
0392■■■■■
02/01/25 18:07ID:xsDEBfwkマジ質問なんですが。-wはキーワードにならないもので。
0393名無しさん@お腹いっぱい。
02/01/25 18:08ID:???http://www.google.com/search?hl=ja&q=perl+%83X%83C%83b%83%60+w&lr=
0394■■■■■
02/01/25 18:08ID:xsDEBfwk0395名無しさん@お腹いっぱい。
02/01/25 18:17ID:???0396名無しさん@お腹いっぱい。
02/01/25 18:21ID:???0397名無しさん@お腹いっぱい。
02/01/25 18:28ID:S6WZ3j03何か定石になっている方法等はないでしょうか。
0398親切な人
02/01/25 18:42ID:???ヤフーオークションで、幻の人気商品、発見!!!
今は無き「コピーガードキャンセラー」↓
http://page5.auctions.yahoo.co.jp/jp/auction/e5843828
ヤフーオークション内では、現在、このオークション
の話題で、持ちきりです。
0399名無しさん@お腹いっぱい。
02/01/25 18:52ID:???$$
0400名無しさん@お腹いっぱい。
02/01/25 18:52ID:???0401名無しさん@お腹いっぱい。
02/01/25 20:53ID:???これは、0x1A(=^Z)がDOSでEOFだったという歴史的経緯によるもの。
純粋に入力をバイナリとして扱うには、FILEについても
openの直後にbinmode(FILE)とすることで解決するはず。
0402名無しさん@お腹いっぱい。
02/01/25 21:24ID:Y6CV5/iRやはり$$が定石なのですね。
ありがとうございました。
0403名無しさん@お腹いっぱい。
02/01/25 21:56ID:79BxtF4T置かずに、使用する方法はあるのでしょうか?
0404名無しさん@お腹いっぱい。
02/01/25 22:02ID:/7cgUOJjuse lib
0405名無しさん@お腹いっぱい。
02/01/25 22:05ID:???ていうか、モジュール自作できるのに、そのモジュールの使い方がわからないなんて事あり得るのだろうか?
0406403
02/01/25 22:36ID:79BxtF4Tで、
use lib '/path/to/my_module_dir';
を加えたら、とりあえず動いたんだけど、
use lib 'ディレクトリパス';
とすれば @INC にここで指定した'ディレクトリパス'が
加わったのと同様と考えていいのですか?
0407名無しさん@お腹いっぱい。
02/01/25 22:57ID:???print @INC;
で分かるだろが。自分で調べろヤ。
0408名無しさん@お腹いっぱい。
02/01/25 23:02ID:???0409名無しさん@お腹いっぱい。
02/01/25 23:10ID:XMaI9lFdありがとうございます。
入力側もバイナリモードにすることにより期待通りに動きました。
出力に関しては以前引っかかったことがあったので
気にしていたのですが入力も、とは・・・やられました。
0410名無しさん@お腹いっぱい。
02/01/25 23:39ID:???これって教えて君を増やす為なの?
0411名無しさん@お腹いっぱい。
02/01/26 00:51ID:OfzJhL7vこれって、ブラウザからは出来ないんですか?500エラーになるんですが…。
結果の数値を表示させるにはどうしたら良いでしょう?
0412名無しさん@お腹いっぱい。
02/01/26 02:20ID:WUMSdJPW文字コード、例えば「あ(2422)」の2422という数字)
をEUCの文字に変換して出力するにはどうしたらよいのでしょうか?
print &convert(2422);
(表示)
あ
見たいな感じにしたいんですが・・・。
0413agege
02/01/26 03:19ID:???use benchmark; ⇒ use Benchmark;
0414名無しさん@お腹いっぱい。
02/01/26 16:03ID:???packを使ってみ
0415名無しさん@お腹いっぱい。
02/01/26 18:44ID:4vbo6FDePerlで、配列を一つのスクリプト内で何度も再利用することで、
その都度、別の名前の配列を複数作る場合に比べて
メモリ消費は低減できるのでしょうか?
0416ループに関して
02/01/27 23:58ID:y07CruPJハッシュにして…ってところ何ですけど。
require './cgi-lib.pl';
&ReadParse(*form);
$A1="$form{'A1'}";
$B1="$form{'B1'}";
$A2="$form{'A2'}";
$B2="$form{'B2'}";
$A3="$form{'A3'}";
$B3="$form{'B3'}";
・
・
・
$A50="$form{'A50'}";
$B50="$form{'B50'}";
っていう感じにしたいんです。
まあ「動く」ってだけなら気合いで書けば問題ないんですけど、
ループとか使ってきれいに書く方法を教えていただきたいのです。
どうもループは苦手でして。。。よろしくお願いします。
0417名無しさん@お腹いっぱい。
02/01/28 00:45ID:i9Ky8+Oxwhile (($key,$value) = each(%form)) {
$$key = $value;
}
なんのためにこんな事をするんだろう?・・・・
0419http://nara.cool.ne.jp/mituto
02/01/28 15:08ID:Ye799Ifrhttp://210.172.69.179/jps_search_02au
http://nara.cool.ne.jp/mituto
0421名無しさん@お腹いっぱい。
02/01/28 15:29ID:???いいようんこ見つけたくらいでいちいち騒がなくて。
小学生じゃあるまいし。
0422うんこ
02/01/28 16:35ID:???厨房だからっていじめないでおくれよ。
頑張ってプログラミングしてます。
0423名無しさん@お腹いっぱい。
02/01/29 00:28ID:4QGFGOvyconfig.txt did not return a true value at test.pl line 4.
と言われてしまいます。しかも
print "$board\n";以下が表示されません。
どうしたものでしょうか。
config.txtに
$board = "文字列01";
$dir = "文字列02";
$limit = "文字列03";
$down = "文字列04";
を書き込んでいます。
======test.plの内容======
#!/usr/bin/perl -w
if ($#ARGV < "0") { print "[ERROR]\tUsage: perl test.pl config.txt\n"; exit; }
if (-e $ARGV[0]) { require ($ARGV[0]); }
if (!defined($board) || !defined($dir) || !defined($limit) || !defined($down)) {
print "[ERROR]\n";
exit;
}
print "$board\n";
print "$dir\n";
print "$limit\n";
print "$down\n";
0424名無しさん@お腹いっぱい。
02/01/29 00:34ID:kF9Gt4SCconfig.txtのお尻に
1;
と書いてみる。
0425名無しさん@お腹いっぱい。
02/01/29 01:05ID:aDiD5uGUif ($sentence =~ /([\d]+)/) {
$sentence .= "\n・$1";
}
print $sentence;
この結果
> 今日は29日だ。01:45分
> ・29
が出力されますけど、
いくつ含まれているか判らない数字列を全部取り出して、
それを全部後ろにくっつけて、
> 今日は29日だ。01:05分
> ・29
> ・01
> ・05
と出すにはどうすればいいでしょう。
0426名無しさん@お腹いっぱい。
02/01/29 01:11ID:???$sentence .= "\n・$1";
}
間違えると無限ループになるから注意。
0427名無しさん@お腹いっぱい。
02/01/29 01:14ID:???$sentence2 = $sentence;
while($sentence =~ s/([\d]+)//) {
$sentence2 .= "\n・$1";
}
$sentence .= join "\n", '', map { '・' . $_ } @number if @number > 0;
0429名無しさん@お腹いっぱい。
02/01/29 01:23ID:qEiE9m0V$yyyy = "2002";
$mm = "01";
$dd = "29";
$h = "01";
$m = "21";
$s = "55";
こうしたいんですが、スマートなやり方はないでしょうか?
今は
@date = split //,$date;
for (1..4) {$yyyy .= shift @date;} for (1..2) { $mm .= shift @date;}
こんなのを書いてるんですがいかんせん汚い・・・
0431名無しさん@お腹いっぱい。
02/01/29 01:44ID:jKfeCUaQいや、充分綺麗(ワラ
0432429
02/01/29 02:10ID:mntfCIt4ありがとうございました。
0433名無しさん@お腹いっぱい。
02/01/29 03:11ID:???unpack ('A4A2A2A2A2A2', $str);
0435名無しさん@お腹いっぱい。
02/01/29 06:48ID:yBBFlrS0htmlファイル中にある&を%44になおすプログラムを作っているのですが
そのファイルの中には&が8個あって1番目の&だけを修正したいのです。
#!/usr/local/bin/perl
while(<stdin>){
s/&/%44/o;
print;
}
上記の状態から修正したいのですが、どうしたらよいでしょうか??
0436340=435
02/01/29 07:13ID:yBBFlrS0色々やってみたのですがうまくいきません。
おちから貸してください。
0437・・・
02/01/29 07:29ID:???while(<stdin>){
unless ($this_scalar_means_flag == 3.14159265358979){
$this_scalar_means_flag = 3.14159265358979;
s/&/%44/o;
print;
}
}
0438名無しさん@お腹いっぱい。
02/01/29 07:35ID:???0439340
02/01/29 07:43ID:yBBFlrS0わたしなりには考えたのですがどうしてもうまくいかなくて。。。
0440名無しさん@お腹いっぱい。
02/01/29 09:32ID:/LeYWjfo以前作ってるとか聞いたことあるんだけど。。
0441名無しさん@お腹いっぱい。
02/01/29 10:58ID:???0442名無しさん@お腹いっぱい。
02/01/29 11:50ID:???0443名無しさん@お腹いっぱい。
02/01/29 12:43ID:F543ET41$iのiとはなんのi?
あと$1とか……
色々しらべてみても、これ? つーのが。
0444あぼーん
NGNG0445名無しさん@お腹いっぱい。
02/01/29 13:00ID:???どれにレスしているのか引用しなさい。
わからないことが馬鹿なんじゃなくて、他人に自分の意志を
伝えられる文章を書けないのが、馬鹿。
0446名無しさん@お腹いっぱい。
02/01/29 13:11ID:???言ってる意味がよくわからないが、
$1とかに関しては正規表現の際に使う特別な変数。
http://tohoho.wakusei.ne.jp/wwwperl1.htm#Expr
$iのiってのは、プログラムの世界で、一時的なカウントの変数とかに
一般的にi、j、kなどが使われる理由を知りたいって事?
こっちに関しては俺も知らないからなんとも言えないけど。
0447名無しさん@お腹いっぱい。
02/01/29 13:44ID:F543ET41すんまへん。引用じゃなかったんで。
>>446
>一般的にi、j、kなどが使われる理由を知りたいって事?
そ、そういうことです(苦笑)。
vは valueなのかな、とオボロゲにゃー思うんですが。
0448名無しさん@お腹いっぱい。
02/01/29 14:16ID:???i はイテレータの頭文字じゃないかな?
0449447
02/01/29 15:00ID:???これのことですかね?
0450名無しさん@お腹いっぱい。
02/01/29 15:14ID:JIM4MzqNopen(DAT,"foo.dat");
@foos = sort <DAT>;
close(DAT);
foreach (@foos) {
print;
}
これだとファイルが大きいとメモリを使いすぎるみたいなのでやめようと思って、
下のように書き直したんですが
open(DAT,"foo.dat");
foreach (sort <DAT>) {
print;
}
close(DAT);
この場合も結局、一旦<DAT>を全部読み込んでからsortしてるんでしょうか?
@foosにコピーしないだけマシですか?
0451名無しさん@お腹いっぱい。
02/01/29 15:29ID:7v+0Ir290452450
02/01/29 18:58ID:???じゃああまり気にしないことにします。
0453名無しさん@お腹いっぱい。
02/01/29 20:12ID:GCzt07oL特定文字列を置き換える、という処理をしたいのですが
どうしたらよいのでしょうか?
a.txt
b.txt
c.txt
と渡すと、
a.txtのmonaをgikoに、
b.txtのmonaをgikoに、
c.txtのmonaをgikoに、置き換えるという処理をしたいのです。
0454453
02/01/29 20:21ID:GCzt07oL0455名無しさん@お腹いっぱい。
02/01/29 20:27ID:7v+0Ir290456453
02/01/29 20:31ID:GCzt07oLリストになって渡されるのです。
Linuxみたいに`cat list`とかできるとよいのですが…
0457453
02/01/29 20:35ID:GCzt07oLやりかた間違ってるんでしょうか?
0458名無しさん@お腹いっぱい。
02/01/29 20:39ID:???Can't do inplace edit without backup.
0459名無しさん@お腹いっぱい。
02/01/29 20:44ID:???Windowsにcat入っているの?
0460名無しさん@お腹いっぱい。
02/01/29 20:45ID:7v+0Ir29だけど。今思ったらWindowsなんだね。
じゃあ、自分でファイルオープンして置換しながらtmpファイルに出力して
renameで。
0461453
02/01/29 20:58ID:GCzt07oL1行ずつ「exec perl」で呼び出すってのはだめでしょうか?
type list | perl -e "while(<>){exec \"perl -e's///'\"}みたいに
やってるんですが…うううむ
0462名無しさん@お腹いっぱい。
02/01/29 21:05ID:???foreach $file(@files) {
@DATA = ();
open(FILE,"$file");
while (<FILE>) { $_=~ s/mona/giko/g; push (@DATA,$_); } close (FILE);
open(FILE,">$file");
print FILE @DATA;
close (FILE);
}
0463名無しさん@お腹いっぱい。
02/01/29 21:23ID:???ってのはどうかな。何故かlist.txtが破壊されるけど。
0464名無しさん@お腹いっぱい。
02/01/29 21:27ID:???なら破壊されないか。
0465453
02/01/29 21:28ID:GCzt07oL0466462
02/01/29 21:31ID:9LBydpPt0467名無しさん@お腹いっぱい。
02/01/29 21:37ID:???0468462
02/01/29 21:41ID:vVENca1Fひどいや。
0469467
02/01/29 22:41ID:???別にけなしているわけではない。ある意味、逆にリスペクトだよ。
0470429
02/01/30 00:14ID:vUn9vtFiありがとうございました。
unpackって使った事がないので他にも色々試してみます。
0471462
02/01/30 01:15ID:Dm6D5Jshいえいえ、そうでもないです。
ていうか、コピペにでも見られたのでしょうか?マジに手打ちでちこちこ書いたのに
見事な放置っぷりで悲しくなりました。動作確認までしたのに。
どうしてでしょう?
やっぱ、一行目に
#! /usr/local/bin/perl
書かなかったのが敗因でしょうか?(笑)
0472名無しさん@お腹いっぱい。
02/01/30 10:45ID:cYid0m8S0473名無しさん@お腹いっぱい。
02/01/30 12:18ID:jvP4y3Zoリネームする。
0474名無しさん@お腹いっぱい。
02/01/30 13:08ID:???スミマセン
perlでって意味です。
0475名無しさん@お腹いっぱい。
02/01/30 13:19ID:???perlでリネームする。
0476名無しさん@お腹いっぱい。
02/01/30 13:24ID:???どこも、板違いに思えたので、
こちらで質問させてください。
CGI(Perl)を自作していて、
@Linesに、文字列を埋め込んで
(HTMLの文法に沿った文字列です)
print "@LINES";
この処理を、AのサーバーとBのサーバーで実行した場合、
表示できるAのサーバーと表示できずにエラーとなるBの
サーバーがあります。
これは、物理的なメモリーの不足が問題でしょうか?
Apacheの設定の問題でしょうか?
次回、Cのサーバーをレンタルする場合に、
上記のエラーを回避できるサーバーを選択するには、
何を確認すればいいのかわかりません。。。
どうか教えていただきたいです。
ちなみに、@LINESを出力できないって問題は、
foreach $temp(@LINES){
print $temp;
}
これで、クリアしました。
また、foreachで一行ずつ、書き出す場合と
@LINESで一気に書き出す場合で
サーバーにかける負担と
プログラムの処理にかかる時間についても
ご教授いただければ、幸いです。
よろしくお願いします。
長文スイマセン。。。。
0477名無しさん@お腹いっぱい。
02/01/30 13:31ID:jvP4y3Zoそれぞれのサーバの環境、特に導入されているperlのバージョンなどが
わからなければ何とも言いようがないけど、このケースでは全く
Apacheは関係ないし、メモリの実装量も、あまり関係あるとは思えないな。
オーバーフローでも起こしていない限りスワップしてでも実行するだろうし。
perl単体の問題だと思います。
0478名無しさん@お腹いっぱい。
02/01/30 13:37ID:jvP4y3Zo$souce_dir = "test"; # リネームしたいディレクトリ名
$dist_dir = "test1; # リネーム後のディレクトリ名
`mv $souce_dir $dist_dir`;
0479476
02/01/30 13:37ID:???ご回答ありがとうございます。
失敗したBのサーバーのPerlのバージョンを
調べてみます。
@LINESで一気に書き出す場合と、
$LINESで、一行ずつ書き出す場合については、
Per単体の問題がない場合は(エラーで落ちない場合)
@LINESの方が高速に動作すると考えても良いでしょうか?
0480名無しさん@お腹いっぱい。
02/01/30 13:39ID:jvP4y3Zoforeachの行程分だけ早いだろうけどね。
微々たる問題だとは思うけど。
0481476
02/01/30 14:02ID:???ご回答ありがとうございます。
スワップファイルをHDに書き出す可能性や
サーバーにかける負担を考えると
foreachの方が良いってことですね。
ありがとうございました。
0482名無しさん@お腹いっぱい。
02/01/30 14:14ID:jvP4y3Zoううん、逆です。
foreachのほうがその繰り返しの行程分
リソース食うって意味です。
でも多分本当に微々たる問題だと思います。
0483日付の計算?
02/01/30 14:27ID:5H2ncmbeいった場合どうしてます?。なんかカレンダーの
テーブルとか自作しなくちゃいけないとか?
随分前から悩んでるんですけど・・。
0484名無しさん@お腹いっぱい。
02/01/30 14:33ID:???localtime(time + 30*24*3600);
0485名無しさん@お腹いっぱい。
02/01/30 15:14ID:L4I/gPlU結果が違ってくるね
0486日付の計算?
02/01/30 16:40ID:5H2ncmbeありがとうございます。
0487名無しさん@お腹いっぱい。
02/01/30 17:45ID:5H2ncmbecryptのような暗号化されたものを、元の状態にもどせない
ものではなくて、
任意のキーを与えて文字列を暗号化して、またそれをその
のキーで元の文字列に復元できる。
なるたけサーバーに付加がかからない。
って何か方法があるだろうか?
もしくはもっと簡単でもいいので、今思いつく方法としては
文字コードに変換して幾つかずらして暗号化するって方法ぐ
らいかな。
0488名無しさん@お腹いっぱい。
02/01/31 03:29ID:???その辺がお手軽では?
全く強度を気にしないならBASE64辺りでも良いだろうけど。
少し凝るなら文字コードに変換したのをKeyで作った変換テーブルで
変換すると云う手も有る(テーブルを作る都合上処理は大きくなるけど)。
或いは適当な(数学で云う)関数を作ってKeyにより係数を変動させる。
その関数に文字コードから変換した数を代入し値を出し、適当に文字に
変換なんて手もあるかも(この場合計算誤差が出ないようしなけりゃ成らない…)。
ぱっと考えたものだと上記くらいですね。
処理の重さは…知らない(笑)。
暗号強度と暗号化の複雑さは大体天秤の関係で状況に拠るから一概には
どれが良いっては言えないのは当然だから難しい問題かもしれないけど。
ちなみに自分は新たにアルゴリズム考えるのめんどいからCPAN辺りからモジュール
拾ってきて組み込んだなぁ…。
0489名無しさん@お腹いっぱい。
02/01/31 10:46ID:???#!/usr/bin/perl
use 5.6.1;
use FreezeThaw 0.41, qw(freeze thaw);
my $a = thaw freeze ['Anon_Array_ref' ];
print ref($a) ? "ok\n" : "not ok\n";
__END__
0490名無しさん@お腹いっぱい。
02/01/31 10:47ID:HryKlcft動かないっつか「okにならない」ね。
0491名無しさん@お腹いっぱい。
02/01/31 10:57ID:???0492名無しさん@お腹いっぱい。
02/01/31 11:06ID:???>>489 thaw の返値は配列なので、リストコンテキストで受ける必要あり。
0494名無しさん@お腹いっぱい。
02/01/31 12:25ID:???スマソ。俺はFreezeThawとか言うモジュール知らんから
>>491程度しか分からんかったんだよぅ。
0495名無しさん@お腹いっぱい。
02/01/31 12:40ID:cIzQvI9Fご返答ありがとうございます。
そうですね、どっかでモジュール拾ってくるのが得策かも。
ちょっと昨日帰りの電車で考えたのは、文字列をランダム
に配置しなおして、その位置情報をキーとして解読する方法。
つまり、文字列「abcde」を「53124」というキーで再配置する。
暗号化された結果は「ecabd」になる。解読はそれをキーの位
置情報で並べ替える。16進数使えば16文字まで可能だし。たぶ
ん簡単そうだ。
まぁ、わかるヒトがみれば3秒で解読できるだろうけど(ワ)、
この辺が簡単でいいかな。
0496perl-5.6.1
02/02/01 14:19ID:SRe8SKGMuse strict;
open(FILE, "filename");
foreach (<FILE>) {
print "$.: $_";
}
close(FILE);
これを実行したら、filenameの行数が40行だとすると、
$.が全部40になるんですが。
0497名無しさん@お腹いっぱい。
02/02/01 14:53ID:???while(<FILE>){
foreach はループに入る前に
リストを全部用意する(この場合ファイルを全部読み込む)からね。
0498名無しさん@お腹いっぱい。
02/02/02 05:14ID:uZ4d4EH7じゃぁ、データを削る事はできるか?ゴメンねむいんだ。
初心者が生意気にも掲示板作成中。いいやねよう。
おやすみ。
0499名無しさん@お腹いっぱい。
02/02/02 08:03ID:Z9fivj2Kで、こういう話題(途中改行にも対応とか云々・・・)をあつかったサイトが、有名どころの
どこかにあった気がするのですが・・・
ご存じないですか?
0500名無しさん@お腹いっぱい。
02/02/02 09:01ID:fydzz3EGEUCのメリットって文字化け対策(\回避)がいらないだけですか?
その他にS-jisよりも優れてる部分ってあります?
0501名無しさん@お腹いっぱい。
02/02/02 09:18ID:???それだけあれば十分だろ。
0502名無しさん@お腹いっぱい。
02/02/02 09:22ID:H8DUG7wUここかな?
http://www.din.or.jp/~ohzaki/perl.htm
>>500 も行ってみると役立つと思うよ。
0503500
02/02/02 14:15ID:???0504名無しさん@お腹いっぱい。
02/02/02 15:41ID:???0505504
02/02/02 19:46ID:???0506名無しさん@お腹いっぱい。
02/02/02 19:54ID:???別ページに飛ばす
}
0507名無しさん@お腹いっぱい。
02/02/02 19:55ID:???お前が常時監視して手動で誘導しろよ。
0508
02/02/03 00:25ID:1JKHBAhEとして、
#!/usr/local/bin/perl
print "sine";
と書きました。そして、サーバーにアップして、
chmod 755 a.pl
で、絶対パスで、実行した所
[homepage@sv ~]# /home/homepage/a.pl
/home/homepage/a.pl: Command not found.
と出てきます。
ファイルは、あるのに、コマンドは無い...って
どうしてですか?
0509名無しさん@お腹いっぱい。
02/02/03 00:28ID:+IXT+7Wc/usr/local/bin/perl -V
とかやってみれ。
0510504
02/02/03 00:29ID:???プ
早く教えろよ
わかるやついないのか?
0511504
02/02/03 00:30ID:???はぁ・・・・低脳。
いいから早く教えろよ
0512
02/02/03 00:30ID:1JKHBAhESummary of my perl5 (5.0 patchlevel 5 subversion 3) configuration:
Platform:
osname=linux, osvers=2.2.18-1.6, archname=i386-linux
uname='linux dhcp-115.jp.tlan 2.2.18-1.6 #1 tue feb 13 04:54:12 utc 2001 i686 unknown '
hint=recommended, useposix=true, d_sigaction=define
usethreads=undef useperlio=undef d_sfio=undef
Compiler:
cc='cc', optimize='-O2', gccversion=2.95.2.1 19991024 (release)
cppflags='-Dbool=char -DHAS_BOOL'
ccflags ='-Dbool=char -DHAS_BOOL'
stdchar='char', d_stdstdio=undef, usevfork=false
intsize=4, longsize=4, ptrsize=4, doublesize=8
d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
alignbytes=4, usemymalloc=n, prototype=define
Linker and Libraries:
ld='cc', ldflags =' -L/usr/local/lib'
libpth=/usr/local/lib /lib /usr/lib
libs=-lnsl -lndbm -lgdbm -ldb -ldl -lm -lc -lposix -lcrypt
libc=, so=so, useshrplib=false, libperl=libperl.a
Dynamic Linking:
dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-rdynamic'
cccdlflags='-fpic', lddlflags='-shared -L/usr/local/lib'
Characteristics of this binary (from libperl):
Built under linux
Compiled at Feb 16 2001 06:49:02
@INC:
/usr/lib/perl5/5.00503/i386-linux
/usr/lib/perl5/5.00503
/usr/lib/perl5/site_perl/5.005/i386-linux
/usr/lib/perl5/site_perl/5.005
0513名無しさん@お腹いっぱい。
02/02/03 00:32ID:+IXT+7Wcそしたら、
perl /home/homepage/a.pl
ってやってみそ。
0514
02/02/03 00:35ID:1JKHBAhE動きました!!!!
何だったのでしょうか?
0515名無しさん@お腹いっぱい。
02/02/03 03:56ID:5Ne5ycjd参考になるフリー配布のスクリプトがあったら教えてください。
0516名無しさん@お腹いっぱい。
02/02/03 04:01ID:+IXT+7Wchttp://www.google.co.jp/search?q=%83A%83b%83v%83%8D%81%5B%83h%81@perl%81@CGI&hl=ja&lr=
0517名無しさん@お腹いっぱい。
02/02/03 04:06ID:+IXT+7Wcホストntttkyo050192.adsl.ppp.infoweb.ne.jp
WebProg板のみんなで作ろうよ!
名前: 名無しさん@お腹いっぱい。
E-mail: age
内容:
まず、WebProg板謹製アップローダーとか、どうでしょ?
0518名無しさん@お腹いっぱい。
02/02/03 04:35ID:1D0LvUGLよかったら,このスレ使ってください。
学習用にCGI書くスレです。
【CGI】合同開発室
http://pc.2ch.net/test/read.cgi/php/1001950501/l50
0519あぼーん
NGNG0520名無しさん@お腹いっぱい。
02/02/03 12:48ID:???おそらく、Perl5の""内での@の解釈が変わったことによるものだと思う。
出力されないといっているほうは、そのまま"@LINE"という文字列が
出力されいないか? もしそうだとしたら、Perlがversionが古い。
で、print "@LINES"; の代用として foreach $temp (@LINES){ print $temp }
で問題ないのなら、素直に print @LINES; としとけ。
0521名無しさん@お腹いっぱい。
02/02/03 13:48ID:???0522名無しさん@お腹いっぱい。
02/02/04 12:16ID:6nIPvsGBマルチポストですが質問させてください。
以下のスクリプトですが
#! /usr/bin/perl # お約束
# 私のスクリプトそのままです(編集はしてません)
$TMP = 10 ** 10; # $TMP に10の10乗を代入
$X = 10; # $X に10を代入
while ($TMP) # $TMPが0になるまで繰り返し処理
{$A = --$TMP % $X; # $TMPの値を-1し、$Xの剰余を$Aに代入
print "$A $TMP \n";}# 処置した値を画面に表示
上記のスクリプトですが、表示される$Aの値が変化しません
5 999999999
5 999999998
5 999999997 ......
$Xの値が1だと$Aは0で固定
$Xの値が2だと$Aは1で固定
$Xの値が3だと$Aは0で固定
$Xの値が4だと$Aは3で固定
$Xの値が5だと$Aは0で固定
$Xの値が6だと$Aは3で固定
$Xの値が7だと$Aは3で固定
$Xの値が8だと$Aは7で固定
$Xの値が9だと$Aは3で固定
私の知識が正しければ、$TMPの値を$Xで割った余りの数値が表示され
1行ごとに値が変更されると思うのですが。。。
どこか間違っているのでしょうか
識者の皆様、ご回答をお願いします
0523名無しさん@お腹いっぱい。
02/02/04 12:40ID:???10**10じゃなくて10**3から試してミソ。
0524522
02/02/04 13:18ID:6nIPvsGB返答ありがとうございます
早速10**3で試してみたところ、期待通りの動作が確認できました
(10**9まで、動作が確認できました)
どうやら値が大きすぎたようです
でも、$TMPの数値は整数で表示されているのに・・謎だ。
助かりました
0525カリハン
02/02/04 15:00ID:uKBk3jL4http://www.th-ladybird.co.jp/flash/
回避方法として、ftpでUPするものを作ろうと思うのですが、それって可能でしょうか?
当方UNIXのコマンドほとんどわかりません。
上記の製作可否や、503の回避方法、それらの教材サイト、教本、等ありましたら教えてください。
0526名無しさん@お腹いっぱい。
02/02/04 16:14ID:???ソースを見なきゃ何も言えないね。
0527カリハン
02/02/04 16:20ID:uKBk3jL4http://www.th-ladybird.co.jp/flash/upload.txt
0528名無しさん@お腹いっぱい。
02/02/04 16:51ID:???もう少し症状を詳しく書いてくれると助かるんだが・・・
Unavailableはどんな時に出るの?
適当に解釈すると、ファイルサイズが大きくなるとUL途中で
コネクションが切れると言う事かな
だとしたら、99%サーバサイドの問題なのでどうしようも無いんじゃ
ないかな。
後の1%は説明が面倒なので省略 w
で、FTPならanonyで開放する事になるんだけど、作ると言うか開放して
おしまいなので、何の知識も要らないでしょ
ただ、今時そんな危ない所は誰も使わないと思うよ
最近はExecutableなflashが問題になってたりするし、怖くて見れないよ
0529名無しさん@お腹いっぱい。
02/02/04 16:54ID:???だったら全く意味が無い。
HTTPDがリクエストを処理をする段階でヘバってるんだから
試しに何秒位で死ぬか実験してみればよく解るよ
0530名無しさん@お腹いっぱい。
02/02/04 17:03ID:???503で見られなかった。
サーバーの負荷が高いだけじゃない?
0531カリハン
02/02/04 17:12ID:uKBk3jL4UP容量は5,000,000バイトでしばってあるんですが、とりあえずテストでは、UP途中でオチたことはないです。
UPはできるのですが、ファイルUP後ほぼ必ず503がでてしまいます。
チャット設置なんかを禁止しているので、サーバが弱いのは間違いないのですが、なんか回避できないかなと。
ここのレスはチェックしつつ、>>529を勉強してみます。
ありがとうございました。
0532カリハン
02/02/04 17:14ID:???SAKURA.AD.JP // SAKURA INTERNET
http://www.sakura.ad.jp/
0533名無しさん@お腹いっぱい。
02/02/04 17:24ID:???なんつーか、いかにも"素人が書きました"っつー感じのスクリプトだな。
0534カリハン
02/02/04 17:32ID:???大目に見てください。
0535カリハン
02/02/04 17:39ID:???初心者スレじゃなくて、素人スレ探して聞くべき質問ですか。
0536名無しさん@お腹いっぱい。
02/02/04 18:04ID:???アクセス数か転送量かどちらかが一定以上になるとストップかけられるとかは?
鯖業者に聞いた方が早くない?
0538Name_Not_Found
02/02/04 18:48ID:???ジオシティーにHPをなんとか作ることができたのですが、
掲示板を設置したいなとおもって、フリーソフトのBBSをダウンロードして
使おうとしたのですが、Perlへのパスがわからなくて、行き詰まっています。
ジオシティーのパスを知っているもしくは
どこに行けばわかるか知ってらっしゃる方、よろしければ教えていただけませんでしょうか。
0539名無しさん@お腹いっぱい。
02/02/04 18:53ID:???GeocitiesってPerl使えないんじゃないの?
FAQ探して読んでみるべし
「CGIは使えますか?」とか有るから
0540Name_Not_Found
02/02/04 19:13ID:???ありがとうございます。
そうなんですか、ちょっとがっかりです。
間違ってスレに書き込んでしまってすみませんでした。
0541名無しさん@お腹いっぱい。
02/02/04 21:10ID:???sakuraはサーバ負荷が高くなると、そのエラーを返します。
業者に聞くまでもなくFAQに載ってますよ。
回避策はまぁ、負荷を小さくするしか。
そもそも共用鯖で503が出るほど使うなゴルァ。
1日辺り数万アクセス、ギガ単位の転送量あるはずだぞ。
503だとおそらく転送量の方だと思う。ここら辺り見てくださいな。
http://xxxxx.sakura.ne.jp/log.html xxxxxxは自分所のサーバ名
http://www.sakura.ad.jp/support/web/errmsg/err-web.html
0542perlのバージョン
02/02/04 22:48ID:4hvyQ2bt0543名無しさん@お腹いっぱい。
02/02/04 22:56ID:???print <PIPE>;
close(PIPE);
0544名無しさん@お腹いっぱい。
02/02/04 22:59ID:???0545perlのバージョン
02/02/04 23:16ID:4hvyQ2btすいません。いっぱい出てきました。
0546名無しさん@お腹いっぱい。
02/02/04 23:17ID:???0547名無しさん@お腹いっぱい。
02/02/04 23:18ID:???さぁ!そこで正規表現の出番だ!
ッテ言うか>>544さんを試してください。。。
0548_gzip
02/02/04 23:22ID:???ないし
perl -V:version
0549perlのバージョン
02/02/04 23:27ID:4hvyQ2bt$]は、書き間違いかと思ってしまった・・
だんだん自分が嫌になってきた(鬱
0550名無しさん@お腹いっぱい。
02/02/04 23:31ID:???0551名無しさん@お腹いっぱい。
02/02/05 01:36ID:bVJSiotcを教えてもらえないでしょうか?
Aさんのページは○個のリンクが張ってあります。
Bさんのページは○個のリンクが張ってあります。
という具合にしたいのですが。。。
0552名無しさん@お腹いっぱい。
02/02/05 02:10ID:???0553名無しさん@お腹いっぱい。
02/02/05 02:51ID:hit8P6YF0554名無しさん@お腹いっぱい。
02/02/05 03:25ID:fmBbp0lcそんなもんなんですか?
5.005_03です。
0555名無しさん@お腹いっぱい。
02/02/05 03:36ID:???カレントをコマンドサーチパスに加える事の危険性と
意味は同じだと思うが。
0556554
02/02/05 04:17ID:???Tスイッチについて調べても、 @INCについて触れているものがなかったので
@INCは自分の環境でしか変わらないのかなぁ思い質問しました。
> カレントをコマンドサーチパスに加える事の危険性
は知らなかったのですが、
カレントディレクトリにスクリプト内で使われているのと同名のファイルを
他人に勝手に置かれた時に、意図しない動作をする可能性があるから危険
ということですか?
0557カリハン
02/02/05 10:14ID:???それがですね。スナックのHPと上記アップローダだけおいてるんですが、
HPのほうは1日多くても20アクセス(内半分は従業員)ほどなんです。
0558名無しさん@お腹いっぱい。
02/02/05 17:55ID:???>カレントディレクトリにスクリプト内で使われているのと同名のファイルを
>他人に勝手に置かれた時に、意図しない動作をする可能性があるから危険
その通り。
ついでに-T付けると$ENV{PERL5LIB}とかも無効になるから。
0559名無しさん@お腹いっぱい。
02/02/05 20:07ID:kMSeXYwX書き込みフォームは別に作る必要があるのですが
ログをとりたいのですが、
これだと入力したのを出力するだけの事しか出来ません。
誰か改造を・・・。
#!/usr/local/bin/perl
#データの受け取り
read( STDIN, $query,$ENV{ 'CONTENT_LENGTH' } );
@in_params = split( /&/, $query );
foreach $in_param ( @in_params ) {
( $key,$value ) = split( /=/,$in_param );
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-f0-9])/pack('C',hex($1) )/ge;
$param{ $key } = $value;
}
#結果の出力
print "Content-type: text/html\n\n";
print $param{ 'name' };
print "<br>";
print $param{ 'gimon' };
print "<br>";
exit;
0560名無しさん@お腹いっぱい。
02/02/05 20:11ID:???意味がわからない。
説明もプログラムの意図も。
あ、ファイル!ファイル!
open
<>
close
など勉強して。
0561名無しさん@お腹いっぱい。
02/02/05 21:20ID:???0562名無しさん@お腹いっぱい。
02/02/05 22:05ID:???0563名無しさん@お腹いっぱい。
02/02/05 22:11ID:Zu+hD/6kまず最初に、Login画面を出して、
個人の認証をおこないます。
その次に、その認証した人用に、常にHTMLを反映させたいのですが、
どうすればいいでしょうか?
たとえば、モナーという人がログインしたら、
常に、モナーという人を意識したページにしたいんですが。
誰か、教えてくださいませ。
0564名無しさん@お腹いっぱい。
02/02/05 22:15ID:???cokkieで良いのかな?
$ENV{"HTTP_COOKIES"};
書き込み方は勉強して。
もしくは生成するページのリンクを
/path/a.cgi?name=モナー
として常にモナー用のデータを出力するようにするとか。
0565563
02/02/05 22:23ID:Zu+hD/6kそうなんですよね。
クッキーでやるのがベストかな。
>もしくは生成するページのリンクを
>
>/path/a.cgi?name=モナー
>
>として常にモナー用のデータを出力するようにするとか。
これだと、誰かが不正に利用してしまいそうで、
(まぁ、パスワードも常に出力するというのもありだけど)
厳しいかなぁと。
他のログインを利用してるページを見ると、
この方法は使ってないようですし。
0566名無しさん@お腹いっぱい。
02/02/05 22:33ID:???もちろん暗号化+httpsだったけど。
0567563
02/02/05 22:40ID:Zu+hD/6kなんか、もっとスマートな方法はないでしょうか?
クッキーも拒否してる人がいないとは限らないし。
ヘルプミ〜
0568名無しさん@お腹いっぱい。
02/02/05 22:42ID:???0569名無しさん@お腹いっぱい。
02/02/05 22:43ID:???0570563
02/02/05 22:46ID:Zu+hD/6kクッキー以外になにかあればと思ったのですが。
教えてくれて、どうもありがとうございました。
0571セキュリティホールについて
02/02/05 23:19ID:Iem+OJzpWEBはセミプロ程度、WEB言語系は素人若干書き換え程度です。
現在、ボランティア系の団体で複数の応募フォーム、SSLPGPクレジットカード引き落としなどを
使ったホームページを担当しています。
若干コーディングできる方から、簡易計算自動入力、曜日自動入力を強く勧められて以下の
スクリプトを頂きました。
曜日自動入力については、動作して入力欄がブランクでなく選択なので、安全上問題ない気がしますが、
自動計算に関して、動作もおかしく、それよりも入力欄ブランクで、タグその他
記述された場合、セキュリティ面でかなり不安なのですが、いかがでしょうか。
私個人としては、買物カゴ式の別CGIをあてる方が良いのではないかと思うのですが、
どうか教えて下さい。宜しく。 (長くて乗らないので一部除く)
<!-- saved from url=(0022)http://internet.e-mail -->
<HTML>
<HEAD><TITLE>簡単な入力検査の例</TITLE>
</HEAD>
<BODY>
<H3>簡単な例</H3><HR>
<FORM NAME="ValidForm">
5/18
<INPUT TYPE="TEXT" NAME="T0" SIZE="3">
人
<p>5/19
<input type="text" name="T1" size="3">
人</p>
<p>合計
<input type="text" name="T2" size="3">人</p>
<p>申込金(人数×2000円)<input type="text" name="T3" size="20">円</p>
<p>入金日 2002年<select size="1" name="D1">
<option value="1">1</option>
</select>月<select size="1" name="D2">
<option value="1">1</option>
</select>日<input type="text" name="T4" size="3">曜日</p>
<p> </p>
</FORM>
</BODY>
</HTML>
0572Name_Not_Found
02/02/05 23:25ID:IJ+Ly9Q8相対パスの記入の仕方で
../みたいなのってもっと..が小さくないといけないと思うのですが
どうやって打てばいいでしょうか?
よろしくお願いします。
0573名無しさん@お腹いっぱい。
02/02/05 23:29ID:Zu+hD/6kあなたの質問に答えてあげたいけれど、
微妙に日本語の意味がわからないです。
でも、タグが心配なのであれば、
Perlの正規表現を使って除去すればいいのではないでしょうか?
0574名無しさん@お腹いっぱい。
02/02/05 23:29ID:???情報が少ないのでなんとも言えません。
HTML・JavaScriptの話なら板違いです。
>>572
>../みたいなのってもっと..が小さくないといけないと思うのですが
意味がわかりません。
0575名無しさん@お腹いっぱい。
02/02/05 23:32ID:???フォントの問題だと思う
等幅とそうじゃないのだと点の大きさちがうから
どっちでもよい
0576こぐぅ
02/02/06 00:00ID:1lbXw0DS根本的なことから分かりません。
誰か無知な私を助けてください。
0577名無しさん@お腹いっぱい。
02/02/06 00:06ID:???ほら、スレッドって一般的なサイトで一般的にある掲示板形式じゃん。
0578名無しさん@お腹いっぱい。
02/02/06 00:08ID:???どうぞ。
http://piza.2ch.net/read4.txt
0579名無しさん@お腹いっぱい。
02/02/06 00:12ID:???それ Cじゃん
0580名無しさん@お腹いっぱい。
02/02/06 06:12ID:???ほぼそのままで効率の悪いperlプログラムに変換できるでしょ。Cなら。
0581名無しさん@お腹いっぱい。
02/02/06 09:17ID:???グローバル変数になりますが、
myとか使って、スコープを設定すると、
メモリーの使用量に変化は出ますか?
なるべく、my使ったほうがいいでしょうか?
0582名無しさん@お腹いっぱい。
02/02/06 09:27ID:???しかしそれ以前の問題で、myを使った方がいいと俺は思うね。
入門者のおいらにも教えて下さいな。
JAVAやクッキーがオフだと別のページに
飛ばしてしまう様なcgiってありますか?
これってcgiを使わなくてもできますか?
0584名無しさん@お腹いっぱい。
02/02/06 11:04ID:???マルチ氏ね
0585名無しさん@お腹いっぱい。
02/02/06 11:08ID:???547 名前: :02/02/06 10:39 ID:PbQtpnzC
JAVAやクッキーがオフだと別のページに
飛ばしてしまう様なcgiってありますか?
これってcgiを使わなくてもできますか?
初心者過ぎて話にならないと仰らずに
入門者のおいらにも教えて下さいな。
http://pc.2ch.net/test/read.cgi/php/1003132904/877
877 名前: :02/02/06 10:34 ID:PbQtpnzC
JAVAやクッキーがオフだと別のページに
飛ばしてしまう様なcgiってありますか?
これってcgiを使わなくてもできますか?
初心者過ぎて話にならないと仰らずに
入門者のおいらにも教えて下さいな。
0586名無しさん@お腹いっぱい。
02/02/06 15:22ID:JVnz6bAn文字列前後のホワイトスペースの取り除き方を教えて下さい。
PHPだと、trim関数でできてしまいます。
例:$REPORT = trim($REPORT);
Perlでの方法を教えて下さい。
文字列の中の改行は残したいです。
よろしくお願いします。
0587名無しさん@お腹いっぱい。
02/02/06 15:23ID:ovT8yWtO0588名無しさん@お腹いっぱい。
02/02/06 15:57ID:???s/^\s+//;
s/\s+$//;
}
0589名無しさん@お腹いっぱい。
02/02/06 16:11ID:JVnz6bAn>588さん
出来ました。
ありがとうございました。
またよろしくお願いします。
0590kopt
02/02/06 18:11ID:BylxzAgo探したものは説明がないので参考にならないんです。
というわけで,質問させてください
ファイルアップロードスクリプトでファイルの制限(GIFとかJpegとか)させたいのですが、
どのようにすればいいかヒントをください。
0591名無しさん@お腹いっぱい。
02/02/06 18:22ID:???スクリプトがないから何とも言えないけど
指定したファイルの拡張子以外のアップロードできないようにすれば?
そうするのはどうするのってのはスレ違いね。
0592名無しさん@お腹いっぱい。
02/02/06 19:16ID:???精度低いけど,ファイルのContent-Type見るとか。
0593kopt
02/02/06 19:17ID:BylxzAgoスレ違いですか? でも、このスレって初心者のスレでしょ?駄目ですかねぇ
どのスレ行っても
ここで聞くなとかいわるんだろうなぁ
0594名無しさん@お腹いっぱい。
02/02/06 19:24ID:???とりあえず>>1を読んで、1〜3をしっかりしよう。
そして君は「ヒントが欲しい」と言った。
>591はヒントを教えた。
それでいいだろ。
0595名無しさん@お腹いっぱい。
02/02/06 19:25ID:???スレ違いって所しか読んでないの?
>>591 >指定したファイルの拡張子以外のアップロードできないようにすれば?
>>590 >精度低いけど,ファイルのContent-Type見るとか。
この二つの提案に食いつく気はないの?
スクリプト改造工房 Part4
http://pc.2ch.net/test/read.cgi/php/1012839651/l50
スクリプトのソース持参して上記スレに移動しろ
0596名無しさん@お腹いっぱい。
02/02/06 19:26ID:???0597590
02/02/06 20:17ID:BylxzAgoうーん,もちろんそれは候補にあるんです。
それをかけないんですよね。
まぁ、こんな厨房じゃ書くなって事ですね。
>>594
ヒントを教えてもらったのは確かですので感謝しマース
0598ファイルロック
02/02/06 21:15ID:6W+ZcRg7今一どうすりゃ安心なのかわからないファイルロック。
掲示板のログファイルの保護の為にファイルロックする場合、
書き込む時に
open(IN, ">>$file");
flock(IN,2);
print IN "$data\n";
close(IN);
この程度で、十分役割を果たすものでしょうか?
ログファイルの読み出しの時にもロックってかけます?
またこのflockの汎用性はどの程度ですか、NTやらは抜かして
0599名無しさん@お腹いっぱい。
02/02/06 21:33ID:???結局cgiのファイルロックってのは、行き着く所は
システムコールのアトミック性なんだな。
で、上の書き方だと、open と flockの間に時間的なスキマが絶対有るだろ?
もしその間に100人が同じファイルをopenしちゃったら、
ファイルポインタの加減で死ぬ可能性が有るってこった
それがどれ位掲示版で危ない事なのかは、漏れには分からない。
0600名無しさん@お腹いっぱい。
02/02/06 21:40ID:???例えばファイルが100バイトだとするだろ?
で、openしてflockする前に他のプロセスが同じファイルを開くだろ?
そうすると、そのプロセスは全てファイルポインタを100バイトに
あわせて、そこから追記し始めると言う訳
0601ファイルロック
02/02/06 21:41ID:6W+ZcRg7なるほど、氏ぬ可能性がある・・と。
でも、まぁ絶対は無いモンみたいだからこれでいいかなぁ
0602名無しさん@お腹いっぱい。
02/02/06 22:11ID:???gifの判別はヘッダを見るべし!
gif89aとか書いてある。
jpgはダンプしたこと無し。
0603名無しさん@お腹いっぱい。
02/02/06 22:16ID:???PNGや JPGもヘッダでわかるはず。
0604名無しさん@お腹いっぱい。
02/02/06 23:09ID:???>>600 ってことは、書き込む時に
sysseek HANDLE, 0, 2;
とすればいいのだろうか?
0605名無しさん@お腹いっぱい。
02/02/06 23:34ID:???0606名無しさん@お腹いっぱい。
02/02/06 23:47ID:+a0hOzna$_ =~ s/ー/あ/g;
ってやったらエラー出ます。
$_ =~ s/!/あ/g;
だったら出ません。
どうしてですか?
漢字コード変換したりしていろいろやってみたんですが、うまくいきません。
よろしくお願いします。
0607605
02/02/06 23:48ID:???ただ>604氏の方法じゃ上手く行かないと思うよ
ファイルポインタはプロセス間で共有されてる訳じゃ無いからね
追記モードの時は SEEK_SET == SEEK_END になってるだけで
上書きするのと何ら変わらない筈だから
後は、書き込む度にwriteの戻り値分SEEK_ENDを進めているだけ
だから、0,SEEK_END とすると他のプロセスが書き込んだ分は無視されてしまうよ
WINは知らないけど、大体同じ様なもんだと思う
(しかし下手な説明だ・・・)
0608605
02/02/06 23:49ID:???で如何? 後はquotemetaとかを検索
0609名無しさん@お腹いっぱい。
02/02/06 23:53ID:+a0hOznaありがとうございます!
1行目は意味不明でしたが、quotemetaで検索したらいろいろ出てきました。
調べてみます。
0610ブクログラマー ◆eLx2NxJ6
02/02/06 23:56ID:6/WQt+6L現在 僕は、CGIでメールを送信するページを作ってるんですが
ローカルで、sendmailを実行することはできますか?
0611名無しさん@お腹いっぱい。
02/02/07 00:00ID:???0612ブクログラマー ◆eLx2NxJ6
02/02/07 00:04ID:4GVSBAfQApacheで確認して、その後鯖にうpするやり方で、作ってるんですが
Apacheにはsendmailがついてないようです。
DLすればよろしいんですか?
0613名無しさん@お腹いっぱい。
02/02/07 00:08ID:???後、うpとか言う人信用できないです。
自分のアドバイスでメールばらまきCGI組まれても困りますから。
新しい人をお待ち下さい。
0614ブクログラマー cj3074167-a.itabs1.kn.home.ne.jp
02/02/07 00:10ID:???礼儀知らずで、ごめんなさい。
うpっていう言葉も2chだから使ってしまいました。
使用しているOSはWinXP(Home)です。
PC上の仮想サーバー(Apache)で、sendmailの機能を使いたい、と考えています。
メールをばらまく行為とかは、考えていません。
その誓いとして、自分のメルアドとふしあなを書いておきます。
無礼をお許し下さい。
0615age派
02/02/07 00:15ID:???それでCGIゲームを置きたくて
とりあえずApacheで動作確認したFFAとEndlessBattleを置いてみましたが
FFAは呼び出しの時点でスクリプトエラー
EBは呼び出しはできたもののどれかひとつでもリンク押すとスクリプトエラー
僕の力じゃどうしようもありません。
何か方法は無いでしょうか?
0616age派
02/02/07 00:18ID:???すいません、出直してきます(汗
0617名無しさん@お腹いっぱい。
02/02/07 00:18ID:???できない、わからないならまだ時期ではない。あきらめる。
0618age派
02/02/07 00:27ID:???ありがとうございました。
あと、スレ違いすいません(汗
0619名無しさん@お腹いっぱい。
02/02/07 00:32ID:???0620名無しさん@お腹いっぱい。
02/02/07 01:13ID:???2.使えるプログラム言語は?
Perlのバージョンは4.036です。
http://home.hi-ho.ne.jp/home/faq/service/rweb/rweb_a2.html
0621名無しさん@お腹いっぱい。
02/02/07 02:03ID:???0622age派
02/02/07 06:23ID:???あの後戻っていろいろやってたらそのまま寝てしまって・・・。
Perlのバージョンはドメインがmaxなので5.6らしいです。
それでパスもやったんですが結局無駄でした(汗
0623名無しさん@お腹いっぱい。
02/02/07 06:45ID:???http://www.kawa.net/works/perl/catch/news.html
スクリプトの冒頭で Content-type 出しておけば大体のエラーは
ブラウザでチェック出来るから
0624age派
02/02/07 06:46ID:???仕方が無い・・・厨房なんで学校いってきます。
本当にすいませんでした・・・。
0625名無しさん@お腹いっぱい。
02/02/07 08:08ID:???print "CONTENT-TYPE:text/html\r\n\r\n".$[;
バージョンチェック。
0626まゆ
02/02/07 09:37ID:BzGq5BfM「アップされた画像を任意の大きさに変更したい」と言われましたが
そのようなことができるでしょうか?
ローカルからサーバにアップされた画像をたとえば250×200に変更するとか、
サイズを50Kに変更するといったようなことはできるのでしょうか?
どなたかご存じの方がいましたら教えてください。
また、そんなことはできないよということでも良いのでどなたか教えてください。
0627名無しさん@お腹いっぱい。
02/02/07 13:11ID:???という形式でcgiが使えているでしょう。
これはどうやっているのですか?
0628初心者
02/02/07 13:49ID:???要するにgifなりjpgなりを加工したい訳だよね。
ファイルサイズを変えたいと言うことは。
そりゃぁPerlには無理なんじゃないかなぁとか思ってみる。
それとも、そんなモジュールとかあったりするんだろうか。。。
と、検索。
こんなの発見。
GDモジュール(日本語チョウ訳)
http://member.nifty.ne.jp/hippo2000/perltips/gdmemo.htm より。
getBounds
GD::Image::getBounds( ) オブジェクト・メソッド
このメソッドはそのイメージの幅と高さの2つ要素を持つリストを返します。
取得することはできますが、作成したらイメージの大きさを変更することができません。
やっぱり出来ないのかな?
0629初心者
02/02/07 13:53ID:???copyResized
GD::Image::copyResized(sourceImage,dstX,dstY,srcX,srcY,destW,destH,srcW,srcH) オブジェクト・メソッド
copyと似ていますが、コピー元と出力先に違う大きさを指定することができます。
コピー元と出力先の大きさは、それぞれ (srcW,srcH) と (destW,destH) で指定します。
copyResized()は指定された大きさに合わせてイメージを拡大、縮小をおこないます。
例:
$myImage = new GD::Image(100,100);
... いろんな描画 ...
$srcImage = new GD::Image(50,50);
... いろんな描画 ...
# 25x25 ピクセルの領域を $srcImage から
# $myImageの(10,10)に大きくしてコピーします。
$myImage->copyResized($srcImage,10,10,0,0,50,50,25,25);
---
参考:http://homepage1.nifty.com/smastani/hp/smastani/pc/thumbn.html
0630名無しさん@お腹いっぱい。
02/02/07 20:01ID:wErLB+F6あいうえお-->あ/い/う/え/お
こんな感じ。
とっても簡単なんだと思うんだけど、文字列置換ではやり方が思いつかないし、
splitとjoinでもなんか区切り文字が必要で、この場合区切り文字は無くて..
頭悪くてすみません。お願いします。
0631名無しさん@お腹いっぱい。
02/02/07 20:25ID:???http://www.din.or.jp/~ohzaki/perl.htm#JP_Split
これが参考になるかな?
0632630
02/02/07 20:40ID:wErLB+F6斜め読みしたかぎり、理解できませんでしたが、
題名からして回答っぽいです。参考にさせていただきます。
0633GIFの加工
02/02/07 21:42ID:???GIFはたしかUNISYSが版権?持ってて、画像をくっつけるぐらいなら
問題ないけど、加工するとなると権利に引っかかる可能性アリだった
と記憶してる。
pngとかでできないのかな?
0634名無しさん@お腹いっぱい。
02/02/07 22:36ID:XOjr1cO9最近のGDはGIFサポートしてないのぉ
0635名無しさん@お腹いっぱい。
02/02/07 22:59ID:cTwOw5eaprint join "/",(split //,"aiueo");
でいいんじゃないのん?
0636635
02/02/07 23:08ID:cTwOw5ea勘違いしてた。ゴメ。
0637age派
02/02/07 23:11ID:???すいません、重なって書き込みだったらしく気づかずそのまま行ってしまいました(汗
で、あと・・・KCatchの使い方が良くわからなかったです(汗
今までいじる程度しかやってなかったんで・・・。
0638age派
02/02/07 23:15ID:???今のが623さんへです。
それと、625さん。それをファイルにして動かして見ればよいのでしょうか?
0639名無しさん@お腹いっぱい。
02/02/08 05:15ID:???鯖への負担を減らしたいので、いくつかのCGIをテストしてその負荷を調べることにしました。
CPUの処理時間から負荷を量ろうと
win2000+ActivPerl+AN HTTPDの環境で、スクリプトの上のほうに
$CPU_start = (times)[0] ; #計測スタート
表示部分(普段リロードされる)の下のほうに
$CPU_end = (times)[0];
printf("<DIV align=right>消費時間: %.3f CPU秒</DIV>\n",$CPU_end-$CPU_start);
と書きました。しかしどのCGIも0.000〜0.010秒程度となり、比較ができませんでした。
Perlの負荷(チャットリロード時)を計る良い方法はないでしょうか?
0640名無しさん@お腹いっぱい。
02/02/08 06:24ID:???CPUビジーとは限らんだろ、メモリかも知れんし、ディスクかも知れない
Benchmark取れば君の言ってる事は出来るが
それが何の役にたつのやら・・・・
0641名無しさん@お腹いっぱい。
02/02/08 09:18ID:???自作して自分なりのダイエットを徹底的に行うって言うのも楽しい。
0642まゆ
02/02/08 09:23ID:WCH/GiDkみなさんのアドバイスを参考に作成いたします。
初心者さま
参考になるページありがとうございます。
0643名無しさん@お腹いっぱい。
02/02/08 14:01ID:???http://choco.2ch.net/test/read.cgi/news/1013077421/
0644名無しさん@お腹いっぱい。
02/02/08 20:05ID:???Java-ServletみたいなConnection Poolingってできるんでしょうか?
調べてみたんですが、mod_perlしか見つかりませんでした.
事情によりmod_perlは使えないので、その他の方法でなにかあります?
0645名無しさん@お腹いっぱい。
02/02/08 21:30ID:???ご教授ありがとうございました。
Benchmark.pmの解読にいってきます。
0646名無しさん@お腹いっぱい。
02/02/08 22:59ID:???お金っぽくないんです。
で、なんでかなぁ?って考えたら、カンマがないからだとわかりました。
$money='500000'
に、3桁区切りのカンマをつけるにはどうすればいいでしょうか?
0647名無しさん@お腹いっぱい。
02/02/08 23:02ID:???for($i = 0;$i < $length($data);$i++)
{
if($i % 0 == 2)
{
$res .= ",";
}
$res .= sybstr($data,$i,1);
}
0648名無しさん@お腹いっぱい。
02/02/08 23:10ID:???早レスありがとうございます。
なるほど、そういう方法もありですか。
(たぶん$length → lengthだと思うのですが)
個人的には、正規表現か、sprintfでなんとかならないかなぁと思ってるんですが、
どうでしょうか?
0649名無しさん@お腹いっぱい。
02/02/08 23:18ID:???過去ログ、その他の役立ち情報は>>2-10を見よう。
数字を 3桁ごとにコンマで区切る
http://www.din.or.jp/~ohzaki/perl.htm
0650名無しさん@お腹いっぱい。
02/02/08 23:18ID:???$l = reverse $l;
$l =~ s/(\d{3})/$1,/g;
$l = reverse $l;
0651名無しさん@お腹いっぱい。
02/02/08 23:19ID:???0652名無しさん@お腹いっぱい。
02/02/08 23:30ID:???多分 mod_perl + Apache::DBI じゃないと無理なんでないかな。
0653名無しさん@お腹いっぱい。
02/02/09 00:46ID:JKGEpIyz$money='500000'
$money =~ s/500000/500,000/;
0654644
02/02/09 00:47ID:XYP1PySzやっぱりそうなりますか
ひとつだけperlプロセスを常駐させてそこからConnection受け渡し、とか
いろいろ考えてたんですけど・・・
Hashの参照と中身(データ)を丸ごとプロセス間でやり取りってのは・・・
できないですよねぇ
0655名無しさん@お腹いっぱい。
02/02/09 00:54ID:R07+bRc7ブラウザの種類(携帯は機種も)、IP、SSID、日付、訪問回数等を
取得できる方法ありませんか?
今は
# 適当なファイルをopenして
open(LOG,'>>logfile');
# 情報を書き込む
print LOG "$ENV{'DATE'} $ENV{'HTTP_USER_AGENT'} $ENV{'REMOTE_HOST'} $ENV{'REMOTE_ADDR'}\n";
# ファイルをクローズ
close(LOG);
ってやってるんですが、1回のアクセスで同じ情報が数回残るんです。
ちなみに掲示板のCGIの上のほうにつけてるんですが。
0656名無しさん@お腹いっぱい。
02/02/09 01:06ID:???表示 1回。
書き込み 1回。
リロード 1回。
同一IPアドレスからは連続して情報を書き込まないようにすれば。
0657名無しさん@お腹いっぱい。
02/02/09 01:12ID:R07+bRc7そのやりかたがわからないんです。
日付とSSIDの取得もわかりません。
もしわかるのであれば簡単なソースでものせてもらえませんか?
0658名無しさん@お腹いっぱい。
02/02/09 01:17ID:???自分が取りたい所で取れば良し
0659名無しさん@お腹いっぱい。
02/02/09 01:37ID:R07+bRc7他の人が教えてくれるのを待ってます。
0660名無しさん@お腹いっぱい。
02/02/09 01:39ID:???>>656な俺も既に回答は放棄してるよ。
もう少し具体的に書かないと。
0661名無しさん@お腹いっぱい。
02/02/09 01:57ID:???自分で書いて何処でどう動いてるか分からんのか?
改造だったら改造スレにソース上げれば教えてくれるかもな
0662652
02/02/09 02:26ID:???Storable, FreezeThaw, Data::Dumperなどで$dbhをプーリングする
・・・くらいしか思いつかなかったヨ。
> Hashの参照と中身(データ)を丸ごとプロセス間でやり取り
これをやってくれるのが上記のモジュール群だと思うのだが、どうか。
0664名無しさん@お腹いっぱい。
02/02/09 13:58ID:ZyuqXnPGrequire "jcode.pl";
&jcode'tr(\$string,'0-9A-Za-z','0-9A-Za-z');
これってなにか間違ってます?いろいろ調べたんですが、
頭の&無かったり'が::だったり、jcodeのヘッダでは最初の引数が*line
で*ってなんだ??とか全然わからんです。お願いします。
0665名無しさん@お腹いっぱい。
02/02/09 15:53ID:???いろいろ調べた?
Googleで"jcode.pl"を検索すると出る最初のページすら読んでないのに?
jcode.plの私的な解説書 <http://www.mikeneko.ne.jp/~lab/kcode/jcode.html>
そこにこう書いてあるぞ。
> 「-」による範囲指定は、$line の文字コード及びスクリプト自身が、JIS か EUC でなければなりません。
0666664
02/02/09 16:13ID:ZyuqXnPG0667名無しさん@お腹いっぱい。
02/02/09 16:31ID:???別段間違えて無い筈だぞ
一応最新Ver落としてやり直してみれ
まさかターミナルがSjisとかじゃ無いよな?
0668664
02/02/09 16:33ID:ZyuqXnPG何も変換されません。
ちなみにターミナルってなんですか?
0669名無しさん@お腹いっぱい。
02/02/09 16:44ID:???0670名無しさん@お腹いっぱい。
02/02/09 16:47ID:???ターミナルはターミナルだ、訳せ :)
&は関数のプレフィックスな、まあ有っても無くてもいい
'と::は意味が同じだが、まあこれもなるべく::を使え
*と\はちょっと違うんだけど、まあ似たようなもんだから気にするな
0671664
02/02/09 16:47ID:ZyuqXnPGjcode.plが壊れていたようでした。
正常なものに更新したら無事変換されました。
0672名無しさん@お腹いっぱい。
02/02/09 16:52ID:???投げやりな回答が分かり易くてGood (・∀・)b
0673名無しさん@お腹いっぱい。
02/02/09 17:44ID:???Perl5から非推奨だっけ?'
0674名無しさん@お腹いっぱい。
02/02/09 17:57ID:???んだ。
Perl5からはパッケージデリミタは :: になっている。
' は後方互換の意味しかない。
型グロブとリファレンスについては、
速度の点や、スレッド有効での問題があるから、
素直にリファレンス使ったほうが良い。
0675名無しさん@お腹いっぱい。
02/02/10 03:48ID:TjXtgJNe208_978_4_37 この時、
208を取り出すにはどしたらいい? substrを使うかな?もっと簡単な方法あるよね?
0676名無しさん@お腹いっぱい。
02/02/10 03:50ID:???0677名無しさん@お腹いっぱい。
02/02/10 03:52ID:???$str = "208_978_4_37";
$str =~/^(\d+)/$1/;
2.
$str = "208_978_4_37";
$str = (split /_/, $str)[0];
substrが一番簡単です。
0678名無しさん@お腹いっぱい。
02/02/10 03:55ID:TjXtgJNe>676 >677 ありがとうございました。
0679名無しさん@お腹いっぱい。
02/02/10 11:23ID:jVpiRjZnlocal(*data, @cokkie);
などを見かけますがこれの*dataの「*」の意味が理解出来ません。
どなたかご教授お願いします。
0680名無しさん@お腹いっぱい。
02/02/10 11:30ID:???参照。
ポインタのようなもの。
0681名無しさん@お腹いっぱい。
02/02/10 11:38ID:jVpiRjZnお答えありがとうございます。
参照という事はつまり、上記の
local(*data, @cokkie);
では、$data @data %dataが全て局所化されるという意味でしょうか?
ポインタはCの経験が無いもので、ちょっと理解出来ないです。。
0682名無しさん@お腹いっぱい。
02/02/10 14:24ID:???意味は>>681であってる。
0683名無しさん@お腹いっぱい。
02/02/10 17:16ID:LAh5h/XvWindowsで関連付けしたアプリで自動的に開きたいんですが、
どうすればいいんでしょうか?
hoge.txt を書き出したとして、
それを関連付け実行(ダブルクリック)した動作が実現すればいいんですが…。
(エディタでhoge.txtが開ければOK)
0684名無しさん@お腹いっぱい。
02/02/10 17:19ID:???0685683
02/02/10 17:26ID:LAh5h/Xvありがとうございます。でも、
「コマンドまたはファイル名が違います.」
と出てしまいます…。
0686名無しさん@お腹いっぱい。
02/02/10 17:29ID:SYLMgyWMhoge.txtのパス通ってる?
同じフォルダに置いてやってみ?
0687名無しさん@お腹いっぱい。
02/02/10 17:30ID:???systemの実装がshellexecute()なら動くけどね。
0688名無しさん@お腹いっぱい。
02/02/10 17:32ID:???0689686
02/02/10 17:33ID:SYLMgyWM漏れが出来たから、、偉そうな事言ってごめそ
0690683
02/02/10 17:36ID:???パスは通ってました。 >>686
DOS窓から関連付け実行する時も start〜 で行けますね。勉強になりました。
ありがつおございました。
#と言うか、こんな時間に即レスが帰ってきたことにビクーリ
0691681
02/02/10 18:08ID:wM0dEuj6*data
↑は型グロブいうんですね。知らなかったです。で検索して見たところ
Knave Web講座 というすごくわかりやすい解説がしてあるページにたどり
付きまして、なんとか理解することが出来ました。
>>680さんともどもありがとうございました。
0692名無しさん@お腹いっぱい。
02/02/10 18:14ID:???Set-Cookie: ******
は必ず
Content-type: *******
の1行下に記述しなければいけないのですよね?下の例であってますでしょうか?
例:
Content-type: text/html\n
Set-Cookie: web=$hoge\n
HTML記述〜
0693名無しさん@お腹いっぱい。
02/02/10 18:17ID:???逆。
Set-Cookie: web=$hoge\n
Content-type: text/html\n
後、有効期限書かないとすぐ消えるよ。
0694名無しさん@お腹いっぱい。
02/02/10 20:07ID:???たとえば
1,3,4,5,6,7,8,9
とかあったら2を返すようにしたいんですけど。
0695名無しさん@お腹いっぱい。
02/02/10 20:10ID:???階差数列を利用すれば?
$a[$i + 1] - $a[$i] = 1
となる。この条件に合わなければブビー!
0696名無しさん@お腹いっぱい。
02/02/10 20:14ID:SYLMgyWM%char = map { $_, 1 } @char;
for(1 .. 9) { print if not exists $char{$_} }
イマイチ?
0697名無しさん@お腹いっぱい。
02/02/10 20:30ID:???0698デビデビ
02/02/10 20:38ID:TkcMar2jX サーバが走ってないマシンで、動かす方法はあります?
0699名無しさん@お腹いっぱい。
02/02/10 21:04ID:???OH!?だから動かなかったのか。。?
どうもありがとうございました。
広告メールの配信企業は他にも多数あります。しかし登録したはいいがメールが来ない、懸賞は自作自演、
果てには個人情報収集目的のサービス実態なし、なんてサイトまであります。
その点このサイトは月10通〜20通の配信実績がありますし、何より住所・電話番号等不要なので匿名性が高く、安心。
それにちゃんと送金してくれます。私も既に3回送金してもらいました。
ポイントが加速度的に増えるサービス、いくつかありますので仮登録したらCheckしてみて下さい。
※注意※
必ず 本登録 して下さい。仮登録のままではポイントが加算されません。
本登録するには アンケート に答えてから 本登録スタートボタン (メールでURL配信される)を押します。
興味のある項目を答えるアンケートでは全てチェックを入れるのが吉。その分配信メールが増えてポイント増。
本登録スタートボタンのURLが載ったメールが来るまで数日〜数週間かかりますが、待っただけの価値は十二分にあります。
時間がかかるケースが多いので早めに仮登録を済ましておくことをお勧めします。
その後の本登録維持も忘れないようご注意下さい。(何かと面倒なのも広告出稿者を多く集める為の策のようです)
Ariga10.com
http://www.ariga10.com/?id=207008
こちらから登録できます。記入欄は少ないので時間はほとんどかかりません。
0701名無しさん@お腹いっぱい。
02/02/10 21:44ID:???マルチですか・・・。
0702名無しさん@お腹いっぱい。
02/02/10 21:53ID:???あれだろ。
スレ立てて指摘されたんで質問直しなんだろ。
マターリマターリ
0703名無しさん@お腹いっぱい。
02/02/10 22:55ID:???>>697 を参考にして
grep { ! { map { $_ => 1 } @hoge }->{$_} } ((sort @hoge)[0]..(sort @hoge)[$#hoge]);
てな感じか?
0705名無しさん@お腹いっぱい。
02/02/11 00:20ID:rEaHJsWIprint grep { ! { map { $_ => 1 } @hoge }->{$_} } ($sort->[0]..$sort->[$#hoge]);
0706名無しさん@お腹いっぱい。
02/02/11 00:21ID:rEaHJsWIgrep { ! { map { $_ => 1 } @hoge }->{$_} } ((sort { $a <=> $b } @hoge)[0]..(sort { $a <=> $b } @hoge)[$#hoge]);
0707名無しさん@お腹いっぱい。
02/02/11 00:32ID:???何番目の要素なのかを取得する方法って有る?
いつもブロックの中で$i++とかして参照しているけど、
いまいちスマートで無い気が。
0708名無しさん@お腹いっぱい。
02/02/11 01:01ID:???それが一番スマート。
0709名無しさん@お腹いっぱい。
02/02/11 02:54ID:fuw0wehn0710名無しさん@お腹いっぱい。
02/02/11 13:12ID:???Perlと関係ねーだろ。
CGI質問スレのほうがまだまし。
0711名無しさん@お腹いっぱい。
02/02/11 20:56ID:???ふ〜む、やっぱりこれしか無いか。ありがd
0712名無しさん@お腹いっぱい。
02/02/11 21:59ID:???for (my $i = 0; $i <= $#hoge; ++$i) {
...
}
という手も有り。
0713名無しさん@お腹いっぱい。
02/02/11 22:10ID:???配列へ入れずにファイルをwhileでまわすのとどっちが効率いいんでしょう?
0714名無しさん@お腹いっぱい。
02/02/11 22:52ID:???効率というのはメモリ効率なのか処理効率なのか分からないが
この場合は(単語1つ1つが膨大なサイズでなければ)
前者の方がメモリを喰らうけど速いなり。
もっとも、1・2回の繰り返しじゃ体感できるような差はないと思われ。
0715名無しさん@お腹いっぱい。
02/02/11 23:04ID:???レスサンクスです。参考になりました。
実はチャットの名前の色のリストなんですね。たいした量じゃないです。(笑
0716名無しさん@お腹いっぱい。
02/02/11 23:05ID:???for(0..$bar){
@data = split(/\0/, $all_data[$_]);
unless(defined($FOO{$data[0]})){
print"処理:新データとして書き込み";
}else{
print"処理:旧データと一部差し替え";
}
}
print"最終処理"
dbmclose(%FOO);
ソケットで得た複数のデータ(名前、所属、個人番号、等)を、
$FOO{個人番号}に収めて管理するプログラムを作っています。
データは正しく受け取れて、一通りの動きはしてくれるのですが、
なぜか最終処理の部分まで到達してくれません。
不思議な事に、ローカル環境(Win2000+Apache、Win98+Apache)では最終処理まで到達します。
解決方法をご存知でしたらご教授いただければ幸いです。
0717名無しさん@お腹いっぱい。
02/02/11 23:14ID:???print"最終処理"
; が最後に抜けているとか?
\nないからバッファリングのデータ(最終処理)が吐き出されないとか?
0718名無しさん@お腹いっぱい。
02/02/11 23:16ID:???野暮だが・・・
Perl5ならdbmopenじゃなくtie使ったほうが良いよ。
0719名無しさん@お腹いっぱい。
02/02/11 23:17ID:???Socket扱うならバッファリングは行わないのが吉。
$| = 1;
0720名無しさん@お腹いっぱい。
02/02/11 23:18ID:rEaHJsWI値にアクセスする時 $hoge[$i] になって遅くなる。
とラクダに書いてある。w
continue { $i++ }
とかはどうかな。。あんま変わらんか。
0721707
02/02/11 23:53ID:???ラクダ見たけど、遅くなるなんてどの辺に書いて有るんでせうか。
>>712
そういうことで、改めてラクダ読んだら、第2章のforeachの説明
のところで、明確にforeach中で、要素の番号を知る方法は無い
と書かれていました。で、隣り合った要素を比較するなどの場合
は、>>712の方法が一つの解として紹介されており、ラクダを良く
読まねばと思う、今日この頃。
0722720
02/02/12 00:14ID:ed1xHjmGたぶん同じページやでw
ラクダ第2版日本語のp.114、
> また、こちらのほうが高速なのは〜〜〜アクセスできるからだ。
って奴。
そういうことはちゃんと読んでから言えw
0723720
02/02/12 00:15ID:???0725たま
02/02/12 00:37ID:/NrbiZO42. http://digit.que.ne.jp/work/mtWiki/yukiwiki.cgi/yukiwiki.cgi?mycmd=read&mypage=%5B%5BCGI%3A%3ALite%5D%5DのCGI LITEと、cgi-lib.plを利用した
3. READShort と出た。
CGILITEを使って画像のアップと、コメントの送信をするにはどうしたらよろしいかお教えください
0726名無しさん@お腹いっぱい。
02/02/12 00:41ID:???perldoc CGI_Lite
%Link = ('2'->'www.google.com', '1'->'www.yahoo.com');
while(($Name,$Addr) = each %Link){
print qq( [ <A href="$Addr">$Name</A> ]);
}
で出力が同じなのはなぜスか?
リストのほうで並び替えても出力(並び方)が変わらんのだが・・・
いい書き方あれば教えてください。
0728名無しさん@お腹いっぱい。
02/02/12 01:41ID:???って前もどっかに書かれてたな、、
sort key %Link にするか、どっかのモジュール(名前忘れ)使うかどっちかがいいと思われ。
0729727
02/02/12 02:01ID:???フム,sort key %Link のほうを調べてみます。
ありがとう!
0730名無しさん@お腹いっぱい。
02/02/12 02:05ID:???'1_藍上尾', '2_柿苦毛子'にしてwhileでまわして,表示する直前に'1_'を消すとかか。
うーむ,めんどいな。
0731名無しさん@お腹いっぱい。
02/02/12 02:06ID:???-> ではなく =>
> どっかのモジュール
Tie::IxHash
0732agege
02/02/12 02:49ID:???key ⇒ keys
1_, 2_ などのキーをソートしたいなら、sort {$a <=> $b} %Link だけど、
必ず数値+_形式のキーが来ると決まっているのなら、末尾の_を取り除いて
普通の配列にしてもいいネー。
0733名無しさん@お腹いっぱい。
02/02/12 03:18ID:???ちなみに
>>732
sort { $a <=> $b } keys %Link
0734名無しさん@お腹いっぱい。
02/02/12 03:23ID:???0735名無しさん@お腹いっぱい。
02/02/12 04:49ID:???CGItempXXXXというファイルが残るって書いたものですが、
解決いたしました。
0736名無しさん@お腹いっぱい。
02/02/12 05:49ID:PUJwyJrlよかったねー。
なんかいい方法あったの?
0737名無しさん@お腹いっぱい。
02/02/12 06:37ID:???>どっかのスレッドに
書き逃げでもしたの?
>解決いたしました。
解決方法も書き込めば、ログ読んだ他の人も助かるかもよ。
0738名無しさん@お腹いっぱい。
02/02/12 12:02ID:???そのままだとひとつのサイトに対して
「ハッシュのkey」と「ハッシュのvalue」の
2つづつしか要素を持てないから
いっそのこと
%site = (id => 1, url => 'www.google.com', name => 'Google', comment => '便利!');
みたいな形式にしちゃって
push(@list, \%site);
していってそれをソートして表示してみるっていうのはどう?
foreach $this (sort {$a->{name} cmp $b->{name}} @list) {
print $this->{id}.'<a href="'.$this->{url}.'">'.$this->{name}.'</a>'.$this->{comment};
}
これならひとつのサイトに対していくらでも要素を持てるし、
ソートもID順とかURL順とかいろいろできるからいっそう便利かなーと。
0739print<<"EOF";
02/02/12 15:27ID:sXZ1u4GK0740名無しさん@お腹いっぱい。
02/02/12 16:23ID:???何故?普通にバリバリ使いまくってますが。
0741名無しさん@お腹いっぱい。
02/02/12 16:25ID:???多分ヒアドキュメントを書くときソース中でインデントできない
とかいうやつですか?
先頭のインデントを出力する前に正規化で削除すれば綺麗になる
し、ソース中の見栄えもよくなるからよろしいかと思われ
てかまったく関係なかったらゴメソ
0742名無しさん@お腹いっぱい。
02/02/12 16:59ID:???自分の場合はキレイにしないでそのまま(\t付きのまま)出力してるけど、、
クックブックの24ページにのってるね。<正規
0743print<<"EOF";
02/02/12 21:39ID:???レスありがとうです。
そうです、>>741さんの言うとおりインデント出来ないのが…。
と思ってたら、やっぱり回避策があったんですね。
頑張って自己満足なソースの美化に尽くします(笑)
あ、そうだ。ベンチマークでもとってみるか。ヒアドキュメントの。意味ないけど。
0744名無しさん@お腹いっぱい。
02/02/12 22:10ID:???>あ、そうだ。ベンチマークでもとってみるか。ヒアドキュメントの。意味ないけど。
そういう心がけが上達の道だと思ったり。何となくだけど。
料理本以外にもEffective Perlは個人的にはお薦めなんでご覧あれ。
0745名無しさん@お腹いっぱい。
02/02/13 07:36ID:u18sBL1T数時間検索したけど見付けられず…。
どなたか解説、お願い出来ないでしょうか。
0746名無しさん@お腹いっぱい。
02/02/13 08:08ID:???...
_HERE_
0747745
02/02/13 09:47ID:???/igsoe位しか修飾子つかったことが無かったのですが、
/m 文字列を複数行として扱う、はこう使うものなんですね。
勉強になります。ありがとうございました。
0748名無しさん@お腹いっぱい。
02/02/13 15:02ID:???変数を展開できないとか書いてあって、鬱。
こういうもんなんすかね、一応プロフェッショナルブックとか
名うってあったんですが(藁
0749名無しさん@お腹いっぱい。
02/02/13 15:25ID:???酷い本だな。
0750名無しさん@お腹いっぱい。
02/02/13 16:02ID:???HTMLファイル内の記述で、.cgiファイルを起動させたいのですが、
どうしたらいいですか?<img src=xxx.cgi> だと、HTMLに画像跡がでるし。
お願いします。
0751名無しさん@お腹いっぱい。
02/02/13 16:15ID:???0752名無しさん@お腹いっぱい。
02/02/13 16:22ID:???ありがとうございます。消えたました。
imgタグで起動してるか心配だけど試してみます。
0753名無しさん@お腹いっぱい。
02/02/13 18:11ID:KS70lsn0で,$temp = 1889 になったんだけどなんで?
ActivePerl 5.6.1.630
0754名無しさん@お腹いっぱい。
02/02/13 19:12ID:???18.9を2進法に変換してみると分かると思われ。
0755名無しさん@お腹いっぱい。
02/02/13 20:38ID:???ま、可能な限り不自然にならないように、いろいろ苦労してるんですよ。
0756名無しさん@お腹いっぱい。
02/02/13 21:34ID:xqc5dBTwやっぱり,分からん
もう,泣きそう
0757名無しさん@お腹いっぱい。
02/02/13 22:46ID:???>>755の言っている事をもっと穿って考えよう。(w
ホントだよ?
0758名無しさん@お腹いっぱい。
02/02/13 22:49ID:???簡単に言うと「Perlは人と同じように数値を理解しているわけではない」ってこと。
これは仕様なんで注意して扱うしかない。
どうしても高精度な計算がしたいならモジュールを使う事。
#!/usr/bin/perl
use Math::BigFloat;
my $num = new Math::BIgFloat('18.9');
print int($num * 100);
__END__
0759名無しさん@お腹いっぱい。
02/02/13 22:51ID:???<my $num = new Math::BIgFloat('18.9');
>my $num = new Math::BigFloat('18.9');
0760名無しさん@お腹いっぱい。
02/02/13 22:54ID:???「難しく」言うと、どのような理屈になるのでしょうか?
できるだけ付いてこられるように頑張ります。
0761名無しさん@お腹いっぱい。
02/02/13 23:10ID:???とりあえず、Perlが数値を表現するのに確保しているメモリの量では、
18.9を正確に表現することは出来ない、ってことです。
これ以上詳しく言うと長くなりすぎるんで「浮動小数点 内部表現」とか「浮動小数点 フォーマット」
とかで検索すると多分ずらずら出ます。
(でも大抵はその仕様について書かれてるだけなんでイメージしづらいんだよな)
0762753
02/02/13 23:23ID:???精度(?)云々というのはなんとなく頭の片隅にはあるんだけど
int( 18.9 * 10 )=189
int( 18.9 * 100 )=1889
int( 18.9 * 1000 )=18900
なんで,*100 の時だけ?というのが腑に落ちないんだな,これが
0763名無しさん@お腹いっぱい。
02/02/13 23:27ID:???で、浮動小数点については調べてきたのか?
0764名無しさん@お腹いっぱい。
02/02/13 23:30ID:???そこはそれ>>755ということ。
具体的に何やってるのかは知らんが、善処した結果なんだろうね。
まぁ俺も妙だとは思う。int()を外すと1890になるのも不可解だし。
0765名無しさん@お腹いっぱい。
02/02/13 23:31ID:???0766名無しさん@お腹いっぱい。
02/02/13 23:31ID:???構造知らずして結果の食い違いは理解できないぞ。
0767名無しさん@お腹いっぱい。
02/02/13 23:32ID:???>>765ということで>>766も忘れてね。
0768名無しさん@お腹いっぱい。
02/02/14 02:16ID:???0769名無しさん@お腹いっぱい。
02/02/14 02:46ID:???うろ覚えだけど,
2進数では
整数部分は 1, 2, 4, 8, 16, 32, 64...と位が上がっていって
小数部分は 1/2, 1/4, 1/8, 1/16, 1/32...と位取りされている
んじゃなかったかな。
0770名無しさん@お腹いっぱい。
02/02/14 08:31ID:???調べろ。と言ったはずだが?
勉強しないプログラマに明日はないぞ。
>>769
正解。
0771名無しさん@お腹いっぱい。
02/02/14 12:48ID:???Perlのprint()関数は、C言語のprintf()、
またはそれに準ずるフォーマットルーチンを使って実装されていて、
不動小数点数はある桁数(これは自由に設定可能である)で繰り上がる仕様になっている。
この現象は "print 2/3" 等とした時にも見られる。
ところが、int()というのは小数点以下を黙って全て切り捨てる。
これにより、答えが整数であるべき時でも"print int $n"と"print $n"に差が生じる事があるのだ。
0772名無しさん@お腹いっぱい。
02/02/14 14:10ID:???53bit同士の計算で, 結果の54bit目が1だと切り上げされるからじゃない?
18.9 ≒
10010.111001100110011001100110011001100110011001100110
10 = 1010
100 = 1100100
1000 = 1111101000
10000 = 10011100010000
100000 = 11000011010100000
18.9*10 ≒
10111100.1111111111111111111111111111111111111111111111
->10111101
18.9*100≒
11101100001.1111111111111111111111111111111111111111110
18.9*1000≒
100100111010011.111111111111111111111111111111111111111
->100100111010100
18.9*10000≒
101110001001000111.111111111111111111111111111111111111
->101110001001001000
18.9*100000≒
111001101011011001111.111111111111111111111111111111110
0773名無しさん@お腹いっぱい。
02/02/14 14:21ID:+0g/R+F6同じクラスのインスタンスを複数作った場合、インスタンス間でファイルハンドルを別々に持つようにできますでしょうか?
$file1=new FileClass('read.txt');
$file2=new FileClass('write.txt');
$string=$file1->getLine(1);
$file2->insert($string);
$file1->close();
$file2->close();
みたいな。
ファイルハンドルに参照とか無名配列みたいのがあれば自分で解決できそうだけど聞いたこと無いので。
0774名無しさん@お腹いっぱい。
02/02/14 14:23ID:X8oQt8gzどうすればいいのでしょう・・・。
(結果として、以下のようになる)
<h1>ああ</h1>
<h2>いい</h2>
<h3>うう</h3>
<h2>いい</h2>
0775名無しさん@お腹いっぱい。
02/02/14 14:34ID:0AhamLLI0776774
02/02/14 16:11ID:peM7yPQ9でも、
$filename = "test.html";
open(IN, $filename) || die "$filename: $!";
open(OUT,">result.html") || die "result.html: $!";
while(<IN>){
chomp:
print OUT $1 if m|(<([hH][1-6])[^>]*>[^<]*</\1>)|o;
}
close(IN);
close(OUT);
で、結果が0k。。。。なぜ?
test.htmlの中身は、以下の通り
aaaa<H2>えいちに</H2>bbb
<h1>えいちわん</h1>
0777774
02/02/14 16:18ID:peM7yPQ90778名無しさん@お腹いっぱい。
02/02/14 16:21ID:???使用法なんてどうでも良いから実装を見せろよ。
多分 "open HANDLE" とかしてるんだろうけど。
とりあえず標準ライブラリの Symbol と IO::Handle および IO::File のソースを読めば幸せになれるかもな。
関係ないが、クラスの名前に"Class"をつけるのはアホらしいと思うのは俺だけか。
0779名無しさん@お腹いっぱい。
02/02/14 16:35ID:???としてみたらいけた。()のネストってこうなるのか。
0780773
02/02/14 17:07ID:???非常にありがd。ついでにスマソ。
で、ご指摘どおりsymbolを読んで、とりあえず幸せになれた。
ファイルハンドルにスカラー変数が使えるとは。
クラスの名前にClassなんて、いつもは付けてないけど今回は念のため。
0781名無しさん@お腹いっぱい。
02/02/14 22:58ID:oPnLkVh5掲示板で書きこみ者の任意の回数だけ要素(例えばアイコンとか)を
繰り返し表示させるスクリプトを組み多淫です。
うんこのアイコンを選んで「10」とエリアに入れてpostしたら
うんこアイコンが10個出る、見たいな感じで。
この繰り返させるスクリプトの書き方がわからんのです
どなたかわかる方いたら教えてください。
0782名無しさん@お腹いっぱい。
02/02/14 23:33ID:7pMXJhas0783名無しさん@お腹いっぱい。
02/02/14 23:38ID:???0784名無しさん@お腹いっぱい。
02/02/14 23:40ID:???を変換しようとするとき
どうすれ売淫ですか
になって、よく困るな。そういえば。
こういうことやるから、また売淫ででるな。
0785名無しさん@お腹いっぱい。
02/02/14 23:44ID:???アイコン<select name="icon">
回数<input name="kaisu">
-------------------
for (1..$in{'kaisu'}) {
$icon.="<img src=$in{'icon'}>";
}
-------------------
0786名無しさん@お腹いっぱい。
02/02/14 23:56ID:???こんな基本的なコードでも人のコードは勉強になる。
なるほど,すごくシンプルだ。おれなら"i="云々書いてるとこだった。
0787名無しさん@お腹いっぱい。
02/02/15 00:04ID:???0788781
02/02/15 00:55ID:LCJ4YCpt>>787
THANXです!
今スクリプトをこねくり回してますがうまいこといかないです。
成功したら完成形を報告します。うー…
0789名無しさん@お腹いっぱい。
02/02/15 06:20ID:WCBRMEef0790名無しさん@お腹いっぱい。
02/02/15 06:20ID:oL67ZYlw0791名無しさん@お腹いっぱい。
02/02/15 06:30ID:???汚染チェックと上限チェックを忘れないようにな。頑張れ。
0792賛成の反対の反対ナノだ!
02/02/15 06:30ID:???>
$in{'icon'}の値が「xxx.gif" onLoad="JavaScript:ウケケ」に書き替え
られて送信されてきたらどうする?チェックはキッチリやっておこうネ!
そうしないとセキュリティホールになったりして。
0793名無しさん@お腹いっぱい。
02/02/15 13:10ID:???とほほみたいなこと言うなよ・・・
0794♀
02/02/15 16:07ID:???したらばの「管理人メニュー」に意味不明のものがありました。
FAQにも書いてありませんでしたし、
サポート掲示板に書いても反応がありませんのでこちらでお願いします。
>Getによる投稿を認める
Getってなんですか?
0795名無しさん@お腹いっぱい。
02/02/15 16:19ID:???まじで大切だと思うけど。
0796名無しさん@お腹いっぱい。
02/02/15 16:47ID:???CGI側:データ受け取りに環境変数を使うか標準入力を使うか。
ブラウザ/サーバ側:HTTP0.9でも動くか否か。
0797名無しさん@お腹いっぱい。
02/02/15 16:59ID:???だからなGETだと,「<A href="http://www.aaaa.com/boke.cgi?name=荒らしだよ〜ん&naiyou=死ね死ね死ね">僕のホームページはここです!</A>」なんてことができるってこと。
そのかわり「boke.cgi?Logview」とかアドレスで直接モードへの移行はできなくなる。
まぁPOSTにしとけ。
0798名無しさん@お腹いっぱい。
02/02/15 17:20ID:???open(FILE,'>text.txt')
print FILE 'abcd';
close FILE;
の代わりに
$file=1;
open($file,'text.txt');
print $file 'abcd';
close($file);
とやるとprintで死ぬのですが。<>でくくってもだめだったです。
0799名無しさん@お腹いっぱい。
02/02/15 17:22ID:???セキュリティホールに気を配るのは基本だと思われ
0800名無しさん@お腹いっぱい。
02/02/15 18:04ID:???ちょっと気になったもので。
0801名無しさん@お腹いっぱい。
02/02/15 18:12ID:???@a[1]は有効か?
0802名無しさん@お腹いっぱい。
02/02/15 18:13ID:???「1」はダメだろ。
0803名無しさん@お腹いっぱい。
02/02/15 18:17ID:???読む時もロックしといたほうがいい?
0804名無しさん@お腹いっぱい。
02/02/15 18:17ID:???読み込んでる最中にロックされると困りませんか?
0805798
02/02/15 18:19ID:???中身のないスカラーはFH代わりに使えないけど、なにか代入したら使えましたよ。
もっとも、私は標準ライブラリsymbolの
$sym = gensym;
open($sym, "filename");
のgensymの意味がわからないのでテケトーにやってみた、というだけの話ですけど…。
まぁ、モジュール化とかの理由で通常のファイルハンドルが使えない状況なので無理にスカラーをば。
で、1じゃだめですか?
0806名無しさん@お腹いっぱい。
02/02/15 19:17ID:???なるほど。つまりやめとけって意味ですか?
レスの意味はよく考えたんだがちょっと想像できない・・・。
人が読み込んでるときに自分が読み込めないのは無駄で遅くなる原因になるっぽいけど・・・
0807名無しさん@お腹いっぱい。
02/02/15 19:33ID:u5RDXGaqopen($file,'text.txt');
print $file 'abcd';
close($file);
これは、やっていることは以下といっしょ。
open(1,'text.txt');
print 1 'abcd';
close(1);
よって、君がいう「通常のファイルハンドル」となんら代わり無い。
そんなことより、open($file ,'> text.txt') でしたという落ちはなしにしてくれ。
0808名無しさん@お腹いっぱい。
02/02/15 20:14ID:???@hoge[] はスライス、($hoge[])はスカラーが一個のリスト。
>>803
読むときもファイルロックすべき。
読むときにロックしないで、読んでる最中にいきなりロックかけられたら困るでしょ?
>>804の答えはそういうこと。
> 人が読み込んでるときに自分が読み込めない
いいえ、これはLOCK_EXでなくLOCK_SHを使えばいいだけの事。
この辺り、過去ログでJAPUさんが詳しく述べているとこあり。
過去ログ閲覧をお勧めする。
0809名無しさん@お腹いっぱい。
02/02/15 20:34ID:???2ちゃんねるの過去ログなんて、これほどあさりにくいものはないっすよ
横やり失敬しました(笑)
0811名無しさん@お腹いっぱい。
02/02/15 23:19ID:???あ る に 決 ま っ て る だ ろ !
0812名無しさん@お腹いっぱい。
02/02/16 01:38ID:???2_45_5_74
4_36_3_53
8_83_2_27
こんな感じのデータがある時、12_45_5_74 の
1番目の12と3番目の5を足してその値を大きい順に
並ばせるにはどうしたらいいでしょうか?
データを開いて、whileで各、足していって、
データ保存
保存したデータを大きい順に並べていって、
データ保存
こんな感じを感じを考えているのですが、
一つにまとめる方法とかありますか?
おねがいします。
0813名無しさん@お腹いっぱい。
02/02/16 01:41ID:???数値の大きさ比べるだけなら実装も楽でしょう。
0814名無しさん@お腹いっぱい。
02/02/16 01:42ID:???0815名無しさん@お腹いっぱい。
02/02/16 01:44ID:???計算後のデータを記憶する際に大きい順になるように記憶させれば。
0816断罪!断罪!また断罪!!
02/02/16 01:54ID:???open(READ, $readFile);
while(<READ>){
if ( /^(\d+)_\d+_(\d+)/ ){
$sort{$1+$2}++;
}
}
close(READ);
open(WRITE, ">$writeFile");
for ( reverse sort keys %sort ){
print WRITE "$_\n";
}
close(WRITE);
0817名無しさん@お腹いっぱい。
02/02/16 01:57ID:???いちいちソートするのって効率悪くないですか?
0818断罪!断罪!また断罪!!
02/02/16 02:14ID:???>
ソートだけにそーっとすればOK (ヮ
0819名無しさん@お腹いっぱい。
02/02/16 02:21ID:smdGl30Bとなっているのをs//やtr//などを使って
$moji = "a\'a\'a\'a\'";
という結果にしたいのですが、どうしたらいいでしょうか?
0820断罪!断罪!また断罪!!
02/02/16 02:22ID:???>
$moji=~ s/'/\\\'/g;
0821賛成の反対の反対ナノだ!
02/02/16 02:25ID:???0822名無しさん@お腹いっぱい。
02/02/16 02:27ID:smdGl30Bそれはやってみました。以下のエラーがでます。
syntax error at test.cgi line 6, near "$moji~"
Execution of test.cgi aborted due to compilation errors.
0823名無しさん@お腹いっぱい。
02/02/16 02:34ID:???=~じゃなくて ~= にしてない?
0824賛成の反対の反対ナノだ!
02/02/16 02:35ID:???>
$mojiに 漢字コードが入っているのでは?
0825名無しさん@お腹いっぱい。
02/02/16 02:37ID:smdGl30Bありがとう!!
自分のぼんくらミスに気付きませんでした。(感謝)
0826名無しさん@お腹いっぱい。
02/02/16 02:39ID:???それじゃ予め \' となっているものも置き換わので、後読みするのが吉。
s/(?<!\\)'/\\'/g;
0827名無しさん@お腹いっぱい。
02/02/16 02:54ID:smdGl30Bありがとう。(感謝)
0828名無しさん@お腹いっぱい。
02/02/16 03:26ID:hJTYeQVWuse IO::File;
my $fh = new IO::File "text.txt", "w";
die "なんか開けませんでした:$!" unless $fh;
print $fh "abcd";
$fh->close;
0829名無しさん@お腹いっぱい。
02/02/16 04:12ID:???IO::Fileみたく型グロブを使うとか。
open HANDLE, 'hoge.txt';
$fh = *HANDLE{FILEHANDLE}; #$fh = \*HANDLE;
print $fh 'HOGE';
0830名無しさん@お腹いっぱい。
02/02/16 04:28ID:???0831名無しさん@お腹いっぱい。
02/02/16 05:38ID:???>808
なるほど分かりました。そうします。
0832名無しさん@お腹いっぱい。
02/02/17 03:46ID:???スクリプトを分割するってのは意味あるんでしょうか?
0833名無しさん@お腹いっぱい。
02/02/17 12:39ID:???例えば1〜10を足すとき、
for($i=1;$i != 10;$i++)
{
$sum += $i;
}
と、
$sum (10 * 9) / 2;
の2種類がある。
まぁ、こんなそのものズバリの公式がある場合は少ない。
基本的にはその処理をいかに少ない命令で実現するか。
sprintfとかは重いらしいwからそう言うのも考慮して。
ループの外でもできる処理はループの外に出すとか。
ループ内でうまくnext;last;を使うとか。
なお、分割したところでコード量は減らない。
むしろ各種オーバーヘッドがかかったり。
なぜ分けるかと言えばその方がわかりやすいから。
関連の機能をまとめてモジュール化しているわけです。
0834名無しさん@お腹いっぱい。
02/02/17 12:42ID:jcHWzcYr誰のソースは勉強になる、誰のはやめとけっていうのは
やっぱりありますか??
全然perl初心者なので、そのへんの区別がつきにくいです、、
0835名無しさん@お腹いっぱい。
02/02/17 12:44ID:???初心者ならどれ読んでも参考にはなるかな?
と、言うか読めるのか??大変だぞ。人のソース。
0836名無しさん@お腹いっぱい。
02/02/17 14:10ID:???応、簡単な入門書などを読んで、すげー単純な掲示板などは
作れるようになったくらいのレベルです。
やっぱりもっと本などで十分に勉強してからのほうがいいのかも、、、
0837名無しさん@お腹いっぱい。
02/02/17 14:14ID:???おもしろいと思った処理を自分の書き方でパクればいい。
まぁ、クイックソートとかリストとかデータ構造とアルゴリズムは知って置いて良いかも。
0838名無しさん@お腹いっぱい。
02/02/17 17:08ID:???なるほど,意味ないんですか。
まぁできるだけ意味のないこと(アクセスログ採取とか)はやめとけってことですね。
>834(>836)
そのくらいのレベルならここに定着したら良いかと。
0839名無しさん@お腹いっぱい。
02/02/18 02:04ID:???Perlを実行する時は、コマンドプロンプトからですか?
ダブルクリックでは実行できますか?
あと、Perlの拡張子は何ですか?
0840名無しさん@お腹いっぱい。
02/02/18 02:12ID:FZ6+Jcwo0841
02/02/18 02:22ID:g517xzDH0842名無しさん@お腹いっぱい。
02/02/18 03:17ID:???人によって変数の書き方や改行の仕方の癖があるので
色々みてみて、自分の書き方に近い人、読みやすいものを
さがすといいのでは。
Perlだと、人によってはすごくトリッキーな、
もはや芸術的なコードを書く人がいますんで。
いいんだか悪いんだか最初はわからないかもだけど。
0843この子の七つのお祝いに
02/02/18 03:25ID:???DOS窓から次を実行。
% perl test.pl
--- 拡張子はなんでもOKだが、一般には.plを使う。---
> 841
ファイルとお話するためです。しゃべり専門と聞き専門がいますが、
しゃべり専門は、考えたことを一気にしゃべり倒すのか少しずつしゃべって
いくのかタイプが分かれますが、途中で切り替えることもできる器用な人です。
聞き専門の人は話が今どこまで進んでいるかを憶えておかないといけない。
0844名無しさん@お腹いっぱい。
02/02/18 05:23ID:???@zzz = ("a","b","c","d","e","f","g","h","i","j","k");
$xxx = 3;
表示
abc<br>def<br>ghi<br>jk<br>
「@zzzを$xxx回ごとに<br>で区切って表記」
と、いう処理をしたいんですが、どうしたらいいでしょうか?
0845名無しさん@お腹いっぱい。
02/02/18 09:33ID:9k5avLiX同時に開くファイルが、1つであるとは限らないからです。
2枚以上のファイルを開いているときに、FHをつかって、
どっちに仕事させたいのか指定するのです。
0846名無しさん@お腹いっぱい。
02/02/18 21:03ID:Lwlv3uzpBBS作って、書き込みがあったら管理人のメアドに書き込み内容を自動送信するようにしたんです(sendmailで)。
自動送信するのとしないのとでは30秒程度のタイムラグがあります。sendmailの設定が悪いの?
0847名無しさん@お腹いっぱい。
02/02/18 21:06ID:???処理時間が増えたんだろ?
0848名無しさん@お腹いっぱい。
02/02/18 21:07ID:???その質問内容で、君の相談内容が理解できたやつは神。
0849名無しさん@お腹いっぱい。
02/02/18 21:12ID:???MZ-80じゃあるまいし、書き込み変数をそのままsendmailに投げて送信するだけで30秒も掛からないっすよ。
0850名無しさん@お腹いっぱい。
02/02/18 21:12ID:???タイムラグの使い方変。
08518484
02/02/18 21:20ID:zt3xmvgw『ハッキングのわざが手に取るようにわかる本』に書かれている内容を
実践・計画をした場合、以下の罪・違反・侵害に問われる可能性アリ。
どうかご注意して頂きたい。
http://www.puchiwara.com/hacking/
0852名無しさん@お腹いっぱい。
02/02/18 21:25ID:???0853名無しさん@お腹いっぱい。
02/02/18 21:28ID:???0854名無しさん@お腹いっぱい。
02/02/18 23:54ID:???こんな感じ?
;# 設定
my( @zzz )= ('a'..'k');
my( $xxx )= 3;
my( $cat );
;# 処理
for ($i=$[; $i<=$#zzz; $i+=$xxx){
$cat.="$zzz[$i]$zzz[$i+1]$zzz[$i+2]<br>";
}
print $cat,"\n";
0855844
02/02/19 00:16ID:???うひゃー(;д:)
出来ました。ありがとうございましたぁ(;_;)
あぁ、しかし、凄い初心者な質問だったということが
解答から見て取れる・・・ 鬱だ。(2週間目で初心者そのものですが)
0856名無しさん@お腹いっぱい。
02/02/19 01:06ID:???いやめんどくさそうだから誰も書かなかったんだと思うよ。
0857名無しさん@お腹いっぱい。
02/02/19 01:13ID:u2bv8Yg8で、これを飛ばすのにはどうしたらいいのでしょうか?
1000
<html><head><meta http-equiv="Content-Type" content="text/html; charset=x-sjis"><base href="http://pc.2ch.net/test/read.cgi/php/" target="body"></head><body><font size=2>
<a href="1003539977/l50">1: WebProg板の名無しさんを決めよう (299)</a>
<a href="1013945931/l50">2: ASP VS PHP (24)</a>
(略)
<a href="987850713/l50">304: PH
572
PとJAVAさぶれっと (26)</a>
<a href="987470871/l50">305: デザイナーとの連携 (28)</a>
(略)
</body></html>
0
0858名無しさん@お腹いっぱい。
02/02/19 01:19ID:???HTTPのリザルトコード・・・にしては不自然。
何の話よ?ところで。
0859名無しさん@お腹いっぱい。
02/02/19 01:44ID:???まあtelnet系でも混ざってるんでPerlに限った話でもないでしょうし
ブラウザソースでは消えるんですが。
でも整形する時にはかなり邪魔なのでどうしたものかなぁ、と。。。
0860名無しさん@お腹いっぱい。
02/02/19 02:09ID:???実は今、改めてみてみると、
$xxx= 3;
$xxxが絶対"3"で無ければなりたたない解答だと言うことに気付いた…(爆)
これじゃ$xxxが5だった場合に即破綻してしまう(汗)
う、うーん・・・。結構難しいのか・・・?
と、取り敢えず>>854をヒントに頑張ってみよう(;´д`)
ヒントは確かにもらえた感じがする。
お礼も「ありがとう」ぐらいしか言えないし、頼ってばかりでもなんだし(汗)
0861名無しさん@お腹いっぱい。
02/02/19 02:21ID:uiFxg8op$xxx = 3;
$i =1;
foreach(@zzz) {
print $_;
if ($xxx == $i) { print "<BR>"; $i = 1; }
else { ++$i; }
}
0862名無しさん@お腹いっぱい。
02/02/19 02:22ID:???foreach (@zzz) {
print;
$i++; $i %= $xxx;
print '<BR>' unless $i;
}
0863862
02/02/19 02:26ID:???0864名無しさん@お腹いっぱい。
02/02/19 02:27ID:???chunk-part-size の 16進表記
詳しくはHTTP/1.1仕様書などを見れ
0865名無しさん@お腹いっぱい。
02/02/19 02:59ID:???あっ、お二方、ありがとうございます(;-;)
しかし、同じ結果処理に色々な解答が出るものだなぁ。
いつか質問者じゃなくて解答者になれるんだろうかなぁ。
頑張ろう(>_<
0866名無しさん@お腹いっぱい。
02/02/19 03:04ID:???一つの問いに数多の解答、がPerl。
半年がんばれば、回答者に入ってくると思うよ。
0867名無しさん@お腹いっぱい。
02/02/19 06:03ID:???ということでHTTP/1.0にしたらなんとなく解決しましたです。。
う、、これは逃げなのか、、(^_^;)
0868864
02/02/19 07:21ID:???http://www.studyinghttp.net/rfc_ja/2616/sec3.html#sec3.6
http://www.studyinghttp.net/rfc_ja/2616/sec19.html#sec19.4.6
説明めんどいので、悪いがこの辺読んで理解してくれ。
0869名無しさん@お腹おっぱい。
02/02/19 07:41ID:???例えば現時点でWEBプログラム板の上位にあるスレ
のスレタイトルをHTMLにインクルードしたい場合、
どんな処理をしたら良いのでしょうか。。
0870名無しさん@お腹いっぱい。
02/02/19 07:52ID:???対象を取得し,解析し,変換し,書き出す。
0871名無しさん@お腹いっぱい。
02/02/19 12:43ID:???上位スレッドはsubject.txtに書き出されてるはずだから、
それを使えばいいと思う。
が、今のスクリプトってsubject.txtはどこにあるんだろ?
http://pc.2ch.net/php/subject.txt
ここじゃないんだぁ…。
0872名無しさん@お腹いっぱい。
02/02/19 22:15ID:???いや subject.txt は確かにそこにあるんだけど、
Monazillaに属する2ch専用ブラウザじゃなきゃ読み込めないように
しちゃったんだよね。。一応読み込む方法はあるんだけど。
0873名無しさん@お腹いっぱい。
02/02/20 02:43ID:zdJQxaGu以下は『1である限りはif文以下を実行せよ』という
スクリプトなのですが、何が1なのでしょうか?
『何かが1である限り』ではなく、『偽である限り』という意味なのでしょうか?
それなら何が偽なのでしょう?
while(0)とすると何も実行せずに終ってしまいます。
#!/usr/bin/perl -w
$| = 1;
$test = "mona";
while (1) {
if ($pid = fork) { wait; } else { print "子プロセス\t$test\n"; }
}
よろしくお願いします。
0874名無しさん@お腹いっぱい。
02/02/20 03:38ID:???while( ループ継続条件 ){
だから while (1)は、何時までもやってろゴルァ(゚Д゚)y-~~
0875名無しさん@お腹いっぱい。
02/02/20 03:40ID:???> 何が1
while の条件が1でしょ。常に真だろ。
あと、何でwaitpidじゃなくてwaitしてんの?
0876名無しさん@お腹いっぱい。
02/02/20 03:41ID:3mg+TPcGあ、そうでした。
0が偽、1が真だった。
でも・・・何を評価して真か偽かを決めてるんですか?
ごめんなさい。
0877名無しさん@お腹いっぱい。
02/02/20 05:02ID:???>0が偽、1が真だった。
だよね。
だから、while (1) { は
while (真) { っていうワケで常に真。
0878名無しさん@お腹いっぱい。
02/02/20 05:05ID:dXs9ILx0それだ!
うう・・・ありがとうございます。
そしてお休みなさい・・・。
0879名無しさん@お腹いっぱい。
02/02/20 05:33ID:???真 0以外
でないの?
0880名無しさん@お腹いっぱい。
02/02/20 05:40ID:???0881名無しさん@お腹いっぱい。
02/02/20 05:59ID:???0882名無しさん@お腹いっぱい。
02/02/20 06:54ID:???0883名無しさん@お腹いっぱい。
02/02/20 10:47ID:???条件式には-1の場合もあり得る。
0884名無しさん@お腹いっぱい。
02/02/20 12:32ID:???$a = "aaa.jpeg";
$oks = "jpeg";
if($a =~ /\.$oks$/i){
print "aru";
}
ファイル名の拡張子を調べるルーチンを組みたいのですが・・・
0885名無しさん@お腹いっぱい。
02/02/20 12:49ID:???「〜はPerlでは出来ないのですか?」と聞く前にまず自分が間違っていないかどうか確かめろ。
つーか、>>884の結果は「aru」なんだが、アンタどういう環境で実行してんだ?
0886名無しさん@お腹いっぱい。
02/02/20 13:18ID:???解決。見まちがえてました(爆
0887名無しさん@お腹いっぱい。
02/02/20 15:47ID:Mi91V+XZどん裏でどんどん画像をダウンロードすることです。すでにダウンロードを始め
ているファイルの転送が完了しないうちに次行に書かれてあるURLからダウンロー
ド始める・・・要するに同時にいくつものファイルをダウンロードするというも
のですが、forkの使い方で躓いています。
でも以下のスクリプトだと$fileの最初の行のURLをダウンロードし続けるだけで
す。実はforkの使い方がよく分かっておりません。
子プロセス側の処理はオーケーとして、親プロセス側の処理が問題なのではない
かと睨んでいますが、どうにも・・・。
よろしくお願いします。
#!/usr/bin/perl -w
$file = "./image";
open (READ, "<$file");
while (<READ>) { $data_url = "$_"; &get("$data_url"); }
close (READ);
sub get {
while (1) {
if (fork) {
wait;
} else {
print "Download: $_[0]\n";
system "wget -q $_[0] ";
exit;
}
}
}
0888名無しさん@お腹いっぱい。
02/02/20 16:12ID:???同様にページのテキストの色を設定するのはどう書き加えればいいですか?
0889名無しさん@お腹いっぱい。
02/02/20 16:15ID:???死んでしまえ。
0890名無しさん@お腹いっぱい。
02/02/20 16:17ID:???Web制作
http://pc.2ch.net/hp/
こっちで聞いてごらんよ。
コーディングで変えたいっていうんだったら、フォントの色を変える部分で変数使ったらいい。
0891名無しさん@お腹いっぱい。
02/02/20 16:17ID:???>>874
>>888
作者に聞け
0892名無しさん@お腹いっぱい。
02/02/20 16:36ID:???上の方でwaitpidの事シカトされたから教えてやんない。
0893名無しさん@お腹いっぱい。
02/02/20 16:40ID:???Missing right curly or square bracket at D:\usr\www\home\chat\chat.cgi line 834,
at end of line
syntax error at D:\usr\www\home\chat\chat.cgi line 834, at EOF
Execution of D:\usr\www\home\chat\chat.cgi aborted due to compilation errors.
0894名無しさん@お腹いっぱい。
02/02/20 16:43ID:???{}の対応がおかしくなっているのでは。
ブラケットを確認セヨ。
0895名無しさん@お腹いっぱい。
02/02/20 16:49ID:???EOFまでのあいだに}が見つからないって話だよね。
0896名無しさん@お腹いっぱい。
02/02/20 16:56ID:???即レスさんくす!
さっそく探してみます!
0897名無しさん@お腹いっぱい。
02/02/20 17:07ID:???やったやった!動いた!ありがとう!
0898名無しさん@お腹いっぱい。
02/02/20 17:15ID:???よかったねー!
0899吉野家紗香
02/02/20 19:33ID:cwPAEcoba2.html
gikogiko.cgi
omaegana ――― b1.html
b2.html
omaemona ――― haa.txt
oremona ――― itteyoshu.dat
z.html
こういうファイル構成から下のようなファイル一覧を作るには、
どのようにやればよいですか?
a1.html
a2.html
gikogiko.cgi
omaegana/b1.html
omaegana/b2.html
omaegana/omaemona/haa.txt
omaegana/oremona/itteyoshu.dat
0900名無しさん@お腹いっぱい。
02/02/20 19:54ID:???0901名無しさん@お腹いっぱい。
02/02/20 20:09ID:???http://www.angelfire.com/ak5/2ch-web-program/kako/979894521.html の97
0902901
02/02/20 20:10ID:???0903名無しさん@お腹いっぱい。
02/02/20 21:12ID:???0904名無しさん@お腹いっぱい。
02/02/20 22:51ID:Mi91V+XZ頭がいっぱいいっぱいでwhile(1)のことばかり気にしていて・・・。
ごめんなさい。
>>887の件、教えて下さい。
0905名無しさん@お腹いっぱい。
02/02/20 22:59ID:???perlを勉強する人が増えたって証拠かな?
0906名無しさん@お腹いっぱい。
02/02/20 23:15ID:???レス読み流してない?>>873周辺とか。
0907名無しさん@お腹いっぱい。
02/02/20 23:19ID:???0908名無しさん@お腹いっぱい。
02/02/21 00:15ID:???同時に3つのファイルをオープンする場合は,先にロックしてからまとめてオープンする(つまりロック→ファイル1オープン→ファイル2オープン→ファイル3オープン→アンロック)のと,それぞれのオープン直前に専用のロックをするのとどちらがいいのでしょう?
ただし,それぞれ別作業でオープンする場合もあります。
0909名無しさん@お腹いっぱい。
02/02/21 00:17ID:???俺はプログラムごとにエクスクルーシブロックかけるが(ダメダメ)。
0910名無しさん@お腹いっぱい。
02/02/21 00:51ID:???環境やどんなプログラムなのかわからない以上、状況によるとしか言えない。
0911飲み活要員
02/02/21 02:35ID:h7QujQlwhttp://www.lodestar.nu/niki/index.cgi
中途半端なWikiEngineみたいな感じだけど
・一応認証がある
・文法がHNS下位互換
・単語をページごとのリンクに変換できる。
・逆リンク
・段落ごとにリンクをはれる
・ブラウザ上からハイパーテキストを編集するツール
という特徴がある。
こーいうツールの必要性があるものかどうか、ふと確認してみたくなった。
どうよ?意見キボンヌ。
0912名無しさん@お腹いっぱい。
02/02/21 02:37ID:???Wiki* に多大な影響を受けている。 Wiki* とは不特定多数の人々がウェブを編集できる仕組み。ハイパーリンクが気持ちいい。Wikiとnikiの違いは
コマンド体系(nikiはHNS下位互換)
編集ポリシー
普及度
完成度(汗
などが挙げられる。
次世代NikiNikiWeb
悪いところは反省し。他のWikiEngineのよいところを参考に
oldtype
ver 0.01-beta6のソース?と使い方
性格
基本的に自動リンク用語集。たまにハイパードキュメント作成ツール。日記にもなるかも。
Wiki* 方面はみんなが目指しているので、NikiNikiはハイパードキュメント作成ツール方面でひとつ
でも Wiki* 的な機能もありで。
既知のバグ
LINKのURL判定が甘い
いろいろ
リンク
http://tiki.is.os-omicron.org/?c=v&p=WelcomeVisitors Omicron
http://isweb21.infoseek.co.jp/computer/h_yanai/html/WelcomeVisitors.html ese-nikki
http://hpcgi1.nifty.com/~k_ogata/diary/diary.rb diary.rb
http://todo.org/
0913名無しさん@お腹いっぱい。
02/02/21 03:09ID:???私的には大変興味アリ。
カテゴリつくりたい時なんかにも役立つ?
派生して色々な用途に使えそうなので良いのでは。
0914飲み活要員
02/02/21 03:10ID:h7QujQlwしまた、ここはPerlの質問を受け付ける擦れだったのか。
間違いた。スマソ
0915名無しさん@お腹いっぱい。
02/02/21 03:24ID:???おもしろいね。いろんなことに使えそう。
上の方にある「一覧」とか選ぶとエラー出るのは仕様?
0916名無しさん@お腹いっぱい。
02/02/21 03:44ID:???実は煮たようなものを作ろうとしていたりします。
0917名無しさん@お腹いっぱい。
02/02/21 09:35ID:???0918さんこうすれ?
02/02/21 09:48ID:???http://pc.2ch.net/test/read.cgi/tech/1010317366/
0919名無しさん@お腹いっぱい。
02/02/21 14:16ID:???■■■■■■■■■■■■■■477まで読んだ■■■■■■■■■■■■■■
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
0920名無しさん@お腹いっぱい。
02/02/21 19:32ID:9QK6Cxc7$loginstr =~ s/<\/DIV>\n="$indexstr";
では出来ないのでしょうか?
正しい表現が分らず困惑しとります。
0921名無しさん@お腹いっぱい。
02/02/21 19:36ID:???0923迷える920
02/02/21 20:39ID:???$indexin =~ s/$indexstr//;
ってできますか?
$indexinの中から、$indexstrと被る部分を削除したいんです。
中身日本語だからダメなのかしら?
$indexstrの中身の頭数行が、文字化けして表示されて、続いて
invalid [] range "7-0" in regexp at ./hp.pl line 72.
ていうアナウンスがあります。
お願いとどきますように。
0924名無しさん@お腹いっぱい。
02/02/21 20:43ID:???変数$indexstr内が正規表現の場合、展開される。
$i = '.*';
s/$i//; #<- s/.*//;
0925名無しさん@お腹いっぱい。
02/02/21 20:45ID:aeAe/JtXCGIはEUC-jpが基本。
0926名無しさん@お腹いっぱい。
02/02/21 20:47ID:???はぁ?
0927迷える920
02/02/21 20:55ID:???で、文字コードに関してはよく分らなかったので、
取り敢ずやってしまえって試しにやってみたら、うまくいった。
で、それじゃぁって、つくりたいプログラムを書いてたら
920,923の質問にはまったと。
>>924
正規表現ではなく文字列なんです。
で、文字列だとすると、
>>925
文字コードが関ってくるんでしょうか?
0928名無しさん@お腹いっぱい。
02/02/21 21:13ID:+rGDE/uDhttp://www.din.or.jp/~ohzaki/perl.htm#JP_EUC_JP
参考になればよいが。関係なかったらスマソ
0929名無しさん@お腹いっぱい。
02/02/21 21:14ID:+rGDE/uD09308484
02/02/21 21:36ID:39ejQiBa韓国でも翻訳して発売されるらしい。
http://www.puchiwara.com/hacking/
うにゅ。
0931名無しさん@お腹いっぱい。
02/02/21 21:37ID:???みんながっかりしてたよ。
0932名無しさん@お腹いっぱい。
02/02/21 21:44ID:xFoRv15aそのままeucでhtmlを出力してるんですが、
エンコード自動選択でsjisになってしまいます。
metaタグでちゃんと宣言してるんですけど。
なんか他にすべきことありますか?
0933932
02/02/21 21:46ID:xFoRv15a掲示板CGIを関連ファイル全部EUCで作って...です。
0934名無しさん@お腹いっぱい。
02/02/21 21:47ID:???うちで見るとこんな感じ
930 名前:8484 投稿日:2002/02/21(木) 21:36 ID:39ejQiBa
どんなにスゴイんだ?
韓国でも翻訳して発売されるらしい。
http://www.puchiwara.com/hacking/ [ブラクラ]
うにゅ。
0935名無しさん@お腹いっぱい。
02/02/21 22:41ID:???ttp://tohoho.wakusei.ne.jp/wwwxx005.htm
ここが参考になるかと。
でもいろんなブラウザで試しておかしくなるなら、metaタグか、CGIの出力も疑うべきです。
0936名無しさん@お腹いっぱい。
02/02/21 22:58ID:???>>925のいうように、スクリプトもデータもEUCにしときましょう。
ttp://tohoho.wakusei.ne.jp/wwwperl1.htm#Kanji
0937名無しさん@お腹いっぱい。
02/02/22 00:18ID:Ednlkjpe何とか分割して処理できないでしょうか?読み込んだ後は単に文字列検索したいだけなんですけど・・・・
0938名無しさん@お腹いっぱい。
02/02/22 00:20ID:???>textfileを読み込んで処理しようとすると
どういう状態?
0939名無しさん@お腹いっぱい。
02/02/22 00:29ID:???興味あるな。
どんなデータ?
繰り返し同じものが出てくる場合はKeyにして別DBにする、っていう
リレーショナル的な分割しかないと思うけどね。
0940937
02/02/22 00:45ID:Ednlkjpe遺伝子の配列データです。その中から特定の配列を検索して抽出するスクリプトを
書きたいのです。無理かな。。。
単純にfileをopenして配列変数にぶちこんで検索をかけ・・・を繰り返しているんですが
途中で止まってしまいます(当たり前か)。
0941名無しさん@お腹いっぱい。
02/02/22 00:45ID:???readで何バイトかごとに読めば?
0942名無しさん@お腹いっぱい。
02/02/22 00:47ID:???Cで書くべきだと思うよ。
0943937
02/02/22 00:52ID:Ednlkjpeありがとうございます。さっそくやってみます。
0944名無しさん@お腹いっぱい。
02/02/22 01:22ID:???print "Content-Type: text/html; charset=EUC-JP\r\n\r\n";
0945名無しさん@お腹いっぱい。
02/02/22 01:31ID:???そんな大きな規模なら別の言語で最適化しつつやっても3日ぐらいかかるのが普通じゃないの?
0946名無しさん@お腹いっぱい。
02/02/22 01:38ID:???って必要あるんですか?よく意味が分かりません。
グーグルで調べようにも""囲みでもヒットできないので困ります。
0947名無しさん@お腹いっぱい。
02/02/22 01:46ID:???よく知らんのだけど、bioperlって使えないのかな?
0948名無しさん@お腹いっぱい。
02/02/22 01:54ID:???foreach(1..5) {
print "$_:";
sleep 1;
}
$|=1;
foreach(1..5) {
print "$_:";
sleep 1;
}
ってやってみ。
0949名無しさん@お腹いっぱい。
02/02/22 02:02ID:???$| の説明はperlvarに載ってる。
ぐぐーるする前に手元のperlマニュアル読もう。
0950937
02/02/22 02:05ID:Ednlkjpeどうやらうまくいったようです!!
ありがとうございました。
0951名無しさん@お腹いっぱい。
02/02/22 04:49ID:???0952_gunzip
02/02/22 08:24ID:???http://bioperl.org/
bioperlのBio::Tools::Blast, StandAloneBlast辺りのモジュールを使って
BLAST, FASTA辺りの吐くサーチ結果をパースするのが一番簡単&&高速だと思うな。
$in = new Bio::Seq(-id=>"test query", -seq=>"GAAG");
$blast_report = $factory->blastall($in);
詳しくは付属のドキュメント参照ね。
0953名無しさん@お腹いっぱい。
02/02/22 18:07ID:???0954名無しさん@お腹いっぱい。
02/02/23 11:46ID:???09558484
02/02/23 11:59ID:gBGRhxGb\\ おにぎりワッショイ!! //
+ + \\ おにぎりワッショイ!!/+
+
. + /■\ /■\ /■\ +
( ´∀`∩(´∀`∩)( ´ー`)
+ (( (つ ノ(つ 丿(つ つ )) +
ヽ ( ノ ( ノ ) ) )
(_)し' し(_) (_)_)
http://www.puchiwara.com/hacking/
韓国版ってでるらしいけど、どんな内容になるんだ?
この手のものが韓国に翻訳されるなんて初めてでは?
0956名無しさん@お腹いっぱい。
02/02/24 00:15ID:5vPUCqZKだれか知りませんか?
0957名無しさん@お腹いっぱい。
02/02/24 00:17ID:???ルーチンくまなきゃだめです。
シリウス歴か何かで検索。
0958956
02/02/24 00:28ID:5vPUCqZKルーチン組むって、
1970から、指定年数まで、閏年のチェックするって感じになります?
なんか、もっとスマートな方法あるかとなぁ〜と思って探してたんですけど、
どでしょ
0959名無しさん@お腹いっぱい。
02/02/24 01:37ID:???use Time::Local;
$time = timelocal($sec,$min,$hour,$mday,$mon,$year);
0960名無しさん@お腹いっぱい。
02/02/24 02:07ID:???Non Module派なんでねw。
0961名無しさん@お腹いっぱい。
02/02/24 02:09ID:???モジュールのコード使えば?
0962名無しさん@お腹いっぱい。
02/02/24 02:15ID:1IBSQesytime::localは標準モジュールだよ?
0963名無しさん@お腹いっぱい。
02/02/24 02:15ID:???Non Module派なんでねw。
0964名無しさん@お腹いっぱい。
02/02/24 02:50ID:???>>961
0965956
02/02/24 03:57ID:5vPUCqZKループに2個あんのが、どうもなぁ〜
こんなんしか無いかね?
sub date2Time
{
local ( $year , $mon , $day , $hour , $min , $sec ) = @_ ;
$days = $day - 1 ;
foreach ( 0 .. $mon - 2 )
{
$days += (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)[ $_ ] ;
}
foreach ( 1970 .. $year - 1 )
{
if ( ( $_ % 4 == 0 && $_ % 100 != 0 ) || $_ % 400 == 0 )
{
$days += 366 ;
}
else
{
$days += 365 ;
}
}
$seconds = $days * 86400 ;
$seconds += $hour * 3600 ;
$seconds += $min * 60 ;
$seconds += $sec ;
$seconds -= 32400 ;
return $seconds ;
}
0966---
02/02/24 04:37ID:???sub date2Time{
local( $year, $mon, $day, $hour, $min, $sec )= @_ ;
$days= $day - 1 ;
for ( 0 .. $mon - 2 ){
$days += (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)[$[+ $_] ;
}
for ( 1970 .. $year - 1 ){
$days+= (( $_ % 4 == 0 && $_ % 100 != 0 ) || $_ % 400 == 0) ? 366 : 365;
}
$seconds = $days* 86400;
$seconds+= $hour* 3600;
$seconds+= $min * 60;
$seconds+= $sec;
$seconds-= 32400;
$seconds;
}
0967名無しさん@お腹いっぱい。
02/02/24 13:27ID:???おしぃ〜。あとちょっと。$yearがうるう年だったとき、ちょびっとずれるみたい。
use POSIX;
srand();
foreach(1..100) {
$y = 1970 + int(rand(40));
$m = int(rand(12)) +1;
$d = 1;
$t = POSIX::mktime(0, 0, 0, $d, $m-1, $y-1900);
$t2 = date2Time($y, $m, $d, 0, 0, 0);
printf("%4s/%2s/%2s : $t %s= $t2\n",$y,$m,$d, $t==$t2 ? "=" : "!");
}
0968名無しさん@お腹いっぱい。
02/02/24 17:04ID:KO+bj0za<select name="hoge">
<option>
<option>
</select>
<select name="hoge">
</select>
にヒットする表現を知っている方がいましたらよろしくお願いします。
0969名無しさん@お腹いっぱい。
02/02/24 17:29ID:???格納されてるのは1変数?リスト?それによる。
0970名無しさん@お腹いっぱい。
02/02/24 17:39ID:???具体的には
HTML文を$bodyという変数に読み込んで、
<select name="hoge">
<option value="fuga">商品名1
<option value="fuga1">商品名2
</select>
で二つに切ろうとしているんですが、
($top,$bottom) = split '<select(.|\n)*</select>',$body;
とやってもうまくいきません。
$bodyに格納されているのはただのHTML文です。
よろしくお願いします。
0971名無しさん@お腹いっぱい。
02/02/24 17:44ID:???他人の正規表現って解析面倒だから・・・。
/'<select.*?<\/select>'/
とか。
0972名無しさん@お腹いっぱい。
02/02/24 17:53ID:???試してみました。
でもやっぱり$bottomの方に何も格納されません。
$topの方には<select が出てくる直前までの文が格納されるんですが・・
>そもそも正規表現・・
囲む記号は何でもいいらしいというのを本で読んだので、エスケープ
するのが面倒なんで、''でくくっていました。でも普通使わなさそうなので
素直に//でくくります。
もっと、試行錯誤してみます。アドバイスがありましたらよろしくお願いし
ます。
0973名無しさん@お腹いっぱい。
02/02/24 18:27ID:???/<select.*<\/select>/s,$body,2;
とやれば出来ました。
(.|\n)使っていたのがおかしくなる元だったのかな?
ひまになったら考えてみます。
ありがとうございました。
0974名無しさん@お腹いっぱい。
02/02/24 18:44ID:oPNaAPLPPerlで書いたプログラムが遅いと言われた場合、
PHPに移植すれば高速化できるものなのでしょうか?
0975名無しさん@お腹いっぱい。
02/02/24 18:56ID:???劇的な速度の変化など期待するだけ無駄です。
0976名無しさん@お腹いっぱい。
02/02/24 19:02ID:???> 囲む記号は何でもいい
区切り文字に//以外を使用するなら、m演算子が要る。
即ち、//が区切り文字の時のみm演算子省略可能。
0977名無しさん@お腹いっぱい。
02/02/24 19:07ID:????外すと最大マッチするから気をつけてね。
0978名無しさん@お腹いっぱい。
02/02/24 20:54ID:???バイナリとして読み込んだテキストファイルを処理して出来た文字列があります.
この文字列の末尾の改行を取り去りたい場合,
s/\x0D?\x0A?$// とする以外無いのでしょうか.
chompはどうも\x0Aしか消してくれないみたいなので,
改行コードが\x0D\x0Aだった場合は\x0Aのみが消されて\x0Dが残ってしまいます.
s/\x0D?\x0A?$// より良い方法があればご教示ください.
OSはWindows2000,PerlはActivePerlとPerl for Cygwinを使っています.
$_ = "str\x0D\x0A\x0D\x0A";
open(OUT_BIN, "> ./out_bin.txt") or die;
binmode(OUT_BIN);
chomp;
print OUT_BIN;
close(OUT_BIN);
0979名無しさん@お腹いっぱい。
02/02/24 20:56ID:???binmodeをコメントアウトしたらうまくいかない?
0980名無しさん@お腹いっぱい。
02/02/24 20:57ID:???substr($data,length($data)-2,2):
0981名無しさん@お腹いっぱい。
02/02/24 21:19ID:???| 次スレ立てて!! .|
|_________|
∧∧ ||
( ゚д゚)||
/ づΦ
0982978
02/02/24 21:32ID:???>>979
混乱させてしまったようで申し訳ありません.
テキストとして出力すると出力時に\x0A→\x0D\x0Aの変換がされてしまうので,
結果がわかりやすいようにサンプルコードではbinmodeしておきました.
実際にやりたい事を書いておきます.大崎氏の
「ファイルの最後の数行だけ表示する(http://www.din.or.jp/~ohzaki/perl.htm#File_Tail)」
を改造して「ファイルの最後の数行を『逆順に取り出す』」スクリプトを作っているのです.
取り出すところまでは書けたのですが,取り出した行の改行コードがchompでは取れない.
そこで質問したというわけです.
>>980
どもです.しかし一応改行が\x0D\x0Aでない場合(\x0Aとか)も考えておきたいのです.
0983名無しさん@お腹いっぱい。
02/02/24 21:42ID:???DOS改行が入力される可能性がある場合は、>>978の通りにやってます。
s/\r?\n$//;
こんなかんじー。
0984名無しさん@お腹いっぱい。
02/02/24 21:59ID:???0985名無しさん@お腹いっぱい。
02/02/24 22:22ID:???【Perl】初心者コーナーPart10
http://pc.2ch.net/test/read.cgi/php/1014556702/
0986名無しさん@お腹いっぱい。
02/02/24 22:29ID:???お気に入りに入れて移動しマスです。。。。
0988978
02/02/25 00:31ID:???お騒がせしてすまんかった.抜けてるなー,おれ.
0989名無しさん@お腹いっぱい。
02/02/25 12:34ID:xTyCNQEK既にログに記録されている数桁の文字列を、
出力時にカンマやピリオドで区切ることは可能なのでしょうか?
例えば
"19800"とログに記録されているものを19,800として出力、
或いは
"20020224"とログ記録されているものを2002.02.24として出力、
いかがでしょうか、
もし可能でしたら方法を教えてもらえると大変助かります。
0990名無しさん@お腹いっぱい。
02/02/25 13:00ID:???>>3のリンク先の
http://www.din.or.jp/~ohzaki/perl.htm#NumberWithComma
ここにカンマ区切りのことが書いてある。
日付の方は
$day =~ s/(\d{4})(\d{2})(\d{2})/$1\.$2\.$3/;
でいいだろ。
0991名無しさん@お腹いっぱい。
02/02/25 13:07ID:ZVFFw9ikで、数字にコンマをつけます
0992989
02/02/25 16:29ID:xTyCNQEK望んでいたとおりの完璧に動きを得ることができました!
0993出来の悪い子
02/02/25 17:11ID:KjItHBP9cgiにプルダウンでパラメータを渡そうとしています
XXX.cgi?year=2002&month=02&day=25
という形にはなったのですが
cgi側が吐き出す結果$Todayは -- という形になります
$day = $in{"day"};
$month = $in{"month"};
$year = $in{"year"};
$Today = $year . "-" . $month . "-" . $day;
print $Today
どこらへんの記述を見直せば良いでしょうか?
ヒントよろしくお願い致します。
0994名無しさん@お腹いっぱい。
02/02/25 17:18ID:???このへんかな?
>出来の良いお前らに質問です
0995名無しさん@お腹いっぱい。
02/02/25 17:19ID:???$buffer = $ENV{'QUERY_STRING'};
@pairs = split(/&/,$buffer);
foreach $pair (@pairs){
($key,$value) = split(/=/,$pair);
$in{$key} = $value;
}
この辺。
肝心な部分が載ってねーじゃねーか。
だから出来が悪いって言われるんだ。
改善を要求しる!
0996名無しさん@お腹いっぱい。
02/02/25 17:21ID:???0997名無しさん@お腹いっぱい。
02/02/25 17:22ID:???0998名無しさん@お腹いっぱい。
02/02/25 17:22ID:???0999名無しさん@お腹いっぱい。
02/02/25 17:23ID:???1000名無しさん@お腹いっぱい。
02/02/25 17:23ID:???| 1000
∧ ∧ |/\_________
(,,゚Д゚)____.
(つ/~ ※ ※ \
/※ ※ ※ ※ \
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。