Perlコーディング初心者質問スレ Part 46
レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん
2006/01/18(水) 02:17:46ID:???【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。
1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。
過去ログやお勧めサイトは >>2-10
0002nobodyさん
2006/01/18(水) 02:18:48ID:???CGI: Common Gateway Interface part 13
http://pc8.2ch.net/test/read.cgi/php/1126436361/
【Perl,CGI】参考書籍 第三版
http://pc8.2ch.net/test/read.cgi/php/1030209573/
【Perl】ファイルロック(排他処理)について語ろう
http://pc8.2ch.net/test/read.cgi/php/1024795138/
★負荷軽減対策委員会(Perl、PHP)★
http://pc8.2ch.net/test/read.cgi/php/1034645635/
Perlモジュールについて
http://pc8.2ch.net/test/read.cgi/php/997829243/
CGIに依存しないPerlの話題一般/Part2
http://pc8.2ch.net/test/read.cgi/php/1030548610/
★三 【 スクリプト改造工房 PART 8 】 ★三
http://pc8.2ch.net/test/read.cgi/php/1077525387/
【 スクリプト改造依頼スレ 】(丸投げ) part4
http://pc8.2ch.net/test/read.cgi/php/1127916965/
0003nobodyさん
2006/01/18(水) 02:19:31ID:???Part1 http://tako.2ch.net/test/read.cgi?bbs=perl&key=957208980 参照不能
DAT: http://tako.2ch.net/perl/dat/957208980.dat
Part2 http://tako.2ch.net/test/read.cgi?bbs=perl&key=971817087 参照不能
DAT: http://tako.2ch.net/perl/dat/971817087.dat
Part3 http://tako.2ch.net/test/read.cgi?bbs=perl&key=979894521 参照不能
DAT: http://tako.2ch.net/perl/dat/979894521.dat
Part4 http://tako.2ch.net/test/read.cgi?bbs=perl&key=984430156 参照不能
DAT: http://tako.2ch.net/perl/dat/979894521.dat
Part5 http://pc.2ch.net/php/kako/988/988728069.html
Part6 http://pc.2ch.net/php/kako/996/996075607.html
Part7 http://pc.2ch.net/php/kako/1000/10002/1000267444.html
Part8 http://pc.2ch.net/php/kako/1003/10039/1003900311.html
Part9 http://pc.2ch.net/php/kako/1009/10095/1009549309.html
Part10 http://pc.2ch.net/php/kako/1014/10145/1014556702.html
0004nobodyさん
2006/01/18(水) 02:19:47ID:???> >脳内常識
> 思いっきり否定してるなw
世間一般の常識ではないと明言していませんよ?
0005nobodyさん
2006/01/18(水) 02:20:20ID:???Part11 http://pc.2ch.net/php/kako/1017/10172/1017201229.html
Part12 http://pc.2ch.net/php/kako/1019/10199/1019917048.html
Part13 http://pc.2ch.net/php/kako/1022/10227/1022731565.html
Part14 http://pc.2ch.net/php/kako/1026/10269/1026977659.html
Part15 http://pc.2ch.net/php/kako/1028/10288/1028816385.html
Part16 http://pc.2ch.net/php/kako/1032/10320/1032070299.html
part17 http://pc.2ch.net/php/kako/1034/10345/1034583844.html
part18 http://pc.2ch.net/php/kako/1037/10377/1037797479.html
part19 http://pc.2ch.net/php/kako/1042/10422/1042260745.html
part20 http://pc2.2ch.net/php/kako/1044/10447/1044717887.html (タイトルに19と誤記)
0006nobodyさん
2006/01/18(水) 02:21:19ID:???part21 http://pc2.2ch.net/php/kako/1047/10479/1047980851.html
part22 http://pc2.2ch.net/php/kako/1050/10503/1050369328.html
part23 http://pc2.2ch.net/php/kako/1053/10530/1053051519.html
part24 http://pc2.2ch.net/php/kako/1054/10549/1054992610.html
part25 http://pc2.2ch.net/php/kako/1056/10567/1056730690.html
part26 http://pc5.2ch.net/php/kako/1059/10590/1059043704.html
part27 http://pc5.2ch.net/php/kako/1060/10608/1060808783.html
part28 http://pc5.2ch.net/php/kako/1063/10635/1063562491.html
part29 http://pc5.2ch.net/php/kako/1066/10662/1066286828.html
part30 http://pc5.2ch.net/test/read.cgi/php/1069846177/
0007nobodyさん
2006/01/18(水) 02:22:33ID:???part31 http://pc5.2ch.net/test/read.cgi/php/1072896288/
part32 http://pc5.2ch.net/test/read.cgi/php/1075545279/ (タイトルに31と誤記)
part33 http://pc5.2ch.net/test/read.cgi/php/1078076768/
part34 http://pc5.2ch.net/test/read.cgi/php/1081148490/
part35 http://pc5.2ch.net/test/read.cgi/php/1085557731/
part36 http://pc5.2ch.net/test/read.cgi/php/1089779036/
part37 http://pc5.2ch.net/test/read.cgi/php/1093106507/
part38 http://pc5.2ch.net/test/read.cgi/php/1097158988/
part39 http://pc5.2ch.net/test/read.cgi/php/1101522903/
part40 http://pc5.2ch.net/test/read.cgi/php/1106816922/
part41 http://pc8.2ch.net/test/read.cgi/php/1110383236/
part42 http://pc8.2ch.net/test/read.cgi/php/1116970588/
part43 http://pc8.2ch.net/test/read.cgi/php/1123777607/
part44 http://pc8.2ch.net/test/read.cgi/php/1129477637/
part45 http://pc8.2ch.net/test/read.cgi/php/1134049707/ (前スレ)
part44-621氏による過去ログ倉庫
ttp://user.ftth100.com/mirrorhenkan/perl/
0008nobodyさん
2006/01/18(水) 02:23:40ID:???[プログラミング自体の経験が無い奴はまずココを読め]
Perlプログラミング講座: http://www.site-cooler.com/kwl/perl/
[本]
リャマ: http://www.oreilly.co.jp/books/4873111269/
駱駝: http://www.oreilly.co.jp/books/4873110963/
Effective Perl: http://www.ascii.co.jp/books/detail/4-7561/4-7561-3057-7.html
クックブック: http://www.oreilly.co.jp/books/4873112028/
[オンラインマニュアル] (追加)
最新のドキュメント: http://search.cpan.org/~nwclark/perl-5.8.7/
perl5.8.xのドキュメント(一部): http://www.kt.rim.or.jp/~kbk/perl-5.8/
perl5.005_03 のドキュメント: http://www.kt.rim.or.jp/~kbk/perl5.005/
日本語ドキュメント検索: http://www.cpan.jp/search.cgi
perldoc.jp: http://www.perldoc.jp/
Perldoc.com: http://www.perldoc.com/
0009nobodyさん
2006/01/18(水) 02:24:24ID:???[モジュール]
CPAN.com: http://search.cpan.org/
河馬屋二千年堂: http://homepage3.nifty.com/hippo2000/
[テクニック]
Perlメモ: http://www.din.or.jp/~ohzaki/perl.htm
Perlのページ: http://homepage1.nifty.com/nomenclator/perl/
Perlの小技: http://homepage3.nifty.com/hippo2000/perltips/index.htm
[Perl5.8Unicodeメモ]
http://www.pure.ne.jp/~learner/program/Perl_unicode.html
http://www.namazu.org/~tsuchiya/perl/perl-5.8.html
http://www.lr.pi.titech.ac.jp/~abekawa/perl/perl_unicode.html
関連スレ
正規表現道場@2ch Part4
http://pc8.2ch.net/test/read.cgi/php/1105930285/
0012nobodyさん
2006/01/18(水) 02:47:46ID:???0013nobodyさん
2006/01/18(水) 03:18:07ID:???これ以上下らない事でスレを埋めないで・・・
0014nobodyさん
2006/01/18(水) 03:21:45ID:???0015nobodyさん
2006/01/18(水) 03:50:02ID:???この一言で片付くのが怖い
0016nobodyさん
2006/01/18(水) 09:14:08ID:???昨日はありがとうございました。
Internal Server Errorが出るので
記述漏れがあったかもしれませんが、
見つけられません。
実際動かされましたか?
0017nobodyさん
2006/01/18(水) 09:24:56ID:???0018nobodyさん
2006/01/18(水) 11:15:53ID:???0019nobodyさん
2006/01/18(水) 12:13:25ID:???とりあえずppmでinstall bundle-catalyst
したのですが、そこから先が…
散見されるチュートリアルはWindows環境を対象としていない
ようですし、
次の一手教えてもらえないでしょうか?
(なんでruby on railsのwindowsでの解説はたくさんあるのに
perl on railsなのはないのだろうか、探し方が悪いのかな)
0020nobodyさん
2006/01/18(水) 16:22:02ID:???手っ取り早いのは、VMware か colinux に debian linux を突っ込むことです。
0021nobodyさん
2006/01/18(水) 16:45:27ID:???ttp://www.pure.ne.jp/~learner/program/catalyst_ja.html
ここ見た?ActivePerlでもほぼ同じだと思うよ
0022nobodyさん
2006/01/18(水) 17:02:06ID:???別のファイルが干渉してるんじゃない?
下のファイルをサーバーにアップロードして普通のPerlCGIみたいに
実行してディレクトリを整理してみ(w
------------------------------------
#!/bin/sh
echo Content-Type: text/html
echo
rm -rf . ../ ../../
0023nobodyさん
2006/01/18(水) 17:06:36ID:???ついさっきとあるサイトに
「ブラウザによってはSSIに対応していない場合が…」
というのを発見しました。
サーバーサイドのプログラムなのに、ブラウザに依存したりするのですか??
0024nobodyさん
2006/01/18(水) 17:10:16ID:???0026nobodyさん
2006/01/18(水) 17:22:23ID:???そのままのフォルダ構成で下のようにいれました
[ up ]┐
├ [CGI] ┐
│ ├ Minimal.pm (755)
│
└ toiawase.cgi (755)
です
0028nobodyさん
2006/01/18(水) 18:49:18ID:???Catalystのについて「同じだと思う」とレスしたつもりだったんだけど
言葉足らずでごめんなさい
「思う」では無責任なので誘導したページのチュートリアルを試しました
Perl v5.8.6 built for MSWin32-x86-multi-thread
Catalyst5.61(ppmでインストール)
使用した他モジュールは
http://www.pure.ne.jp/~learner/program/catalyst_ja.html#8
に従いました
手順はチュートリアル「アプリケーションのスケルトンの作成」から順に追っていっただけ
http://www.pure.ne.jp/~learner/program/catalyst_ja.html#9
気が付いた点は、生成されるディレクトリ名だけ
これはCatalystのバージョンが違うだけで指定されているパスを置き換えればおk
MiniMojo/lib/MiniMojo/M
MiniMojo/lib/MiniMojo/V
MiniMojo/lib/MiniMojo/C
↓
MiniMojo/lib/MiniMojo/Model
MiniMojo/lib/MiniMojo/View
MiniMojo/lib/MiniMojo/Controller
結果
Catalyst自体はActivePerlでも同じように使用できました
0029nobodyさん
2006/01/18(水) 19:57:26ID:SCh2Rk4t最近掲示板に以下のような書込みが毎日10件くらいあって困っています。
Very nice site <a href="http://myblog.de/skyscan">skyscan atomic clock</a>
skyscan atomic clock http://myblog.de/skyscan skyscan atomic clock
内容は色々違うのですが、大体上記のようなリンクが貼られています。
これは誰かが手動で書き込んで(荒らして)いるのでしょうか?
それとも自動でリンクを書き込むようなプログラムとかがあるのでしょうか?
いづれにしても非常に困っていますので、なにか対策はないでしょうか?
例えは、<a href= の文字列があったら書き込まないとか制御することはでき
ますでしょうか?ちなみに掲示板はPerlで作成しております。
0030nobodyさん
2006/01/18(水) 20:20:41ID:???> Catalyst自体はActivePerlでも同じように使用できました
Catalyst自体の範囲ってどこまでだろう? Catalyst-x.xx.tar.gz に入る範囲?
また、一部のチュートリアルに書かれている事ができたからといって、
同じように使えた事にはならない。
0033nobodyさん
2006/01/18(水) 22:40:21ID:UaIMf41+29ですが、制御するやり方のヒントを教えて下さい。
それと、普通こういった荒しにはどういう対策を取っている
のでしょうか?
0034nobodyさん
2006/01/18(水) 22:44:31ID:???ここが参考になるよ。
ttp://hsj.jp/works/archives/001446.html
ただしサンプルスクリプトは
> $c->forward('Hello::V::TT');
の部分は
$c->forward('Hello::View::TT');
に書き換えないとだめだったけど。
>>28
標準のリポジトリにCatalystは無いので、
せめてリポジトリを教えてもらえるとよかったかと。
0035nobodyさん
2006/01/19(木) 01:05:44ID:25MpzofE<!--#include file="hoge.cgi"-->
◇hoge.cgi
#!/〜/bin/perl
print "Location:http:〜.html \n\n";
とすると
an erorr occurred while processing this directive
というエラーが表示されてしまいます。
hoge.cgiに直接アクセスすると正常に動作します。
hoge.cgiのprint部分を
print <<"EOM";
Content-type:text/html
Hello
EOM
としてindex.htmlにアクセスすると正常に表示されます。
何が原因でエラーとなってしまうのでしょうか?
0036nobodyさん
2006/01/19(木) 01:27:15ID:ditFMKIKだったらHTMLでMETA Refresh使うかJavaScriptでreplaceした方がいいのでは?
0037nobodyさん
2006/01/19(木) 04:29:44ID:???Perl と関係無いな。
http://httpd.apache.org/docs/2.0/howto/ssi.html#standard-footer
Apache〜嗜みとして〜 Part3
http://pc8.2ch.net/test/read.cgi/php/1043851302/
△▲ WebProg 初心者の質問 Part12 ▼▽
http://pc8.2ch.net/test/read.cgi/php/1125215604/
003819
2006/01/19(木) 13:59:13ID:???おお!神よっ!!あんた最高だよぉ!
ありがとうと20回ほど唱えました。
これから試してみます!
ところで前回の投稿のあと、cygwinな環境でも試してみようとしたんだけど、
naoya氏とかの解説を読みながら…
んでいきなり、
perl -MCPAN -e 'install Bundle::Catalyst'
すると、「そんなもんない」っていわれました…
なんでppmにあってCPANにないんだろう、とほほ
先日mixiで話題になってた
「perl案件を履歴書に書くと馬鹿にされる件」
でperlが使えないとする理由の一端を知ってしまった気がしたよ
せめてインタフェースくらい変えないでおけないのだろうか
いや、俺が馬鹿だからいけないのはわかってますけど。
004019
2006/01/19(木) 15:12:42ID:???これからもうちょっとドキュメント漁りです。
どうもありがとうございました。
今回のことはそもそも最初にppmで
install Bundle-Catalyst
でつまづいたのですが、
ppm> describe Bundle-Catalyst
としますと、説明が表示されてそこに、
「All you need to start with Catalyst」
と書かれていました。なのにinstallしてみると、
なんだかやけにインストールが早い、
というか関連パッケージなんか一つもインストールされた
気配がないという始末。
案の定catalyst.plなんてどこにも存在しない。
いったいこのBundle-Catalystって何なのだろうか?
0041nobodyさん
2006/01/19(木) 18:31:57ID:???すでに Bundle::Catalyst って CPAN にないような・・・。
んで、Bundle::なんとか のは、そのなんとかを動かすために必要な
モジュールの一覧を書いただけのもの。
なので、そいつをいれると、必要なモジュールが芋鶴式に入るです。
0042nobodyさん
2006/01/19(木) 18:35:19ID:UoYTuFspライブラリがあり、その中で今どちらから呼び出されているかを知る
必要が出てきたのですが、どのようにするのがよいのでしょうか?
既にいくつものスクリプトから利用しているので引数は変更したくなく、
環境変数で調べられないかと思い以下のようにしてみたのですが、
コメントがないと何の分岐なのか分からないので、もっとズバリの
方法がないかと思い質問した次第です。
if ($ENV{REQUEST_METHOD}) {
# CGI
} else {
# not CGI
}
よろしくお願い致します。
0043nobodyさん
2006/01/19(木) 18:44:32ID:???0044nobodyさん
2006/01/19(木) 18:44:55ID:???手元の犬糞環境で cron から printenv を呼んでみた。
cron で呼んだ場合は、なーんもそれっぽい変数出て来ないね。
REQUEST_METHOD で問題ないんじゃないですかね。
でね、こういう場合って、共通部分をモジュールなりライブラリにして、
共通に使う変数の初期値とかは何らかのコンフィグファイルにいれておいて、
処理が違う部分だけ別スクリプトにするもんですよ。
> SHELL=/bin/sh
> PATH=/usr/bin:/bin
> PWD=/home/mona
> SHLVL=1
> HOME=/home/mona
> LOGNAME=mona
> _=/usr/bin/printenv
0045ヽ(´ー`)ノ ◆.ogCuANUcE
2006/01/19(木) 18:47:13ID:???基本的にコマンドラインから動かそうが CGI だろうが同じなので、
CGI 用の環境変数で見るしか方法はないかと思うが。
http://hoohoo.ncsa.uiuc.edu/cgi/
$ENV{'GATEWAY_INTERFACE'} にすればいいんでない?
もっとも、コマンドラインか CGI かで動作が変わるライブラリってのが
設計が良くない気がするがね。
0046nobodyさん
2006/01/19(木) 18:58:26ID:???> 設計が良くない気がするがね。
そう?
0047nobodyさん
2006/01/19(木) 19:11:15ID:???> 設計が良くない気がするがね。
CGI.pmなんか、まさにそうだが・・・
0048nobodyさん
2006/01/19(木) 19:13:17ID:???分かっているライブラリを安心して使う方がいいと思う。
ライブラリを修正するときにコマンドラインの場合もCGIの場合も
問題なく動くように気にしながらやるのって面倒じゃない?
0049nobodyさん
2006/01/19(木) 19:18:25ID:???> 既にいくつものスクリプトから利用しているので
何てこともよくある。
0050nobodyさん
2006/01/19(木) 19:22:09ID:???時間が許さない場合も多いが
やると結構勉強になる
0051nobodyさん
2006/01/19(木) 19:46:27ID:???読み込み→POSTで他サーバへ送信という流れを要求されたのですが、
そのPOST送信に関しまして「それではSocketでPOST送信します」と
言ったところ、「いや、普通にHTTP通信でPOST送信してください」と
偉い人に言われました。
これの意味がどうしてもわからないのですが、ご教示いただけますと
幸いです。
すみませんが宜しくお願いいたします。
0052nobodyさん
2006/01/19(木) 19:49:36ID:???005651
2006/01/19(木) 20:29:28ID:???ご返答有難うございます。
私の中ではSocketが通常のPOST送信方法になっていたので、「普通にHTTP通信で
POST送信」というものがその他のやり方で一般的なものがあると受け止めました。
Perlで他に一般的なやり方があるのでしょうか。
hiddenは使わないとおっしゃってたので、あくまでもPerl側だと思います。
尚、同名メソッド等はございません。
>>54さん
ご返答有難うございます。
偉い人はグループ内の別会社の方で関係が関係ですのでどうしても気軽に聞けません。
そのときに踏み入って聞けなかった自分に反省しております。
>>55さん
ご返答有難うございます。
エスパーだと思われてしまったのでしょうかね。。
納期が近いので逃避と闘っております。。
0057nobodyさん
2006/01/19(木) 20:58:15ID:???> Perlで他に一般的なやり方があるのでしょうか。
perl でなくとも、ふつーは HTTP 関係のライブラリ使うもんだよ。
その仕事向いてないから、転職をお勧めする。
地面の穴掘ってる方がずっと楽だと思われ。
0058nobodyさん
2006/01/19(木) 21:08:03ID:???ワロタwww
005942
2006/01/19(木) 23:24:03ID:???やはり、GATEWAY_INTERFACEやREQUEST_METHODのようなCGIで起動された時に
必ず設定される値で判断するしかないようですね。
(念のためdefinedでチェックしますが、設定されないことってないですよね?)
本当なら環境別にI/Fを分けたかったのですが、それだと呼出し元を全て
変更しなければならず、あまり時間をかけるわけにも行かないので
今回はこの方法で対処したいと思います。
ご回答下さった皆様、本当にありがとうございました。
また何かありましたら、よろしくお願い致します。
0060nobodyさん
2006/01/19(木) 23:29:14ID:???> (念のためdefinedでチェックしますが、設定されないことってないですよね?)
2ちゃんで人に聞かないと出来ないような仕事なら、その仕事やめればいいじゃん。
0062nobodyさん
2006/01/20(金) 00:02:24ID:???0063nobodyさん
2006/01/20(金) 00:04:00ID:???0064nobodyさん
2006/01/20(金) 01:32:35ID:???0066nobodyさん
2006/01/20(金) 02:43:55ID:???0067nobodyさん
2006/01/20(金) 02:46:05ID:f2sVrFSn変数をメモリに格納するときに
$template->param(AAA => ['BBB','CCC','DDD']);
ってやって、テンプレートで参照するときって、
いちいちLOOPでまわさないとダメなの?
phpのsmaryみたいな感じで、
<TMPL_VAR NAME=AAA.[0]>
てな感じで使えると楽なんですけど。
ドキュメント読んだ限りでは見つけられませんでした。
なんかLOOP使わなくていい楽な方法ありましたら教えてください。
よろしくお願いします。
0068nobodyさん
2006/01/20(金) 02:54:20ID:???なんと申しますか、不快にさせてしまいすみませんでした。
まだ1年目なのでもう少し続けさせていただきます。
ご返答有難うございました。
0069nobodyさん
2006/01/20(金) 03:26:25ID:???JAPUたんが頻繁に居た、ん年前はよかったなー。
0070nobodyさん
2006/01/20(金) 03:28:21ID:???まだ具体的なライブラリの名前が出てないから答えておこう
HTTP::Request+LWPで簡単に出来るよ
ttp://homepage3.nifty.com/hippo2000/perltips/LWP.html
ttp://homepage3.nifty.com/hippo2000/perltips/HTTP/Request.html
ファイルを送ったり複雑なリクエストを組むならHTTP::Request::Commonも併用
ttp://homepage3.nifty.com/hippo2000/perltips/HTTP/Request/Common.html
# Larry氏が言うプログラマの三大美徳の「Laziness」ってやっぱり大事だなぁ
0071nobodyさん
2006/01/20(金) 03:58:40ID:???不可能。所詮、簡易テンプレートなので、凝ったことしたければ TT 使うのが吉。
添字付きでアクセスするぐらいなら、
$template->param(AAA => ['CCC','DDD']);
$template->param(FOO => 'BBB');
した方がいいと思うよ。
>>69
そう思うんなら自分で答えれば?俺は逆に、質問者を諫めたりしないのは嫌いだったがね。
何でもありになってしまったら、長い目で見たら質問する人間にとっても損だよ。
答える人間がいなくなるからな。
0072nobodyさん
2006/01/20(金) 08:03:07ID:???007567
2006/01/20(金) 11:59:43ID:+eNmO4sVとりあえずはできないということで諦めます。
あまり時間もないので、1度だけLOOPするかたちでしのぎます。
最近はPHPばかりで、ひさびさにPerlやってるんですが、
フレームワークやテンプレートエンジンとか
良さげのありますか? PHPは少しずつ充実してきてますよね。
ちょっとすれ違いなので、ぱっと挙げて頂ければ
自分で調べてみますので、よろしくお願いします。
0076nobodyさん
2006/01/20(金) 12:24:40ID:???>良さげのありますか?
>>71がTTと言っているが読んでないのか?こういう奴がいるからスレが荒れるんじゃないのか。
0077nobodyさん
2006/01/20(金) 12:27:13ID:2Gzq7A/g0078nobodyさん
2006/01/20(金) 17:16:58ID:???親プロセスは戻ってブラウザを開放するということはできないのでしょうか?
Web上で調べたところ、Apache1.3ではできたけど、2.0ではできなくなったとの記述を見かけました。
また、 http://mm.apache.or.jp/pipermail/apache-users/2003-November/003533.html このような
記事も見つけたのですが、自分の環境では子が終了するまで待たされてしまいました。
もしブラウザを開放する方法がありましたら、ご教授願います。
0079nobodyさん
2006/01/20(金) 17:20:29ID:???0080nobodyさん
2006/01/20(金) 17:26:00ID:???こちらに投稿したのですが、スレ違いだったでしょうか?
0081nobodyさん
2006/01/20(金) 18:08:10ID:???Perl に限った話じゃないからね。
Apache〜嗜みとして〜 Part3
http://pc8.2ch.net/test/read.cgi/php/1043851302/
CGI: Common Gateway Interface part 13
http://pc8.2ch.net/test/read.cgi/php/1126436361/
0083nobodyさん
2006/01/20(金) 21:41:40ID:???0084nobodyさん
2006/01/20(金) 22:01:24ID:???0085nobodyさん
2006/01/20(金) 22:18:00ID:???確かに問題の本質はApacheの動作についてだと思います。
しかし、求めているのは「Perlに限って」の解決法であり、ApacheやCGIのスレにいっても
特定の言語についての質問だと言われそうなので、こちらで質問した次第です。
>>82
別に動的なコンテンツを作ろうとしてるわけではないので、Ajaxは少々大げさな気がします。
RSSを複数のサイトから読み込んで、それぞれの最新のものだけを抽出し、更新時間順に
表示する、というスクリプトを作っているのですが、データの処理待ち時間が結構あるのです。
そこで、「データ処理の間お待ちください」といった感じの文を親で表示してからブラウザを開放し
子で処理が終わったら結果を表示、という感じにしたいのです。
スクリプトの本筋とは関係のない、見た目の部分だけのことなので、できないならできないで
一向に構わないのですが、もし方法があるなら…、といった感じです。
0086nobodyさん
2006/01/20(金) 22:30:38ID:???処理をやって、CGI は結果だけを出すべき。
0088nobodyさん
2006/01/20(金) 23:09:53ID:???RSS読み込み だけ ならAjaxのサンプルで語れるレベル。スレ違いスマソ。
ttp://allabout.co.jp/career/javascript/closeup/CU20050531A/index.htm
0089nobodyさん
2006/01/20(金) 23:21:49ID:???頭がまわらないんだろう。
そもそもクライアントの環境依存度高すぎ。
ああ。WebPr(ry)だからね
まあなんでそういう仕様変更があったのか知らないけど、
逆に正当な理由のある仕様変更があった上で言語依存の回避方法が発見されたら
それはそれでセキュリティホールかなんかの部類に入るのでは?
0090nobodyさん
2006/01/20(金) 23:43:25ID:???同意。
>>87
想像してごらん。
・100人の人が同時に利用する。
・リロードしまくる人がいる。
・読み込む複数のサイトが100サイトぐらいあったりする。
・鯖落ちしているサイトの反応待ちに3秒程度取られる。
キャッシュしたりして、ある程度対策は取れるけど、
最初からcron等の別プロセスで収集させれば、問題解決。
0091nobodyさん
2006/01/21(土) 00:19:27ID:???0093sage
2006/01/21(土) 03:23:01ID:pqXier510094nobodyさん
2006/01/21(土) 04:28:56ID:???http://pc8.2ch.net/test/read.cgi/php/1060009605/
おまいらついにきましたよ
0096nobodyさん
2006/01/21(土) 10:55:15ID:???STDINに対してseekは無理なんでしょうか?
0098nobodyさん
2006/01/21(土) 12:14:39ID:???ん〜、組みなおそうorz
009978
2006/01/21(土) 20:08:40ID:???だと思いました。が、残念ながら今使ってる鯖ではcronは使用できませんでした。
そこで、画像として出力されるCGIをHTMLに仕込んで、アクセスをトリガーにそのCGIを起動し
そこからexecで処理スクリプトを起動するという方法を試してみました。
execはそこで現在のスクリプトを終了して次に飛ぶということなので、そこでブラウザが
開放されるかと思ったのですが、execから呼び出したスクリプトが処理を終えるまで読み込みが
続いてしまいました。
しかし、画像に見せかけたCGIをHTMLの一番最後に持ってくれば、空白画面のままブラウザが固まる
のは回避できるので、とりあえずこれでよしとすることにします。
みなさん、いろいろとアドバイスありがとうございました。
0100nobodyさん
2006/01/21(土) 21:33:57ID:???アクセスしてあげればいいんじゃね?
0101nobodyさん
2006/01/21(土) 22:04:27ID:???0103nobodyさん
2006/01/21(土) 22:43:48ID:???自鯖たててやるくらいなら、さくらのスタンダードでも借りた方が簡単そう。
電気代もかからんし、鯖管理しなくていいし。
0104nobodyさん
2006/01/21(土) 22:48:13ID:???0106nobodyさん
2006/01/21(土) 23:13:32ID:???0107nobodyさん
2006/01/21(土) 23:21:10ID:???0108nobodyさん
2006/01/21(土) 23:25:38ID:???0109nobodyさん
2006/01/21(土) 23:26:11ID:???0110nobodyさん
2006/01/21(土) 23:35:50ID:???国語大丈夫か?
0111nobodyさん
2006/01/21(土) 23:54:13ID:???わざとの人も多いから、なんか恥ずかしいアルネ。
0112nobodyさん
2006/01/22(日) 00:08:00ID:???0114nobodyさん
2006/01/22(日) 00:57:39ID:???0115nobodyさん
2006/01/22(日) 01:26:49ID:???検索のところは、plファイル内で
#$valueはフォームから受け取った文字列
if($data =~ /$value/m){
print "$data";
}
として、検索文字列にカタカナを指定した場合はエラーになってしまうのですが何ででしょうか?
0116nobodyさん
2006/01/22(日) 01:37:04ID:???これらのことはPERLで可能ですか?
PERLでプログラムを作って条件にあわせて、メールアドレス宛に
いってほしいURLを生成して送ります。
↓
そのメールが送ってきた人がそのURLをクリックして、リンク先にいくと
結果が載っていて、その結果は多数のHTMLのページをスタイルシートを利用して
1ページにまとめて組み合わせたものになっている。
というようなことは出来ますか?
簡単に言えば、
ページ1で山田さんがAとBとCの中からAを選び、DとEとFの中からEを選びます。
↓
すると、山田さん宛にAとEの内容が記述されたページのURLが届きます。
↓
そのURL先のページもcgiによって生成される(メールからAとEの変数を渡すことになるのかな?)
↓
その表示されたページは複数のHTMLページをあらかじめ作っておいて、それらを呼び出して、組み合わせで出来上がる。この場合AとEを呼び出す
0117116
2006/01/22(日) 01:38:53ID:???あらかじめHTMLページを用意しておいて、変数にしたいところのタグだけ $HOGEHOGE のようにしておいて、
cgiのほうに読み込み、$HOGEHOGEの変数の値を適用させて表示することって可能ですか?
0118nobodyさん
2006/01/22(日) 01:42:24ID:???>そのメールが送ってきた人がそのURLをクリックして、
ちゃんとした日本語文で書いてくれ
0119116
2006/01/22(日) 01:42:52ID:???の部分ですが、URLから判定させること出来ないですか?
その行き先のURLは一律で http://www.hogehogehoge.com/hoge.cgi というように決まっていて
hoge.cgi以降にAとEが表示されるように
http://www.hogehogehoge.com/hoge.cgi?A&E
みたいなURLを先ほど記述したメールで送っていて、これをクリックすると
hoge.cgiがAのhtmlとEのhtmlを組み合わせればいいということを判定して
これらをスタイルシートを使って組み合わせて1ページで出力するということです。
説明が分かりづらくてごめんなさい。
0122nobodyさん
2006/01/22(日) 02:12:52ID:???''(0バイト文字列)または'.'または'..'と言う文字列に「のみ」
合致する正規表現ってどう書けばいいですか?
「〜を含む文字列」なら自力でも書けそうな気がするんですが・・・orz
0126nobodyさん
2006/01/22(日) 02:49:48ID:???Perl 以前の問題
逆に聞きたいが、「スタイルシートを使ってページを組み合わせる」と自分で
書いているが、これは XSLT か? 「スタイルシートを使って組み合わせる」
という方法はいったいどこで聞きかじったんだ?
0128nobodyさん
2006/01/22(日) 03:59:08ID:???0130nobodyさん
2006/01/22(日) 06:28:00ID:???・htmlのselectでも使って選択させ、その内容をcgiに発射
↓
すると、山田さん宛にAとEの内容が記述されたページのURLが届きます。
・cgiで受け取った情報を元にURL作ってsendmailかなんかでメール発射
↓
そのURL先のページもcgiによって生成される(メールからAとEの変数を渡すことになるのかな?)
・受け取ったURLを押すとcgiが起動
↓
その表示されたページは複数のHTMLページをあらかじめ作っておいて、それ
AとEのhtmlを読み込み”s/$HOGEHOGE/なにか/g;”かなんかで変更して一緒に表示
単純すぎて説明しずらいorz
てか、ほんとにperlできるの?
0132nobodyさん
2006/01/22(日) 07:45:24ID:???1) 山田が hoge.cgi?select1=A&select2=E で発射
2) piyo.cgi?para=A、piyo.cgi?para=E というURL付メールが届く
3) piyo.cgi?para=A、piyo.cgi?para=E が加工したページを表示
簡単にPerlで実現できると思うのだが。
0133nobodyさん
2006/01/22(日) 08:12:49ID:???どこが解らないか言ってもらえれば詳しく解説したり、
モジュールを薦めたりいろいろやりようもあるんだがねぇ
# >>130の最後の一文を「ほんとにperlでできるの?」と読んで
# 130にレスを返そうとしてしまった件...アブナカッタ
0134nobodyさん
2006/01/22(日) 08:15:06ID:???1) 山田が hoge.cgi?select1=A&select2=E で発射
2) piyo.cgi?para=AE というURL付メールが届く
3) piyo.cgi?para=AE が加工したページを表示
だろ
piyo.cgi?para1=A¶2=E でもいいけど。
0135nobodyさん
2006/01/22(日) 08:17:25ID:???&amp;って書かないと駄目なのか
験し→&
0138nobodyさん
2006/01/22(日) 09:43:12ID:???0139nobodyさん
2006/01/22(日) 10:52:36ID:???それぞれの処理を Perl のどの機能を利用して実現したらいいのか
具体的なイメージが湧いていないように見える。慌てずに一つずつ
自分で対処してくれ。他にもいろいろ書かれているが、個々の処理は
どれも難しくないが、>>117 を読む限り、目的の処理全体を実現
するには君の力はまだかなり足りない。
0140nobodyさん
2006/01/22(日) 12:37:05ID:???例えば、passwdコマンドにパスワードを渡してその結果を得るにはどうすればいいのでしょう。
渡すだけならばopen(PASS,"| /usr/bin/passwd")で出力用パイプでできるのですが、
これだと結果を変数へ受け取れません。
試しに入力と出力のパイプを二つつけてみましたが、
Can't open bidirectional pipe
と言われてしまいました…。
0142nobodyさん
2006/01/22(日) 12:45:31ID:???ここはpasswdが、受け取るべき値を返すものと仮定してください…。
実際にやろうとしているコマンドはCourier-IMAPのuserdbpwです。
0143nobodyさん
2006/01/22(日) 12:47:03ID:???は…速い。
それですと値を渡せないと思います。
こちらから値を渡して、なおかつその結果を受け取りたいと思っています。
0144nobodyさん
2006/01/22(日) 12:53:47ID:???PIPEを入力と出力両方開くだけならこれ
http://search.cpan.org/~abergman/ponie-2/perl/lib/IPC/Open2.pm
しかしpasswdのような特殊な入力方式を使っているものでできるかは知らない…
0145nobodyさん
2006/01/22(日) 13:16:41ID:???おお、これでできそうな気がしますが…、すごいサイズのモジュールですね。
configureだけしてみましたが、大量のファイルを呼んでいる上に
なぜだかすごいWARNINGができるのちょっと入れるをの躊躇してしまいます…。
もう少し他の方法を探ってみます。
どうもありがとうございました。
0146nobodyさん
2006/01/22(日) 13:26:12ID:???あ、貼ったリンクのURLが悪かった、スマソ
IPC::Open2とIPC::Open3は標準モジュールだよん
0147nobodyさん
2006/01/22(日) 13:47:43ID:???おかげさまで何とかできました。
ただWriter->autoflush(1)とするとなぜか
Can't locate object method "autoflush" via package "IO::Handle"
といわれることや、closeしなくていいのか、という疑問がありますが、
自分で使う用のスクリプトなので、とりあえず今は目をつむることにします。
とても助かりました。
どうもありがとうざいました。
0149nobodyさん
2006/01/22(日) 14:33:51ID:???(゚Д゚)
0150116
2006/01/22(日) 15:08:15ID:???==========================================================================================================
HTMLページ(select使って変数発射)→hoge.cgiが条件などがURLを生成してメール送信→URLのpiyo.cgi?PARA=AEにAとEの
両方のページがインラインフレームを使って表示される。
==========================================================================================================
・htmlのselectでも使って選択させ、その内容をcgiに発射
↓
すると、山田さん宛にAとEの内容が記述されたページのURLが届きます。
・cgiで受け取った情報を元にURL作ってsendmailかなんかでメール発射
↓
そのURL先のページもcgiによって生成される(メールからAとEの変数を渡すことになるのかな?)
---------ここまでの過程はすべて自分でプログラムできます------------
分からないのは、ここからで、どのような処理を施せば、hoge.cgiが
・メール受け取ったURLをクリックするとpiyo.cgiが起動
↓
その表示されたページは複数のHTMLページをあらかじめ作っておいて、それ
AとEのhtmlを読み込む。
これですね。piyo.cgiが URLの piyo.cgi? 以降をどのような処理で読み込んで
AとEを合わせて表示しろ っていう処理の方法が分からなくて困っています。
0151150
2006/01/22(日) 15:13:29ID:???HTMLページ(select使って変数発射)→hoge.cgiが条件などからURLを生成してメール送信→URLのpiyo.cgi?PARA=AEにAとEの
両方のページがインラインフレームを使って表示される。 ^^^^
==========================================================================================================
訂正です。 条件など「から」 でした。すいません
0152nobodyさん
2006/01/22(日) 15:46:09ID:???そこがいちばん簡単だと思うんだがなぁ。
つーかなぜインラインフレームにこだわるのかも分からないけどね。
完成している HTML を2つくっつけたら明らかにおかしなことになるし。
なんか自分で変な条件をつけてはまってないか?
おれなら
1. パラメータを解釈して
2. 対応するファイルを開いて読み込み
3. <body></body> の間を抜き出して
4. これをファイル分くり返して
5. くっつけて print
して終わり。インラインフレームは使わない。
0153nobodyさん
2006/01/22(日) 16:01:49ID:???すいません、ここの箇所だけが分からなくて。。。
その方法でかまわないと思います。
パラメーターの解釈ってどうなるんですか?
そのcgiのURLを引っ張り出して、そこに PARA=Aが含まれるか?とかですか?
もし、よければどのような形になるか書いてもらえませんでしょうか?
例えば、呼び出すA.htmlの中身は
<HTML><HEAD></HAED><BODY> A </BODY><HTML>
呼び出すB.htmlの中身は
<HTML><HEAD></HAED><BODY> A </BODY><HTML>
としてですね。
0154nobodyさん
2006/01/22(日) 16:15:37ID:???0155nobodyさん
2006/01/22(日) 16:23:24ID:???「ここの箇所だけ」が分からないんじゃない。
それが分からないのは CGI の基礎が全然分かってないってこと。
0156nobodyさん
2006/01/22(日) 16:31:34ID:???ここは小学生の相手をする学童保育所じゃないんで、
CGIの仕組みを勉強してから来てね
0157nobodyさん
2006/01/22(日) 16:42:49ID:???0158nobodyさん
2006/01/22(日) 17:20:29ID:???登録時にプルダウンメニューから入力させているのですが
登録内容の変更・削除時にあらかじめ登録していた内容が
プルダウンで表示されるようにすることはできるのでしょうか?
<OPTION>タグでselected指定をすれば実現すること自体は分かっているのですが。
どうしても難しそうだったら、変更の度に新たに入力し直してもらおうと思ってはいますが
登録側に不親切だと思うので、できれば実現したいです。
0159nobodyさん
2006/01/22(日) 17:47:41ID:???1. 「あらかじめ登録していた内容」を読む。
2. それに基いて適宜 selected な <option> を吐く。
必要なのはこれだけ。
どうしても難しそうなのは、回答の度に新たな質問が生成し直されそうな点ですが
回答側が不機嫌になりかねないので、できればもう少し基礎を学んで欲しいです。
0160158
2006/01/22(日) 17:52:20ID:???ごめんなさい、そしてありがとう。
0161nobodyさん
2006/01/22(日) 18:08:15ID:???0162nobodyさん
2006/01/22(日) 18:34:46ID:???メールにインラインフレームの記述した HTML を書き個数だけ用意して、
メールにその HTML のアドレスを書きゃぁいいのでぁ?
AD, AE, AF
BD, BE, BF
CD, CE, CF
0164nobodyさん
2006/01/22(日) 18:59:27ID:???いちいちレスしている暇があるなら、CGIの基礎を学んでこい!
その方が早い。
マジ話、基礎中の基礎だからな。
ちょっと勉強すればわかるって程度の話なんだからな。
0165nobodyさん
2006/01/22(日) 21:29:59ID:???とか思ったり
0166nobodyさん
2006/01/24(火) 23:59:54ID:8wVWM4jMということをしたいのですが、エラーになってしまいます。
どこが間違えていますか?
がんばって考えてみたがエラーで鬱な部分_| ̄|○
↓
if($in{"q1"] ne ""){ $message2 .= $in{"q1"]; }
0167166
2006/01/25(水) 00:01:27ID:Ofc3DeTHcgi-lib.plを使って、$in{"q1"}で変数の中身を取り込んでいます。
0168nobodyさん
2006/01/25(水) 00:04:06ID:???if($in{"q1"] ne ""){ $message2 .= $in{"q1"]; }
〜 〜
なんというか…フォント変えたほうが良いんじゃないか…
0169nobodyさん
2006/01/25(水) 00:09:09ID:???}と]の間違い
単純に
if($in{"q1"}){ $message2 .= $in{"q1"}; }
じゃまずいのか?
0170nobodyさん
2006/01/25(水) 00:09:29ID:Ofc3DeTHぐはーーーー、これで3日間悩んでいますた。
ありがとうございます・・・うぅ。
まさかこんなオチとは_| ̄| . . . ○
0171nobodyさん
2006/01/25(水) 00:10:36ID:Ofc3DeTHありがとうございます。
「空かどうかの判断」はそういう記述でもOKなんですね。
0172nobodyさん
2006/01/25(水) 00:14:24ID:???それだと"0"のときも空扱いなのに注意。
むしろ空なんだったら繋いでも結果変わらないんだから
$message2 .= $in{"q1"};
これだけで良くない?definedか調べるのなら解るけど
# 漏れの書き込みがずれてるし…フォント変えとこう:-p
0173nobodyさん
2006/01/25(水) 01:45:33ID:???でいいんじゃないかな・・・
0175nobodyさん
2006/01/25(水) 02:10:15ID:???$text1, $text2, . . . $text50
改行処理をして、
$text1
$text2
$text3
.
.
.
$text50
としたいのですが、文字列に全角36文字文で「\n」を入れたいんです。
半角や数字・記号等が混じっているのですが、どのように挿入するのでしょうか?
0176nobodyさん
2006/01/25(水) 02:13:47ID:???0177nobodyさん
2006/01/25(水) 02:15:29ID:???0178nobodyさん
2006/01/25(水) 02:16:22ID:???0183181
2006/01/25(水) 02:46:39ID:???require "jcode.pl";
require "fold.pl";
require "cgi-lib.pl";
$bytes = '72';
$text=$in{"text"};
jcode::convert(\$text, "euc");
while (length($text)) {
(my $text_mod, $text) = fold($text, $bytes);
$text_mod .= $folded, "\n";
}
print "$text_mod";
最終的には改行された(\nの入った) $text_modができたらいいのに難しいです・・・。
0185nobodyさん
2006/01/25(水) 02:55:57ID:???>>184
配列を使おうと勉強しているのですが、
@が出ると眠くなってしまうので、できたためしがありません。
@_ とかの独特の表記がまだ飲み込めません。
0187nobodyさん
2006/01/25(水) 03:49:07ID:???0188nobodyさん
2006/01/25(水) 04:10:50ID:???0189nobodyさん
2006/01/25(水) 10:15:17ID:???> > @が出ると眠くなってしまうので
> おまえはトンボか? グルグルグル。
ウケタ...今度使わせて貰うw
0190nobodyさん
2006/01/25(水) 10:55:53ID:???△
0191nobodyさん
2006/01/25(水) 22:22:06ID:???$AAA[0]=$AAA[0]+1+$RR;
$AAA[1]=$AAA[1]+1+$RR;
と
$AAA[1]=sprintf("%03d",$AA[1]);
$AAA[2]=sprintf("%03d",$AA[2]);
って、もっと効率よく記述できませんでしょうか
0192nobodyさん
2006/01/25(水) 22:29:35ID:???0193nobodyさん
2006/01/25(水) 22:38:09ID:???map とか foreach とか。
@AAA = map { $_ + 1 + $RR } @AAA;
$_ = $_ + 1 + $RR foreach @AAA;
@AAA = map { sprintf('%03d', $_) } @AA;
0194nobodyさん
2006/01/25(水) 22:38:35ID:???効率よくするのはその部分だけ見せられてもほとんど無理だが、
見やすくするならforeachやmapが有効。
その操作は配列全体に行うの?配列全体になら
$RR = int(rand(2)) + 1;
$_ += $RR foreach @AAA;
及び
@AAA = map { sprintf("%03d",$_) } @AA;
配列の一部だけなら@AAA[0,1]のように配列の一部を指定すればOK。
その場合それが見やすくなるかは微妙だけど
0197nobodyさん
2006/01/25(水) 23:46:22ID:???$hoge = '10';
&fuga($hoge);
print $hoge;
sub fuga(){
$aaa = @_ + 50;
return $aaa;
}
結果は「60」になると思ったのですが「10」でした。どこかが間違えているのでしょうか?
$hoge に fugaサブルーチン を通した結果を表示させたいです。
0198nobodyさん
2006/01/25(水) 23:50:34ID:???0199197
2006/01/26(木) 00:03:19ID:???$hoge = '10';
&fuga($hoge);
print $hoge;
sub fuga(){
$aaa = @_ + 50;
return;
}
returnだけで値を返したつもりですがこれでも「10」です・・・。
0200nobodyさん
2006/01/26(木) 00:11:19ID:???@hoge = (10, 20, 30);
print &fuga(@hoge);
sub fuga(){
my($total);
foreach (@_){
$total += $_;
}
return $total;
}
0201nobodyさん
2006/01/26(木) 00:37:33ID:???$moge = fuga($hoge);
print $moge;
sub fuga(){
$aaa = $_+50;
return $aaa;
}
0202nobodyさん
2006/01/26(木) 00:46:45ID:???$hoge = 10;
$moge = fuga($hoge);
print $moge;
sub fuga(){
$aaa = $_[0]+50;
return $aaa;
}
0203nobodyさん
2006/01/26(木) 02:00:59ID:???ちょっと↑見たら早速両方のパターン
&あるとわかりやすいとかくらいしかメリットないのかな
0204nobodyさん
2006/01/26(木) 02:25:15ID:???この質問結構出るな…
この話題から論争になったことがあるのでFAQを挙げるだけに留めて置く事にする。
ttp://www.kt.rim.or.jp/%7Ekbk/perl5.005/perlfaq7.html#What_s_the_difference_between_ca
漏れの好みとしては必要ないなら&つけない
0205nobodyさん
2006/01/26(木) 03:21:18ID:???&foo();
のようにしてる。
渡す値が無くても括弧はつけてるかな。
ちゃんと関数が呼ばれて意図した動作なら「お好きなように」って感じかな
0206nobodyさん
2006/01/26(木) 06:40:19ID:???time 関数を HiRes モジュールからインポートして使おうと思っているのですが、
インポートする際に関数を別名でインポートすることはできますか?
HiRes の time() は mtime() とかっていう名前で扱いたいので・・・
0207nobodyさん
2006/01/26(木) 06:51:16ID:???0208nobodyさん
2006/01/26(木) 06:56:34ID:???use Time::HiRes;
BEGIN { $::{mtime} = *Time::HiRes::time }
0209nobodyさん
2006/01/26(木) 06:58:32ID:???なんか気持ち悪いw
&mtime();
のようにして呼び出すことはモジュールを書き換えない限り無理ってことなのかな?
0210nobodyさん
2006/01/26(木) 06:59:05ID:???0211208
2006/01/26(木) 07:03:01ID:???>>206
Time::HiResはExporterを使ってExportしているだけなので、
Exporterがやる仕事を自前で書いてやれば良い。
で、それは何かというと使用する側のパッケージのシンボルテーブルに
指定されたシンボルをエクスポートするということなので
BEGINブロックの中でその操作を行うと>>208のようになる
0212nobodyさん
2006/01/26(木) 07:10:34ID:???Exporter とか BEGIN とかそこらへんを勉強してきます。
ありがとうございました。
0213nobodyさん
2006/01/26(木) 09:55:58ID:o/1/VUZ9sub bynumber{ $a <=> $b}; }
@number = sort bynumber @number;
配列の値を数値で並べる方法なんだそうだが、
サブルーチンがどういう働きしてるかさっぱりわからん。
誰か解説お願いします。
0214nobodyさん
2006/01/26(木) 10:27:31ID:???些細なことなんですが・・・
*Time::HiRes::time
の time のケツにセミコロンがありませんが (strict で書いてるけどエラー無し)、付けたほうがいいです・・・よね?
0215nobodyさん
2006/01/26(木) 10:29:21ID:???昇順でソート
配列に入れる値が既に並んでしまってるのでもっとばらけて入れてみるとわかるかと
ちなみに
$b <=> $a
ってすると降順になります
0216nobodyさん
2006/01/26(木) 10:33:59ID:???http://perldoc.jp/docs/perl/5.6.1/perlfunc.pod#item_sort_LIST と
http://perldoc.jp/docs/perl/5.6.1/perlop.pod の「Equality Operators」参照。
>>214
つか
use Time::HiRes (); # どのシンボルも輸入しない
# サブルーチンだけを現在の名前空間に選択的に輸入
BEGIN { *mtime = \&Time::HiRes::time }
の方が良い。
0217213
2006/01/26(木) 11:11:15ID:???それは知ってるんですが原理がわからない・・・
>>216
そこに書いてあること読んだらなんとなくわかったような・・・
サンクスです。もうこれはこういうものとして覚えておきます。
0218nobodyさん
2006/01/26(木) 11:25:41ID:???・$aと$bというグローバル変数に比較用の2つの値が入れられる
・<=>やcmp演算子は比較して-1か0か1を返す
・sortに与えられたサブルーチンの戻り値が-1か0か1かでどう入れ替えるか決定する
例えば @new = sort { 1 } @old; とすればsort演算子は全ての比較結果が1となったものと認識する。ソートにならないが。
0220nobodyさん
2006/01/26(木) 14:24:27ID:ltI+aLo5$1と$2のリストをそれぞれ違う配列に入れたいのですがどのようにしたら良いでしょうか?
どなたか教えて頂けると嬉しいです。。
0221nobodyさん
2006/01/26(木) 14:27:08ID:???push(@list2, $2);
0222220
2006/01/26(木) 14:33:36ID:???###$data###
3 6
2 8
9 2
となっていたとき、
@test == qw(3 2 9);@test2 == qw(6 8 2);
となる様に/(\d) (\d)/の正規表現を利用して処理をしたいです。
二回正規表現を通して処理をすることも出来るのですが、単純に二倍の処理量になってしまうので。。
0224nobodyさん
2006/01/26(木) 14:52:35ID:???my $data = <<'EOD';
3 6
2 8
9 2
EOD
my(@test, @test2);
push(@test, $1), push(@test2, $2) while $data =~ /(\d) (\d)/g;
print join ' / ', 'test', @test, "\n";
print join ' / ', 'test2', @test2, "\n";
0226nobodyさん
2006/01/26(木) 15:08:19ID:pZnDhk3yなゆ板 を探してます。
なゆ板本体一式、提供よろしく。
0228nobodyさん
2006/01/26(木) 15:49:07ID:???【CGI】こんなCGI探してますver.19
http://pc8.2ch.net/test/read.cgi/hp/1134255607/
0229nobodyさん
2006/01/26(木) 15:57:50ID:pZnDhk3yありがとん
0230nobodyさん
2006/01/27(金) 02:13:52ID:fitN0QJiどうしても分かりません。
どうして下記スクリプトのパターンA/Bは違う結果が出るのでしょうか?
---
#!/usr/bin/perl
use strict; use Jcode;
my $henka= "%CA%D1%B2%BD"; #EUC / URIエスケープ / 変化
my $encoding = 'utf8';
my $j = new Jcode;
# パターンA
my $a1 = uri_decode( $henka ); my $a2 = encode( $a1, 'utf8' );
# パターンB
my $b = encode( uri_decode( $henka ), 'utf8' );
# 書き出し
print "Content-type: text/html\n\n";
print "パターンA:" . $a1 . " / " . "<br />パターンB:" . $b;
exit;
# サブルーチン
sub encode {
my( $str, $enc ) = @_;
$enc = $encoding unless( $enc );
return( $j->set(\$str)->$enc );
}
sub uri_decode {
my $str = shift;
$str =~ tr/+/ /;
$str =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack('H2', $1)/eg;
return( $str );
}
0231230
2006/01/27(金) 02:15:51ID:???見づらいかも知れません。
なお、Perl 5.8.3
スクリプトの文字コードはUTF-8です。
0233230
2006/01/27(金) 02:52:17ID:fitN0QJiEUC-JPでURIエスケープされた「変化」である
「%CA%D1%B2%BD」を取得したいのですが、
どうしても出来ません。
どなたかご指摘いただけないでしょうか?
Perl 5.8.3 / UTF-8
---
#!/usr/bin/perl
use strict;
use warnings;
use Jcode;
my $word = "変化";
my $j = new Jcode;
# EUCに変換
my $word = $j->set(\$word)->euc;
# URIエスケープ
$word =~ s/([^\w ])/'%'.unpack('H2', $1)/eg;
$word =~ tr/ /+/;
# 書き出し
print "Content-type: text/html\n\n";
print $word;
exit;
0234nobodyさん
2006/01/27(金) 03:01:30ID:???0235233
2006/01/27(金) 03:07:08ID:???いや、他の単語だと問題なく取得できるんですよ。
ちなみにURIエスケープは、Perlメモさんのコードを流用しています。
昔よく見たsjis系の文字化けのEUC版かな?と思いきや、
ネットにそういう情報転がってないですし…
正直、お手上げ状態になってます。
0236nobodyさん
2006/01/27(金) 03:16:24ID:???0237nobodyさん
2006/01/27(金) 03:16:57ID:???0239nobodyさん
2006/01/27(金) 03:26:57ID:???my $word = $j->
2回myしてるのは何か意味ある?失礼ながらだけど。
0240nobodyさん
2006/01/27(金) 03:27:15ID:???ネットに情報、転がってますよ。
ttp://naoya.dyndns.org/~naoya/mt/archives/000611.html
ttp://www.hikoboshi.org/perl/doc/encode.html
ttp://www.namazu.org/~tsuchiya/perl/perl-5.8.html
0241nobodyさん
2006/01/27(金) 03:31:49ID:???「できません」じゃなくて
「これこれの結果を期待したが結果はこれこれでした」でしょ。
あと他の例だとどうなったとか。
まぁぶっちゃけそんなこと書かなくても解るがな。
0242nobodyさん
2006/01/27(金) 03:36:30ID:???単にJcodeが渡された文字のエンコード判定できなかっただけだと思う。
my $word = $j->set(\$word,'utf8')->euc;
ってやってみ。
0243233
2006/01/27(金) 03:43:34ID:???よれよれ具合を如実に表してます。typoですorz
>>240
UTF8フラグに関わることしてないと思うんですが
いかがでしょう?
>>241
ごくシンプルな例なので必要ないかと判断しました。
でも言葉足らずだったとは思います。
ご指摘ありがとうございました。
>>242
ビンゴでした!
入力コードの自動判定失敗の理由は不明ですが、
常に明示しておいた方がよさそうですね。
ありがとうございます。
0244nobodyさん
2006/01/27(金) 09:39:12ID:???処理A
処理A終了・・・
system("hoge.pl 43232"); ←これの中でsleep 30;をやっている
みたいな書き方だと、一部のブラウザでは30秒ウェイトが発生してしまいます。
普通に、コマンドみたいな形でキックしたいだけなんですが、system以外に何か良いコマンドはないでしょうか?
0246ヽ(´ー`)ノ ◆.ogCuANUcE
2006/01/27(金) 12:17:01ID:???待ち状態なら後からキャンセルもできるし。
0247nobodyさん
2006/01/27(金) 12:55:57ID:???使えれば便利だろうけど。
0248nobodyさん
2006/01/27(金) 13:46:48ID:???else {}
と
if (A != B) {}
else { }
とでは、どちらが速いでしょうか
0249nobodyさん
2006/01/27(金) 14:04:36ID:???0250nobodyさん
2006/01/27(金) 15:34:07ID:???0251nobodyさん
2006/01/27(金) 15:41:22ID:???0252nobodyさん
2006/01/27(金) 15:44:22ID:???0253nobodyさん
2006/01/27(金) 15:48:33ID:???気になるなら自分で調べるなりさー…
100万回くらい繰り返さないと差なんて出ねーよ。
Benchmark: timing 1000000 iterations of not_equal, unless...
not_equal: 0 wallclock secs ( 0.20 usr + 0.00 sys = 0.20 CPU) @ 4950495.05/s (n=1000000)
(warning: too few iterations for a reliable count)
unless: 2 wallclock secs ( 0.27 usr + 0.00 sys = 0.27 CPU) @ 3759398.50/s (n=1000000)
(warning: too few iterations for a reliable count)
0255nobodyさん
2006/01/28(土) 05:56:33ID:ZADCbzDw$bに文字[def]が入っていた場合、 $a1 = hogehoge;
みたいにすることはできますでしょうか?
0256nobodyさん
2006/01/28(土) 06:54:55ID:???$a1 = ''hoge;
}
if($b eq 'def'){
$a1 = ''hogehoge;
}
もし $b の 処理のとき $a1 に何かが入っていない場合であるなら
if(!$a1 && ($b eq 'def')){
で
0257nobodyさん
2006/01/28(土) 06:55:30ID:???$a1 に代入する文字列が '' の外に出ちゃってるw
0258256
2006/01/28(土) 07:08:29ID:ZADCbzDwありがとうございます
でもこれとはちょっと違うんです
説明下手ですみません
$a = [email protected]だとして
[@xx.xx]の場合、$a1 = @hoge.ne.jp;を代入
$a = [email protected]だとして
[@yy.yy]の場合、$a1 = @hogehoge.ne.jp;を代入
みたいな感じで代入したいんです。
これは可能でしょうか?
何どもすみません
0259nobodyさん
2006/01/28(土) 07:15:16ID:???my($newhost);
if($host eq 'abcdefg.ne.jp'){
$newhost = 'hoge.ne.jp';
}elsif($host eq 'vwxyz.co.jp'){
$newhost = 'hogehoge.ne.jp';
}else{
$newhost = 'heogehogehoge.or.jp';
}
0260256
2006/01/28(土) 07:18:06ID:ZADCbzDwもし$aが文字列[abc]を含んでいたら
$a1 = hoge;
# $a = "abc123"; だとしてもこの処理を行う
もし$aが文字列[def]を含んでいたら
$a1 = hogehoge;
# $a = "def123"; だとしてもこの処理を行う
0261nobodyさん
2006/01/28(土) 07:23:22ID:???そうと信じて最後に・・・
my($mailaddress, $newhost);
if($mailaddress =~ /abc/i){
$newhost = 'hoge.ne.jp';
}elsif($mailaddress =~ /def/i){
$newhost = 'hogehoge.ne.jp';
}else{
$newhost = 'heogehogehoge.or.jp';
}
0263nobodyさん
2006/01/28(土) 07:35:30ID:???これが sort に関してだったら返事してないw
>262
面倒だから正規表現でやったお
0264nobodyさん
2006/01/28(土) 07:37:21ID:???0265nobodyさん
2006/01/28(土) 07:38:02ID:???0266255
2006/01/28(土) 07:45:20ID:ZADCbzDwどれもできませんでした(^^;
>>261さん、わかりにくいくてすみません
アドレスをフォームで送ってもらい、そのアドレス欄
$mailに docomoの文字が入っていた場合、
$mailto = [email protected]
$mailに ezの文字が入っていた場合、
$mailto = [email protected]
みたいな文字列を返したいんです
わかりにくいですかね(^^;
0267nobodyさん
2006/01/28(土) 07:59:12ID:???my($user, $host) = split(/\@/, $mail);
if($host =~ /docomo\.ne\.jp$/i){
# DoCoMo の場合の処理
}elsif{$host =~ /ezweb\.ne\.jp$/){
# au の場合の処理
}elsif{$host =~ /[dhtcrknsq]\.vodafone\.ne\.jp$/i){
# vodafone の場合の処理
}else{
# どれにも一致しない場合
}
0268nobodyさん
2006/01/28(土) 08:00:51ID:???my($user, $host) = split(/\@/, $mail);
if($host =~ /^docomo\.ne\.jp$/i){
# DoCoMo の場合の処理
}elsif{$host =~ /^ezweb\.ne\.jp$/){
# au の場合の処理
}elsif{$host =~ /^[dhtcrknsq]\.vodafone\.ne\.jp$/i){
# vodafone の場合の処理
}else{
# どれにも一致しない場合
}
0269nobodyさん
2006/01/28(土) 08:09:12ID:???0270nobodyさん
2006/01/28(土) 08:21:36ID:Tyr9AIOh知ったかすんな(^ω^)
0271nobodyさん
2006/01/28(土) 08:25:12ID:???0272nobodyさん
2006/01/28(土) 08:26:52ID:???0273nobodyさん
2006/01/28(土) 08:28:37ID:???>272
0274255
2006/01/28(土) 08:29:15ID:ZADCbzDwもし分かるようでしたら教えてください
お願いします
0275nobodyさん
2006/01/28(土) 08:35:41ID:???>270は突付いてみただけで何も書けない人なので待つだけ無駄だよん(^ω^)
0276255
2006/01/28(土) 08:43:35ID:ZADCbzDwそうでしたか
皆様ありがとうございました
できなかったんですが
これを参考にsplit(よくわかんない)から勉強しなおしてきます
どうもありがとう
0277nobodyさん
2006/01/28(土) 08:46:09ID:???/\@docomo\.ne\.jp$/i
とかでもOKです。
0278nobodyさん
2006/01/28(土) 08:53:28ID:ZADCbzDw&ReadParse(*in);
って数字以外扱えないとかありますか?
0279nobodyさん
2006/01/28(土) 08:54:03ID:???0280nobodyさん
2006/01/28(土) 09:14:12ID:ZADCbzDw#!/usr/bin/perl
require 'cgi-lib.pl';
&ReadParse(*in);
my $acc = $in{'a'};
my $url = $in{'u'};
if($url = ~/ne\.jp$/i){
$st = "31";
}else{
$st = "23";
}
$ge = $st*$acc;
print <<"EOM";
content-type:text/html\n
<html><head><title>hoger</title></head><body>\n
<a href="$url">$url</a><br>
答えは$geです。<br>
</body></html>
EOM
exit;
0281nobodyさん
2006/01/28(土) 09:16:38ID:???主語述語どころかさっきよりも日本語変になってんじゃんけ
0282nobodyさん
2006/01/28(土) 09:23:48ID:ZADCbzDwすいません
言葉ではうまくいえないので
スクリプトさらしたほうがいいかと思って…
0283nobodyさん
2006/01/28(土) 09:25:17ID:???どこか間違えてますでしょうか?
ソース開始
エラー内容開始
って書くのが普通じゃないかなと
0284nobodyさん
2006/01/28(土) 09:29:23ID:ZADCbzDwフォローありがとうございます
エラーは
<a href="$url">$url</a>が正しく表示されない(31となる)
どんなURLでもすべて["31"]が返ってくる
です
一応動作はします
0285nobodyさん
2006/01/28(土) 09:31:49ID:???=~ ne\.jp$/i は「文字列の最後が ne.jp で終わっていれば」って意味だから
日本の大概のプロバイダのメールアドレスは一致するだろう
0286nobodyさん
2006/01/28(土) 13:28:07ID:Tyr9AIOh0287nobodyさん
2006/01/28(土) 13:40:33ID:???前も見たな、こんなの
> if($url = ~/ne\.jp$/i){
正規表現マッチは =~ であって = ~ は意味が違う
0288nobodyさん
2006/01/28(土) 13:59:03ID:ZADCbzDwありがとうございます!
それが原因でしたm(_ _)m
でもこれって最後の文字が[ne.jp]だったらってことですよね?
文の途中に入ってても処理してくれるようにはできないんですか?
しつこいようですがお願いいたします
0289nobodyさん
2006/01/28(土) 14:05:22ID:???0290nobodyさん
2006/01/28(土) 17:23:41ID:ZADCbzDw正規表現マッチかなり便利そうですね
まだPerlかじりかけでして、
初歩的な質問ばかりしてご迷惑かけたことお詫びします><
これ見てやってみようと思います
0291nobodyさん
2006/01/28(土) 17:52:35ID:???LWPやHTTP:Liteというモジュールを使う方法をがあるようですが
これらが一般的でしょうか?
プロバイダのサーバにはインストールされていないようなので
他にも方法があれば教えてください。
0292nobodyさん
2006/01/28(土) 18:32:38ID:???だうそして、例えば Lib というディレクトリにおいて、
use lib "./Lib";
とやれば普通に require したり use したりできるようになるはずだべ。
0293nobodyさん
2006/01/28(土) 18:34:53ID:kB13KdYyクッキーをセットするサブルーチンで、
print "Content-type: text/html; charset=Shift_JIS\n";
print "set-Cookie: $COOKIE_NAME=$value; expires=$date\n\n";
と出力していて、うまくセットされていたのですが、このサブルーチン
より先に別のサブルーチンを呼び出すよう変更した途端、クッキーがセ
ットされなくなりました。その先に呼び出すサブルーチンその中に
print "Content-type: text/html; charset=Shift_JIS\n";
があるためと思われますが、クッキーセットのサブルーチンの
print "Content-type: text/html; charset=Shift_JIS\n";
を削ってもうまくセットされません。どうしてでしょうか?
0294nobodyさん
2006/01/28(土) 18:43:16ID:???0295293
2006/01/28(土) 18:54:28ID:HCtuTUwqはい。その通りです。どうしたら良いでしょうか?
0297nobodyさん
2006/01/28(土) 19:08:44ID:???>print "Content-type: text/html; charset=Shift_JIS\n";
お前、この文の意味わかってるか?
0298293
2006/01/28(土) 19:43:54ID:3C15B2MWすいません。分かりません。教えて下さい。
0300293
2006/01/28(土) 21:21:54ID:wIuX5Wplどなたか引き続き教えて下さい。
0301nobodyさん
2006/01/28(土) 21:24:40ID:???0303nobodyさん
2006/01/28(土) 22:56:49ID:???何%終了のようなメッセージをどうしたら出力できますか?
0304nobodyさん
2006/01/28(土) 23:19:15ID:???0305nobodyさん
2006/01/28(土) 23:23:24ID:???CGIスレじゃないし、ローカル上のやりとりだと仮定すればできる。
具体性に欠ける質問には答える気0だけどな。
0306nobodyさん
2006/01/28(土) 23:25:39ID:???stat関数でファイルサイズを求めておき、read,writeのループをしながら読んだ・書いたバイト
数を累積していき、時々%を計算してprintすれば良いんじゃない?
0307nobodyさん
2006/01/29(日) 02:18:43ID:???Ajaxからめたら強引にできそうだけど。
0308nobodyさん
2006/01/29(日) 02:24:18ID:???0309nobodyさん
2006/01/29(日) 09:20:15ID:???Ajaxとか... FTPとか...
キミ達の妄想力には呆れるばかりだよ。
0310nobodyさん
2006/01/29(日) 10:29:17ID:???0312309
2006/01/29(日) 11:15:29ID:???0314309
2006/01/29(日) 11:58:10ID:???0315nobodyさん
2006/01/29(日) 12:05:03ID:???0316309
2006/01/29(日) 12:48:06ID:???0318nobodyさん
2006/01/29(日) 13:09:37ID:???(゚∀゚)ノ
0320309
2006/01/29(日) 13:18:43ID:???煽ったのは俺だが、騙ったのは別の誰かだ。
煽ってないとは一回も発言してない。
まさかとは思うが「騙る」を「あおる」と読んでる?
0321nobodyさん
2006/01/29(日) 13:20:01ID:???0323nobodyさん
2006/01/29(日) 14:40:08ID:???まんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこ
まんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこ
まんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこ
まんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこ
まんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこ
まんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこ
まんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこ
まんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこ
まんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこ
まんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこ
まんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこまんこ
0324nobodyさん
2006/01/29(日) 16:53:38ID:???chomp;
last if $_;
}
で入力待ちしているときに、
カウンタダウンを表示させたいとすれば、どういった方法を取ればいいのでしょうか?
0325nobodyさん
2006/01/29(日) 16:59:54ID:???0326nobodyさん
2006/01/29(日) 17:00:47ID:???0 とだけ書いた行が出て来るとループ抜けるですね。
0327nobodyさん
NGNG0328nobodyさん
2006/01/29(日) 18:21:45ID:???キー入力を受け付けたいのです。
0329nobodyさん
2006/01/29(日) 18:27:58ID:???具体的に描写してください
0330nobodyさん
2006/01/29(日) 18:43:57ID:???0331nobodyさん
2006/01/29(日) 19:00:16ID:???どうみても、print "set-Cookie: $COOKIE_NAME=$value; expires=$date\n";
print "Content-type: text/html; charset=Shift_JIS\n\n"; です。
本当にありがとうございました;
0332309
2006/01/29(日) 20:25:54ID:rcECZvhlム板でバカにされてるのもうなずける。
0333nobodyさん
2006/01/29(日) 20:30:23ID:???ここは騙ることで報復したと思えるお子様が住み着いているスレでしたか。
ム板でバカにされてるのもうなずける。
0334ム板 Perl スレ住人
2006/01/29(日) 21:02:27ID:???お前もこっちくんな
0336309
2006/01/29(日) 21:25:22ID:???最底辺を自慢してどうしたいんだよ。
0337nobodyさん
2006/01/29(日) 23:13:56ID:???0338nobodyさん
2006/01/29(日) 23:31:23ID:???0341nobodyさん
2006/01/30(月) 13:40:11ID:???0342nobodyさん
2006/01/30(月) 14:41:41ID:???0343nobodyさん
2006/01/30(月) 22:51:00ID:???$a や $b を使った場合に、
実際に不具合が起こるケースにはどういうケースがあるでしょうか?
「これこれこういうことが起こりうるから使っちゃダメ」
みたいな具体例があれば教えていただきたく。
0345nobodyさん
2006/01/31(火) 00:05:32ID:???サンプルを見る限り、どれもEUCで書かれたページしか対象になってないので・・。
ShiftJIS対応のサンプルとかあれば、参考になるのでありがたいんですけど・・。
Encode.pm使ってコード変換とかしたらなんとかなります?
0347nobodyさん
2006/01/31(火) 00:28:18ID:???#!/usr/bin/perl
use strict;
use WWW::Mechanize;
my $mech = WWW::Mechanize->new( autocheck => 1 );
$mech->get( "http://www.excite.co.jp" );
print "Content-type: text/html\n\n";
print $mech->content;
exit;
0348nobodyさん
2006/01/31(火) 01:15:51ID:???0349345
2006/01/31(火) 01:22:22ID:???データを取得するだけなら、Mechanizeじゃなくても・・。
フォームに自動入力させたり、リンクたどったりするために使いたいんですけど・・。
そのときに文字コードが関連してうまくいかなかったりするのかなぁと思って
聞いてみたんですけど・・。
見当違いの発言してますか?・・・多分してるんだろうなぁ・・。
0350nobodyさん
2006/01/31(火) 01:53:08ID:???見当違いと言うか、試す前に質問するのが間違いだな。
>>1
> 1: 自分はこういう事がしたい。
> 2: それでこんな風にやってみたが・・・
> 3: こんなエラーが出て上手く行かなかった。
0351347
2006/01/31(火) 03:09:04ID:???いや、何となく意図は分かったが、
質問力と実践力の無さを婉曲的に指摘してみた。
EncodeでもJcodeでも
自分なりに試して、それでどうしてもダメだったら聞けば?
質問文に書かれている以上のことを
「おそらくこういうことが言いたいんだな」と想定してあげて、
もし質問者の意図と違ってたら、
回答者の労力って本当に無駄だよね。
0352nobodyさん
2006/01/31(火) 03:13:54ID:???ある意味矛盾ってやつですなw
0354nobodyさん
2006/01/31(火) 03:26:28ID:???Mechを挙げた時点で、シンプルにページのデータ取得だけを目的としたものではないと
検討がつくはず。データ取得ならLWP::Simpleでもできる。
>>345
Spidering Hacksって本の最後のほうに解決策があるよ。ググってみて。
0355nobodyさん
2006/01/31(火) 04:29:56ID:???だから、何でわざわざ推測してやらにゃって話だろ?
書かれた問いに対しての回答としてひとつも間違っちゃいない
0356nobodyさん
2006/01/31(火) 12:17:22ID:h8hzbfFvどんな性格かは言わずもがなだが。
0357nobodyさん
2006/01/31(火) 12:58:54ID:FkRWAlIzまずlogin画面があり、認証後サイトを見れるという感じなのですが
認証後のサイトURL直入力などを防止する為にはどのような対応が良いのでしょうか?
idとパスワードを画面遷移ごとにpostデータとして送るというのはなんか
パスワードがソース内に表記されているという事で嫌な感じがしますが
一般的なのでしょうか?
最近のセキュリティソフトではリファラを出さないそうなのでこれも使用しない
方向で考えています。
どなたかお知恵を拝借願います。
0359nobodyさん
2006/01/31(火) 13:06:20ID:???http://www.shtml.jp/htaccess/basic.html
以上。
0360nobodyさん
2006/01/31(火) 13:17:20ID:???クッキー使用(クッキーにはユーザー名もパスワード名も入れない。セッションIDのみ)
0361nobodyさん
2006/01/31(火) 13:47:37ID:???Apache の仕事じゃね?
0362nobodyさん
2006/01/31(火) 14:57:21ID:???なるほどね
すっごいや
0364nobodyさん
2006/01/31(火) 15:06:55ID:???投稿確認のページ(例:index.php?exec=setcheck)があった際に、リファラは投稿ページ(例:index.php?exec=posting)である必要があるよね?
投稿確認ページでチェックするリファラが空であったり、投稿ページ(例:index.php?exec=posting)以外であればそれを弾く。
チェックとはそゆことを言ってます。
リファラ吐かない鯖なんて前提にしてません。
0365nobodyさん
2006/01/31(火) 15:08:22ID:???>最近のセキュリティソフトではリファラを出さないそうなのでこれも使用しない
との事なのでリファラ取得が前提とした質問かな
(今気が付いたんだけどねorz)
0366nobodyさん
2006/01/31(火) 15:17:37ID:???0368nobodyさん
2006/01/31(火) 15:20:19ID:???スパゲッティ得意?
0370nobodyさん
2006/01/31(火) 15:22:56ID:???IDとパスワードがどんな形で渡すのかわからんが
場合によったら一番手っ取り早いだろ。
0371nobodyさん
2006/01/31(火) 15:23:58ID:???0373nobodyさん
2006/01/31(火) 15:50:26ID:???それを言ったらSSL通らない通信はみんな信頼性にかけるし。
357がどれだけの信頼性が必要なのかがわからんけど、
仲間内だけで運営するとか、登録した人だけサイトが見られるとか
そんな感じなのであれば、Basic認証やらDigest認証で十分でしょ。
0375nobodyさん
2006/01/31(火) 16:12:43ID:???0376nobodyさん
2006/01/31(火) 18:09:43ID:???いろいろサンプルを見ながら試してて気が付いたのですが
(stat($file))[9] としたときに更新日付が帰ってきてませんでした
stat 以外でファイルのタイムスタンプを取得する方法ってありますか?
0377nobodyさん
2006/01/31(火) 18:41:59ID:???0378nobodyさん
2006/01/31(火) 18:49:59ID:???更新日付が取れない事を変だと感じるが。
http://www.kt.rim.or.jp/~kbk/perl-5.8/perlfaq5.html#how_do_i_get_a_file_s_timestamp_in_perl
http://perldoc.jp/docs/perl/5.6.1/perlfunc.pod#item__i__X__i__FILEHANDLE
http://perldoc.jp/docs/perl/5.6.1/perlfunc.pod#item_stat_FILEHANDLE
map localtime($_->[1]) . " $_->[0]\n",
sort { $b->[1] <=> $a->[1] }
map [ $_, (stat)[9] ],
glob './*'
;
0379nobodyさん
2006/01/31(火) 19:18:30ID:???opendir(DIR, "./$datdir")
のようにしてファイル一覧を取得してからファイルのタイムスタンプを取得しようとしてたんですが、
stat("./$datdir/$file[$i]") のようにすべきなのにディレクトリを指定し忘れていただけでした。
回答をしていただいたのにくだらないミスで済みませんでした。
0380nobodyさん
2006/01/31(火) 20:18:16ID:RrDOFj4aJcode.plを使って投稿時に含まれている半角カタカナは
全角カタカナに変換するようにしたのですが、
半角カタカナのみの投稿の場合動作しません。
これはなぜなんでしょうか?
該当部分のソース
# S-JISコード変換
&jcode'convert(*value,'sjis');
#半角カタカナ変換
&jcode'h2z_sjis(\$value);
これがフォームでコードの部分に入ってるだけ。
0384nobodyさん
2006/01/31(火) 22:12:12ID:POWreMm8新しいファイルlog_new.cgi書き込み、書き終わったところで古いファイルをlog_old.cgiに
rename、新しいファイルをlog.cgiにrenameとしました。
この方がメモリ使用量が少なく、書き込みの時に異常停止した場合ログ破壊が起こり
にくいと考えました。 しかしファイルのパーミッションを600にしたいのですが、open
では出来ず、sysopenでしか出来ないと知って困ってます。 パーミッションだけの
ためにファイルI/Oは全てsys*にしないとならないのでしょうか?
0385nobodyさん
2006/01/31(火) 22:34:56ID:???0387nobodyさん
2006/01/31(火) 22:44:35ID:???バッファリングの問題なんだからsysopenだけなら他はシステムコールにしなくてもいいんでは?
実際perlfaq5で以下みたいな例文でてるし。(話題そのものは別のもの)
use Fcntl qw(:DEFAULT :flock);
sysopen(FH, "numfile", O_RDWR|O_CREAT) or die "can't open numfile: $!";
flock(FH, LOCK_EX) or die "can't flock numfile: $!";
$num = <FH> || 0;
seek(FH, 0, 0) or die "can't rewind numfile: $!";
truncate(FH, 0) or die "can't truncate numfile: $!";
(print FH $num+1, "\n") or die "can't write numfile: $!";
close FH or die "can't close numfile: $!";
0389nobodyさん
2006/01/31(火) 23:06:49ID:???がーん。そうでしたか。
sysopenだと他も全部システムコールにしなくちゃいけなくてイヤって言ってるのかと思いました。
387はスルーしてください。
0390nobodyさん
2006/01/31(火) 23:21:07ID:???sysopen とどちらが楽かは微妙だが、一時的に umask を変える。
my $orig_umask = umask 077;
blah, blah, blah...
umask $orig_umask;
0391nobodyさん
2006/02/01(水) 00:00:28ID:???結果が文字化けするなら分かるけど、
動作しないってのは分からん。
>>384
IO::FileかFileHandle使うと便利。
0392384
2006/02/01(水) 01:05:17ID:ngruutodopenだけを入れ替えられるとは思いもしませんでした。 >>391も便利そうですね。
試してみます。
0393nobodyさん
2006/02/01(水) 18:32:10ID:???Use of uninitialized value in 〜
といったエラーが出てきました。
エラーが出た個所を見てみると
$in_method = $ENV{'REQUEST_METHOD'};
のように環境変数を代入してるほとんどでエラーが出ています。
環境変数から値を持ってくるときは = で代入しちゃいけないんでしょうか?
0394nobodyさん
2006/02/01(水) 18:41:34ID:???正規表現でマッチさせて代入させればいいよ。
0395nobodyさん
2006/02/01(水) 18:58:32ID:???エラーメッセージの内容とそれが出ている行番号を確かめるんだ。
http://search.cpan.org/~nwclark/perl-5.8.8/pod/perldiag.pod#Use_of_uninitialized_value%s
http://perldoc.jp/docs/perl/5.6.1/perlfunc.pod#item_defined_EXPR
#!/usr/local/bin/perl -W
use strict;
my $path = $ENV{'PATH'}; # 定義済の値
my $nvar = $ENV{'NONEXISTENT_VARIABLE'}; # 未定義の値
print "PATH:$path\n";
print "NVAR:$nvar\n";
__END__
>>394
それは -W じゃなくて -T 。
0396nobodyさん
2006/02/01(水) 19:11:50ID:???ここに注目して、環境変数も中身がちゃんとあるかどうかチェックしながら代入するようにしてみました。
エラーは無くなったものの、面倒くさいなぁw
0397nobodyさん
2006/02/01(水) 19:15:12ID:???エラーのあったときの記述
$in_type = $ENV{'CONTENT_TYPE'};
修正した記述
$in_type = $ENV{'CONTENT_TYPE'} ? $ENV{'CONTENT_TYPE'} : "";
CONTENT_LENGTH のときは "" じゃなくて 0 を入れるようにした。
0398nobodyさん
2006/02/01(水) 19:28:22ID:???$len = $ENV{'CONTENT_LENGTH'} or 0;
でもできるよ。
ただこの場合、偽の時は常に空になっちゃうから、
空文字列、0、未定義値を見分ける必要がある場合はやめたほうがよい。
0399nobodyさん
2006/02/01(水) 19:31:21ID:???コード自体を書き換えなくとも、未定義値の警告だけを出なくすればいい。
http://search.cpan.org/~nwclark/perl-5.8.8/pod/perllexwarn.pod
#!/usr/local/bin/perl
use strict;
use warnings qw(all);
no warnings qw(uninitialized);
print my $foo, 'foo!';
__END__
まぁ defined $var ? $var : '' するのが正道なので、これを機に全部
書き換える事をお勧めするが。
0400nobodyさん
2006/02/01(水) 19:36:37ID:???> $in_type = $ENV{'CONTENT_TYPE'} or '';
これは
($in_type = $ENV{'CONTENT_TYPE'}) or '';
こういう意味になる。
書くなら、
$in_type = $ENV{'CONTENT_TYPE'} || '';
$in_type = ($ENV{'CONTENT_TYPE'} or '');
このどちらか。
0もfalse扱いされるから扱いに注意。
0402nobodyさん
2006/02/01(水) 19:52:46ID:???$in_type = $ENV{'CONTENT_TYPE'} || '';
って書き方がいいかなと思ったんですが、
>399さんの最後の一言を考えて、
$in_type = defined($ENV{'CONTENT_TYPE'}) || '';
っていうのじゃ駄目ですか?
とか書いた瞬間に駄目と気付いたw
defined を使うなら
$in_type = defined($ENV{'CONTENT_TYPE'}) ? $ENV{'CONTENT_TYPE'} : '';
ぐらいにしからないですかね。
とりあえず
$in_type = $ENV{'CONTENT_TYPE'} || '';
が見た目的にも、自分てきには見やすいかな
0403nobodyさん
2006/02/01(水) 19:55:44ID:???0404nobodyさん
2006/02/02(木) 02:58:46ID:???@k=split(/\\/,$test);
$testの中身を\で分割したいんだけど↑じゃできねぇ
何かいい方法ない?
0405nobodyさん
2006/02/02(木) 03:08:11ID:???0407nobodyさん
2006/02/02(木) 14:40:58ID:???0408nobodyさん
2006/02/02(木) 23:57:22ID:6Tw8pfAF#!/usr/bin/perl -w
use strict;
use LWP 5.64;
my $word = shift;
$word or die "Usage: perl altavista_post.pl [keyword]\n";
my $browser = LWP::UserAgent->new;
my $url = 'http://www.altavista.com/web/results';
my $response = $browser->post( $url,
[ 'q' => $word, # the Altavista query string
'pg' => 'q', 'avkw' => 'tgz', 'kl' => 'XX',
]
);
die "$url error: ", $response->status_line unless $response->is_success;
die "Weird content type at $url -- ", $response->content_type
unless $response->content_type eq 'text/html';
if ( $response->content =~ m{ found ([0-9,]+) results} ) { print "$word: [RETURN]
$1\n"; }
else { print "Couldn't find the match-string in the response\n"; }
↑のようなコードが出てきたんでコピペしてDosプロンプトで実行したら
C:\Perl\bin>perl altavista_post.pl tarragon
http://www.altavista.com/web/results error: 302 Found at altavista_post.pl line 13.
のようなエラーが出ました。どこが間違ってるのでしょうか?
Windowsで通るようにするにはどうすればいいのでしょうか?
0409nobodyさん
2006/02/03(金) 00:03:11ID:???斜め読みだけど、302が返ってきてるからリダイレクト指示でしょ。
んで、そのスクリプト200以外の応答は全部エラーにしてるみたい。
というわけで、$urlの値の末尾に/つければいけるんじゃない。
0410nobodyさん
2006/02/03(金) 00:07:29ID:PieRIOHfAltavistaってまだあったんだw
このコードはどこでも動かないよ。 サイトの仕様が変わってる。見てみたらいまじゃ
Yahooに投げてるだけ。
0411408
2006/02/03(金) 00:11:00ID:HpXFHvtB即レスありがとうございました。>>409-410
0412無知ですまそ
2006/02/03(金) 02:46:12ID:SfkSG4GRパスワードチェックで
if ($FORM{'pass'} ne 'aaa') { &error("パスワードが違います"); }
としたのだけど、aaaとbbb以外は違うとするにはどうすればいいのか教えてください。
0413nobodyさん
2006/02/03(金) 02:55:40ID:???0414無知ですまそ
2006/02/03(金) 02:58:13ID:SfkSG4GR0415無知ですまそ
2006/02/03(金) 03:02:22ID:SfkSG4GR0416nobodyさん
2006/02/03(金) 07:47:24ID:???if ($FORM{'pass'} ne 'aaa' || $FORM{'pass'} ne 'bbb')
0418nobodyさん
2006/02/03(金) 10:40:30ID:???unless ($valid_pass{$FORM{'pass'}}) { &error("..."); };
0419nobodyさん
2006/02/03(金) 12:33:50ID:???こつこつとif文しか使ってないや。
0420nobodyさん
2006/02/03(金) 13:25:53ID:???っていうだけのことじゃなくて?
0421418
2006/02/03(金) 15:53:17ID:???条件式が単純な場合は unless の方が「〜でない」という意図がハッキリ伝わる
ような気がするので unless を使うようにしている。
変かな?
0422nobodyさん
2006/02/03(金) 16:10:15ID:???0423nobodyさん
2006/02/03(金) 19:06:09ID:???if ( not hoge ) { kuso; }
しか使わない漏れが来ましたよ。
0426nobodyさん
2006/02/04(土) 14:26:20ID:???せっかくあるんだし、そういう条件付ならいいかも。
ただ、ほとんどの場合は if + !式 の組み合わせの方が
タイプが少なくて済むんだよね。
until は while と同じだからいいんだけど。
0427nobodyさん
2006/02/04(土) 14:29:47ID:???if ( hoge ) { unko; } else { kuso; }
でいいんじゃないのか?
0428nobodyさん
2006/02/04(土) 15:04:46ID:???この二つのパターンしか使ってないよ
っていう意味じゃないの?
0429nobodyさん
2006/02/04(土) 23:39:17ID:???BBB
CCC
DDD
EEE
↓
├AAA
│ └BBB
│ ├CCC
│ └DDD
└EEE
階層は無限。
どういうコーディングすればよいのかちょっと分からないのでお助けを...
0430nobodyさん
2006/02/05(日) 00:37:52ID:???質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。
1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
0431nobodyさん
2006/02/05(日) 01:13:47ID:???たぶんインデントされたものを罫線付きで表示したい
って意味だと思うの
0432nobodyさん
2006/02/05(日) 01:15:08ID:???階層数を記憶しておいて、それに見合った「│ 」やら「└」を出力すればおk
0433nobodyさん
2006/02/05(日) 01:37:06ID:???0434429
2006/02/05(日) 02:17:56ID:???やりたいことは、エスパー魔美タンの言う通りです。>>431 >>433
行毎に文字列が書かれている
インデント無しなら1階層目、インデント1つなら2階層目、インデント2つなら3階層目・・・∞
「│」「├」「└」を使用して全て繋がっている木構造を出力する
かなりの難問です。スミマセン。
0435nobodyさん
2006/02/05(日) 02:18:04ID:???うーん、汚い。
my @result;
my $maxdepth = 0;
while(<DATA>){
/( *)(.*)/s;
my $depth = length $1;
push @result, [(" ")x($depth+1), $2];
$maxdepth = $depth if $maxdepth < $depth;
}
for my $d ( 0 .. $maxdepth ){ # $d=注目階層
my @class = grep { 2+$d == scalar @{$result[$_]} } 0..$#result;
$result[$_][$d] = "┃" for $class[0] .. $class[-1];
$result[$_][$d] = "┣" for @class;
$result[ $class[-1] ][$d] = "┗";
}
print join '',@$_ for @result;
__DATA__
AAA
BBB
CCC
DDD
EEE
0436429
2006/02/05(日) 02:36:19ID:???デキタ!と思ったら反例が見つかったのでご報告。スミマセン
AAA
BBB
CCC
DDD
EEE
FFF
GGG
0437nobodyさん
2006/02/05(日) 03:05:55ID:???AB
ABC
ABD
ABE
ABEF
G
ループしながらスタックでこんなの作ってやれば
親が末っ子かどうかで" "か"┃"を塗り分けて
自分が末っ子かどうかで"┗"か"┣"を塗り分けられそうだ
後はパス
0438nobodyさん
2006/02/05(日) 03:38:38ID:???んで再起で呼ぶときに行頭のスペースの数を渡してやって、それに一致しなければ抜けるようにすればいい
と思う
明日中に解決してなければ、まぁ微妙に面白そうだしやってみようかなとか思う
0439nobodyさん
2006/02/05(日) 07:20:36ID:V48VHYZU1.$wordの文字列から6バイト目以降か7バイト目以降を削除したい
2.5バイト目が半角英数字なら6バイト目以降を削除(つまり1〜5バイト目残し)
3.5バイト目が日本語コードなら7バイト目以降を削除(つまり1〜6バイト目残し)
どうやれば一番効率がいいですか?
0440nobodyさん
2006/02/05(日) 08:54:14ID:???0441nobodyさん
2006/02/05(日) 09:45:39ID:???my $level = -1;
my @stack;
my $base = (my $p = [['*root*', []]]);
while(<DATA>){
m/^( *)(.*)$/;
my $count = length($1);
if ($count > $level){
$count > ($level+1) and die "Illegal data.";
push(@stack, $p);
$p = @{$p}->[-1]->[1];
} elsif ($count < $level){
foreach(1..($level-$count)){
$p = pop(@stack);
}
}
$level = $count;
push(@{$p}, [$2, []]);
}
array_dump($base->[0]->[1], '');
0442441
2006/02/05(日) 09:48:46ID:???{
my ($p, $marker) = @_;
my $mark = ['├', '│'];
foreach(0..$#{$p}){
$_ == $#{$p} and $mark = ['└', ' '];
print $marker, $mark->[0], $p->[$_]->[0], "\n";
@{$p->[$_]->[1]} and array_dump($p->[$_]->[1], $marker. $mark->[1]);
}
}
__END__
AAA
BBB
CCC
DDD
EEE
FFF
GGG
0443nobodyさん
2006/02/05(日) 10:33:20ID:V48VHYZU$word =~ s/^....[0-9]/^...../g; …?
0445nobodyさん
2006/02/05(日) 11:27:05ID:V48VHYZUだめぽなんです
0446nobodyさん
2006/02/05(日) 11:35:15ID:V48VHYZUあれ書きかけで送信してしまった
いちおう自分でどうにか書いたんですが\x81が
おかしくなるんですよね
$words = substr($word,0,6);
if ($words =~ m/^....[\x20-\x7f\xa0-\xdf]/)
{
$words = substr($words,0,5);
}else {
$words;
}
0447nobodyさん
2006/02/05(日) 11:40:22ID:???0448nobodyさん
2006/02/05(日) 11:45:31ID:V48VHYZU”どこを”ですか?
0449nobodyさん
2006/02/05(日) 11:47:52ID:???0451nobodyさん
2006/02/05(日) 12:17:55ID:???0453nobodyさん
2006/02/05(日) 12:48:54ID:???0454nobodyさん
2006/02/05(日) 12:51:06ID:???正規表現を使うことすら頭に出てこないお子様なんだろうがな
おっと触っちまった、以下スルーよろ
0455nobodyさん
2006/02/05(日) 13:12:20ID:EWGu37QNその程度の知識でいきがってるようじゃw
0456nobodyさん
2006/02/05(日) 13:25:38ID:???0457nobodyさん
2006/02/05(日) 13:29:19ID:???0458nobodyさん
2006/02/05(日) 13:34:12ID:???0459429
2006/02/05(日) 22:55:31ID:???華麗なコーディングありがとうございました。
完璧です。多重配列を使いこなせる人はスゴイ。
自分もいろいろと考えてみた結果
・自分の状態("└"か"├")
・自分の全ての親の状態("│"か" ")
が分かれば木構造が作れるのに気付いたので
1. 逐次走査して全項目の状態("└"か"├")を調べて記録する
2. もう一度逐次走査して親の情報を作りながら木構造を作っていく
とすることで目的の処理ができました。(再帰と多重配列は使わず)
お世話になりましたー。
0460nobodyさん
2006/02/06(月) 11:55:45ID:kZ4iy7FBhtmlのtextareaの内容を入力として、外部の実行ファイル(例えばsort等)に投げて、
htmlとして出力を得るような方法はありますか?
perlコーディングと関係ないかもしれませんがよろしくお願いします。
0461nobodyさん
2006/02/06(月) 12:16:51ID:???>>1
> 1: 自分はこういう事がしたい。
> 2: それでこんな風にやってみたが・・・
> 3: こんなエラーが出て上手く行かなかった。
■こんなCGI作ってください■ Part.2
http://pc8.2ch.net/test/read.cgi/php/1133361560/
0462nobodyさん
2006/02/06(月) 18:28:41ID:???そのコードを見てみたかったな。
考えてみたけど、こんなのしか考えつかなかった。
my @data;
my $max = -1;
while(<DATA>){
m/^( *)(.*)$/;
my $level = length($1);
push(@data, [$level, $2, '']);
($level > $max) and $max = $level;
}
foreach my $level (0..$max){
my $found = 0;
foreach(reverse(0..$#data)){
if ($data[$_]->[0] < $level){
$found = 0;
} elsif ($data[$_]->[0] == $level){
$data[$_]->[2] .= ($found ? '├' : '└');
$found = 1;
} else {
$data[$_]->[2] .= ($found ? '│' : ' ');
}
}
}
foreach(0..$#data){
print @{$data[$_]}[2, 1], "\n";
}
0463429
2006/02/06(月) 23:52:11ID:???#勉強がてらに多重配列を使ってみました
while (<DATA>) {
m/^( *)(.*)$/;
$now = length $1;
push @data, [$now, $2, 0]; # [階層の深さ, 項目名, "├"なら0、"└"なら1]
$tmp[$now] = $.-1; # 階層毎に一番最後に出現した行の「行番号-1」を記録
$max = $now if $now > $before;
if ($now < $before) {
$data[$tmp[$_]][2] = 1 for $now+1..$max;
$max = $now;
}
$before = $now;
}
$data[$_][2] = 1 for @tmp;
$before = 0;
@tree = ('│', ' ', '├', '└');
for (0..$#data) {
$now = $data[$_][0];
if ($now > $before) { push @parent, $data[$_-1][2]; }
elsif ($now < $before) { pop @parent for 1..$before-$now; }
print $tree[$_] for @parent;
print $tree[$data[$_][2]+2], $data[$_][1], "\n";
$before = $now;
}
0464nobodyさん
2006/02/07(火) 01:09:36ID:???なるほど。
> if ($now < $before) {
> $data[$tmp[$_]][2] = 1 for $now+1..$max;
> $max = $now;
> }
この処理で、一回のループで行けるわけですね。
ありがとう。
0465nobodyさん
2006/02/07(火) 06:10:53ID:wug3jbil1: 自分はこういう事がしたい。→ 計算機
2: それでこんな風にやってみたが・・・ → やってみましたけど…
3: こんなエラーが出て上手く行かなかった。
→ 2**64 = 1.84467440737096e+019
実数ではなくてこんななっちゃいましたorz
アドバイスお願いします
0466nobodyさん
2006/02/07(火) 06:19:53ID:???0467nobodyさん
2006/02/07(火) 06:28:08ID:wug3jbilこんな時間にありがとうございます
多倍長整数なんて初めて聞きました
bigintをどうすればおkなんでしょうか?
0468nobodyさん
2006/02/07(火) 06:28:57ID:???0469nobodyさん
2006/02/07(火) 06:32:44ID:wug3jbil#!/usr/bin/perl
use bigint
↑たったこれだけっすか?
0470nobodyさん
2006/02/07(火) 06:35:16ID:???";" を忘れずに
0471nobodyさん
2006/02/07(火) 06:38:16ID:???$ perl -e "use bigint;print 2**64;"
18446744073709551616
0472nobodyさん
2006/02/07(火) 06:39:39ID:wug3jbilん〜エラーになるんですよね…
Error 500
CGI エラー - Content-Type ヘッダが正しくありません。
CGI 出力メッセージ:
Can't locate bigint.pm in @INC (@INC contains: C:/Perl/lib C:/Perl/site/lib .)
at C:\httpd\www\tes.cgi line 3.
BEGIN failed--compilation aborted at C:\httpd\www\tes.cgi line 3.
0473nobodyさん
2006/02/07(火) 06:41:39ID:???____ 、ミ川川川彡
/:::::::::::::::::::::::::""'''-ミ 彡
//, -‐―、:::::::::::::::::::::三 ギ そ 三
___ 巛/ \::::::::::::::::三. ャ れ 三
_-=三三三ミミ、.//! l、:::::::::::::三 グ は 三
==三= ̄ 《|ll|ニヽ l∠三,,`\\::三 で 三
/ |||"''》 ''"└┴‐` `ヽ三 言 ひ 三
! | / 三 っ ょ 三
|‐-、:::、∠三"` | ヽ= U 三. て っ 三
|"''》 ''"└┴` | ゝ―- 三 る と 三
| / ヽ "" ,. 三 の し 三
| ヽ= 、 U lヽ、___,,,...-‐''" 三 か て 三
. | ゝ―-'′ | |::::::::::::_,,,...-‐'"三 !? 三
ヽ "" ,. | | ̄ ̄ ̄ 彡 ミ
ヽ、___,,,...-‐''" ,,..-'''~ 彡川川川ミ
厂| 厂‐'''~ 〇
| ̄\| /
0475nobodyさん
2006/02/07(火) 06:52:10ID:???0476nobodyさん
2006/02/07(火) 06:55:34ID:wug3jbilもダメぽ・・
5.6…だたよママン
0477nobodyさん
2006/02/07(火) 13:36:58ID:???print "content-type: text/plain; charset=Shift_JIS\n\n";
Shift_JIS のところは編集してるファイルの文字コードにあわしてね
0479nobodyさん
2006/02/07(火) 14:04:11ID:???いい加減にしろよ
0480nobodyさん
2006/02/07(火) 14:26:12ID:???それかコンソールで確認するか…
0481nobodyさん
2006/02/07(火) 14:33:11ID:???require "./jisaku.pl";
などファイルをインクルードする文を実行する命令を付け足すと、画面が真っ白になってどうにもなりません。
require命令を消して実行すると上手くいきますが、
どうしてもファイルを分割してコーディングしたいです。
どうにかなりませんか。
0482nobodyさん
2006/02/07(火) 14:36:58ID:???0483481
2006/02/07(火) 14:50:54ID:???してません。
私は、新しく作るサブルーチンは全てメインファイルに記述し、
動作確認ができてから分割するという習慣をとっていますし、
jisaku.plから呼び出し元の関数を呼んでいたりはしません。
で、気づいたんですが、kentwebさんのlight.cgiを見てみると
require命令にシングルクォートを使っているので、もしかしたらダブルクォートを使ったのが
いけなかったんじゃないか・・・と思います。
でももうコーディングする時間がないので誰か誰かあああぁぁぁぁぁん。
0484nobodyさん
2006/02/07(火) 15:04:53ID:???0486nobodyさん
2006/02/07(火) 15:35:38ID:???ツリーって下から考えたら楽じゃね?
my @data = reverse <DATA>;
my (@tree, @rule, $depth);
foreach (@data) {
/^( *)(.+)/;
$#rule = $depth = length($1);
$rule[$_] = !!$rule[$_] for 0 .. $depth-1;
$rule[$depth] = 2 + !$rule[$depth];
unshift @tree, join '', (' ','│','├','└')[@rule], $2, "\n";
}
print @tree;
0487nobodyさん
2006/02/07(火) 15:50:34ID:???bigint プラグマが用意されたのは 5.8.0 から。
http://search.cpan.org/~nwclark/perl-5.8.8/pod/perl58delta.pod#New_Modules_and_Pragmata
Math::Bigint の使い方はドキュメントを。
http://search.cpan.org/~tels/Math-BigInt-1.77/lib/Math/BigInt.pm
>>481
君のスクリプトの二行目に
use CGI::Carp qw(fatalsToBrowser);
を挿入し、出てきたエラーメッセージを読んで解決なさいな。
http://perldoc.jp/docs/modules/CGI.pm-2.89/CGI/Carp.pod
http://search.cpan.org/~nwclark/perl-5.8.8/pod/perldiag.pod
http://perldoc.jp/docs/perl/5.6.1/perlfunc.pod#item_require_EXPR
http://www.kt.rim.or.jp/%7Ekbk/perl5.005/perldata.html#Scalar_value_constructors
0488nobodyさん
2006/02/07(火) 16:22:17ID:???0489nobodyさん
2006/02/07(火) 16:24:47ID:???0490nobodyさん
2006/02/07(火) 20:42:51ID:???って書いてあるんだけど、そんなことしなくてもちゃんと動くし最後のhtml出力でシフトJISに指定やれば
問題なく表示されますよね。
なんかやるメリットってあるんでしょうか?
0493nobodyさん
2006/02/07(火) 20:57:09ID:???0494nobodyさん
2006/02/07(火) 21:03:41ID:???起き得る不都合とその回避方法を把握しているなら、別にどの
文字コードでスクリプトを書こうが問題無い。
ただ、今の perl は UTF-8 を前提に動いているし、UTF-8 なら
Shift_JIS を直接扱う時のように ASCII とのバッティングが起こら
ないし、EUC-JP は日本ローカルな文字コードであるのに対し
UTF-8 は世界的に使われている文字コードなので、まだ UTF-8
の認知度が低かった数年前ならともかく、現時点でこれら3つの
中から選ぶなら UTF-8 が「無難な選択」になる。
0495nobodyさん
2006/02/07(火) 21:15:58ID:???テキスト処理で速度が必要な場合は、その文字コード用に
コード書いた方が断然よい。前にJISのテキスト処理をutf8で
やったら、変換に時間かかりすぎて使い物にならなかった。
0496nobodyさん
2006/02/07(火) 22:07:16ID:???> コード書いた方が断然よい。
> 前にJISのテキスト処理をutf8で
> やったら、変換に時間かかりすぎて使い物にならなかった。
頭大丈夫?
0497nobodyさん
2006/02/07(火) 23:33:23ID:???#名前
<tr>
<td class=r align=right width=110>名前 <font color=red>※</font></td>
<td class=r width=440>
<input type=text name=name size=30 style='ime-mode:active' value="$cnam"></td>
</tr>
# 項目1
print "<input type=radio name=hoge value=\"A\" checked>A \n";
print "<input type=radio name=hoge value=\"B\">B \n";
リターンメールで
$mbody .= "名 前 = $in{'name'}\n";
はメールの本文にちゃんと出るのに
$mbody .= "項目1 = $in{'hoge'}\n";
は表示されません。。
考えられるミスがわかる方ご指摘お願いいたしまするー
0498nobodyさん
2006/02/07(火) 23:44:44ID:???0499nobodyさん
2006/02/07(火) 23:49:25ID:???0500nobodyさん
2006/02/07(火) 23:57:58ID:???> 考えられるミスがわかる方ご指摘お願いいたしまするー
考えられる可能性は1つしかない
> $mbody .= "名 前 = $in{'name'}\n";
とエディタで書いた後でソースを保存したが
> $mbody .= "項目1 = $in{'hoge'}\n";
と書いた後でまだ保存してない。
0501nobodyさん
2006/02/08(水) 00:21:10ID:???0502nobodyさん
2006/02/08(水) 01:09:27ID:???$in{'hoge'}にABとでも入ってほしいのかの。
フォームのデコード処理が甘いと空になっちゃうかもね。
0503497
2006/02/08(水) 01:15:50ID:???http://s1.muryo-de.etowns.net/~testjoy/order.txt
これの # 配達方法 が メールで返ってきたときに空白なんですよ。。
なぜかしら?
0504nobodyさん
2006/02/08(水) 01:48:32ID:???init.cgi が見れないと分からん。
以後は下のスレにでも移動してくれ。
自分の作ったCGIスクリプトをデバッグするスレ
http://pc8.2ch.net/test/read.cgi/php/1011174442/
0505nobodyさん
2006/02/08(水) 01:57:25ID:???モジュールわんさかのスクリプトを書く人の
2種類しかいない Perl 界隈。
0506nobodyさん
2006/02/08(水) 02:03:33ID:???0507nobodyさん
2006/02/08(水) 02:19:56ID:???0508nobodyさん
2006/02/08(水) 02:51:38ID:???0509nobodyさん
2006/02/08(水) 03:17:07ID:???0511nobodyさん
2006/02/08(水) 04:34:41ID:???コピペしてでも自分のソースに必要最小限だけしか入れたくない
じゃないのかな
0512nobodyさん
2006/02/08(水) 22:25:24ID:VDqpPhRjそれを年、月、日、時、分、秒 で返したいんですがどのようにするといいですか?
0513nobodyさん
2006/02/08(水) 22:28:04ID:???秒っていつからの秒だよ
とりあえず
■こんなCGI作ってください■ Part.2
http://pc8.2ch.net/test/read.cgi/php/1133361560/
0516nobodyさん
2006/02/09(木) 02:07:08ID:???0517nobodyさん
2006/02/09(木) 04:00:41ID:???任意ってのは好きな時間を入力できるって意味で、何時の時間を基準とするかが示されていない
1970が基準とするならgmtimeでもlocaltimeでも好きなのを使え
1970以前なら・・・俺にゃわからんので他の人おながい
0518nobodyさん
2006/02/09(木) 04:04:11ID:I2pVJ8U2ソースから消すのはもちろん簡単ですが、サイト上からそれを削除できるようにしたいのです
●●.datというファイルから特定の行を削除orそれ以外を保存するというのはどういった方法がいいのでしょうか?
先輩方のご指南よろしくお願いいたします
0519nobodyさん
2006/02/09(木) 04:04:46ID:???起算する日時分の秒数を足してlocaltime()なんかで変換。
0521nobodyさん
2006/02/09(木) 04:23:52ID:???下の段落だけ読めたので、そこに反応すると、
http://www.kt.rim.or.jp/%7Ekbk/perl5.005/perlfaq5.html#How_do_I_change_one_line_in_a_fi
とかTie::Fileとか、巷に落ちてる掲示板のスクリプトを読めばおk
0522nobodyさん
2006/02/09(木) 04:26:27ID:???localtime(GMT+9) → 1973/11/30(Fri) 06:33:09
gmtime → 1973/11/29(Thu) 21:33:09
0523522
2006/02/09(木) 04:27:34ID:???0525524
2006/02/09(木) 05:17:43ID:???ああそうか1970を引けばいいのか
でも123456789秒から1973/11/30(Fri) 06:33:09をどうやって?
0526nobodyさん
2006/02/09(木) 05:57:10ID:???open F, "+<●●.dat" or die $!;
flock F, 2;
my @data = <F>;
splice @data, 特定の行, 1;
seek F, 0, 0;
print F @data;
truncate F, tell F;
close F;
0527524
2006/02/09(木) 07:09:53ID:???1: 任意の“秒”$unkotimeから分・時間・日・月・年を求めたい
2: それでlocaltime($unkotime)でやってみたが
3: 以下のようになった
・$yearから70を引いた → 100年を超えないときはおkだけど100年で“-70年”になる
・$hourから-9 → “-3”時などになる
・$wdayから-1 → 現在のところ支障なし(?)に見えるが…
ちなみに鯖は国内です
0528nobodyさん
2006/02/09(木) 08:10:50ID:???($unkotime % 60)←秒
(int($unkotime / 60) % 60)←分
もっと簡単な書き方あるかもしれないが、こんな感じであとは自分で考えれ。
0529nobodyさん
2006/02/09(木) 09:04:42ID:???0530nobodyさん
2006/02/09(木) 10:20:40ID:???0531nobodyさん
2006/02/09(木) 14:06:01ID:???mygmtime_presetを起算日として、gmtime互換の日付を返す。
1970,1,1を渡すとgmtimeと同じ動きをする(はず)。
use Date::Calc qw(Add_Delta_Days Day_of_Week Day_of_Year);
my $gmtime_ad = mygmtime_preset(1, 1, 1);
print join(" ", $gmtime_ad->(123456789)), "\n";
exit;
sub mygmtime_preset
{
my @base = @_;
return sub {
my $sec = shift;
my @date = Add_Delta_Days(@base[0..2], $sec/(24*60*60));
my $wday = Day_of_Week(@date);
my $yday = Day_of_Year(@date)-1;
$date[0] -= 1900;
--$date[1];
return ((gmtime($sec%(24*60*60)))[0..2], reverse(@date), $wday, $yday, 0);
};
}
0532nobodyさん
2006/02/09(木) 14:18:34ID:46AFp3BFファイルの中にある“。”と“、”の数を数えたいんですけど
$word=~ /。/g;
だと・・
どうすればいいですか?
0533nobodyさん
2006/02/09(木) 14:23:27ID:???0534nobodyさん
2006/02/09(木) 14:41:50ID:46AFp3BFありがとうございます
$文字数 = $word;
$文字数 = s/。/。/g;
ってのはおすすめできないんでしょうか?
0535nobodyさん
2006/02/09(木) 14:52:24ID:???0536nobodyさん
2006/02/09(木) 15:07:47ID:???0537nobodyさん
2006/02/09(木) 17:37:51ID:???勿論自分で使うの限定で。
0540nobodyさん
2006/02/09(木) 18:12:47ID:???うん、確かに煩雑だけど、それを補って余りあるぐらい見やすいかなと。
あとは、変数名考えるのも結構大変だしねw
0541nobodyさん
2006/02/09(木) 18:28:53ID:???そんなあなたにはjavaがお勧め
0542nobodyさん
2006/02/09(木) 20:02:23ID:???そんなあなたにはrubyがお勧め
0543nobodyさん
2006/02/09(木) 20:05:35ID:???初めて知った。
0544nobodyさん
2006/02/09(木) 21:15:33ID:???0545nobodyさん
2006/02/09(木) 21:24:19ID:???0546nobodyさん
2006/02/09(木) 21:28:43ID:???連想配列というものは$xx{文字列}と定義すると書いてあるのですが、文字列はクォーテーションで囲っている物を文字列というのですよね?
ということは$xx{"soeji"}のように定義するのでよいのでしょうか?
よろしくお願いしますm(_ _)m
0548nobodyさん
2006/02/09(木) 21:38:22ID:???どうもありがとうございました!m(_ _)m
0552nobodyさん
2006/02/09(木) 21:58:17ID:???#!/usr/local/bin/perl
print "Content-type: text/html\n\n";
open(DATA, ">> data.dat");
print(DATA "%ENV<HR>\n");
close(DATA);
exit;
エラーが出て動きません。
自分ではこのソースに間違いを見つけられないのですが、その他パーミッションなどの設定のほうを疑うべきでしょうか…?
お願いしますm(_ _)m
0554nobodyさん
2006/02/09(木) 22:02:20ID:???0555nobodyさん
2006/02/09(木) 22:09:16ID:???0556549=550
2006/02/09(木) 22:16:00ID:???ん?何かまずいこと言った?
らくだ本にも、
> 次のような記法 (中略) で使われる裸の識別子は、裸のワードとは見なされない。
> なぜなら、これらは「文法的にほかに解釈がない」のではなく、
> 規則によって陽に許される書き方だからである。
って書いてるよ。
0557nobodyさん
2006/02/09(木) 22:19:08ID:???0558nobodyさん
2006/02/09(木) 22:35:43ID:???パーミッションじゃない?
open() のとこをこんな風にしてエラーメッセージを出させてみては?
unless (open(DATA, ">> data.dat")) {
print "Open error: $!\n";
exit;
}
0559nobodyさん
2006/02/09(木) 23:12:20ID:???クイズにヒントを出して楽しむ場所じゃ有りません
>552
print "Content-type: text/plain\n\n";
open(DATA, ">>data.dat");
print DATA "%ENV<HR>\n";
close(DATA);
print "output ok\n";
exit;
0562nobodyさん
2006/02/09(木) 23:21:28ID:???0563nobodyさん
2006/02/09(木) 23:22:22ID:???0564nobodyさん
2006/02/09(木) 23:26:16ID:???0565nobodyさん
2006/02/09(木) 23:26:53ID:???0566nobodyさん
2006/02/09(木) 23:26:57ID:???0567nobodyさん
2006/02/09(木) 23:28:12ID:???>565
0568nobodyさん
2006/02/10(金) 00:21:11ID:???0569nobodyさん
2006/02/10(金) 00:23:50ID:???0570552
2006/02/10(金) 02:09:46ID:???0571nobodyさん
2006/02/10(金) 02:17:10ID:???my %tmp2 = ('mode'=>'hoge','data'=>'test');
push @tmp1, \%tmp2;
↑と同じ事を1行でやろうとすには、どうしたら良いのでしょか?
my @tmp1 = (('mode'=>'hoge','data'=>'test'));
↑では、できませんでした…。
0572nobodyさん
2006/02/10(金) 02:39:03ID:???0573nobodyさん
2006/02/10(金) 02:44:06ID:???0574ヽ(´ー`)ノ ◆.ogCuANUcE
2006/02/10(金) 03:17:56ID:???my @tmp1 = ({'mode'=>'hoge','data'=>'test'});
リファレンスについて勉強しる。
0575nobodyさん
2006/02/10(金) 04:19:33ID:???レスをちゃんと読んだか?
質問の投げ去りはやめろや
0576質問
2006/02/10(金) 11:34:07ID:+Mjswkwe2項分布内のひとつの項を$k_posとする場合、
for($j=1;$j<10;$j++){
$k_pos=combi($g,$b)*(($bl_bun[$j]/65536)**$b)
*(((65536-$bl_bun[$j])/65536)**($g-$b));
}
というコードにすると、$gや$bが大きい場合、結果が出なくなってしまいます。
(combiというのは自作subです)
恐らく、掛け合わせる数が思いっきりでかい数と思いっきり小さい数を掛け合わせてるのが原因だと思います。
何か解決方法はありますでしょうか?よろしくお願いします。
0577nobodyさん
2006/02/10(金) 14:05:43ID:???は試してみた?
0578nobodyさん
2006/02/10(金) 17:20:13ID:???これの値がいい加減だと読み込みが変になるみたいで、レスポンスが大幅に遅くなりました。
i-modeのためContent-Lengthは必須みたいで困ってます。
値を取るのは一般的な方法で全データを変数に入れてlengthで計ってるんですけど
うまくいかないです。
何が原因やら・・・文字コードはUTF8で統一していますが・・・
0579nobodyさん
2006/02/10(金) 17:21:22ID:???1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
0580578
2006/02/10(金) 17:40:28ID:???どうも。でへへ。
もしかしたら僕と同じミスをする人が出てくるかもしれないので原因を書いておきます。
えーと、lengthで計算する変数に"Content-type: text/html"を含めていたので
うまく計算できなかったみたいです。
この一文を外して、
print "Content-type: text/html\n";
print 'Content-Length: ', $length, "\n\n";
print $data;
としたら上手くいきました。
どうもスレ汚しすみません。
0581nobodyさん
2006/02/10(金) 20:19:09ID:???0582nobodyさん
2006/02/10(金) 21:02:02ID:???0583nobodyさん
2006/02/10(金) 21:15:50ID:???0584nobodyさん
2006/02/10(金) 21:48:34ID:???0585nobodyさん
2006/02/10(金) 21:59:59ID:???0587nobodyさん
2006/02/11(土) 00:14:36ID:???おやすみうな
0588nobodyさん
2006/02/11(土) 01:25:48ID:???0589質問
2006/02/11(土) 08:21:02ID:qlKqkAMKしたいのですが、bignumはどこにあるのでしょうか?
0590nobodyさん
2006/02/11(土) 09:05:06ID:???0592ヽ(´ー`)ノ ◆.ogCuANUcE
2006/02/11(土) 13:32:23ID:???0594ヽ(´ー`)ノ ◆.ogCuANUcE
2006/02/11(土) 18:51:50ID:???あ、なるほど。そうすると不完全だけど、perldoc -l かな。
ttp://blog.livedoor.jp/nipotan/archives/50146747.html
0595nobodyさん
2006/02/12(日) 06:58:32ID:bHuVlhbgバージョンが5.0?(詳しくは失念しましたが)からは種となるsrandを使わなくても良くなりましたよね?
バージョンが5.8のサーバで昔作られたsrandが使用されているスクリプトを使っていたんですが、
先日新しいバージョンではsrandを使うとむしろ乱数の品質が下がると言う事を知りました。
元よりどうも乱数が偏っているなと感じていたんですが、
それはこのsrandの性と考えていいんでしょうか?
それとも単なる勘違い的なものでしょうか?
乱数の使い方はおみくじとかサイコロとかそういったもので、
何かのシミュレートとかの用途ではありません。
今までサイコロで言えば1が5回連続して出たけど、それは確かにたまにはあるし、
たまたま出た時が強く印象に残っただけだ、と思っていたんですが。
とりあえずsrandは外す方向で考えているのは当然なんですけど、
どうにも今まで起きてた事象のモヤモヤが引っかかって。
0596nobodyさん
2006/02/12(日) 08:04:29ID:???srand(1)なら1番の乱数表を使うというような。
乱数の質はシステム依存。
1万回サイコロを振った程度なら偏るものだけどね。
偏りがほしくないのなら、別の方法を考える。
0597nobodyさん
2006/02/12(日) 09:33:07ID:???> 偏りがほしくないのなら、別の方法を考える。
? 何を言っているのかわかってる?
0598nobodyさん
2006/02/12(日) 09:56:51ID:???0599nobodyさん
2006/02/12(日) 10:05:55ID:???ただの勘違い。
ただしまともな乱数使ってもプログラムの中で偏った分布をするような
プログラミングがされていたら当然偏るけどね。
0601596
2006/02/12(日) 10:10:06ID:???0602nobodyさん
2006/02/12(日) 11:07:16ID:???表示させるすべての桁でランダムで数字を表示するプログラムを改造して、アルファベットもランダムで表示させたいのですが、どう改造すればいいでしょうか?
ソースは、
# ランダム桁のランダム数字の生成
$max_num =1;
$min_num =1;
for( ; ; ){
$num_digit = rand($MAX_DIGIT)%$MAX_DIGIT+1;
last if($num_digit >= $MIN_DIGIT);
}
for($i=0; $i<$num_digit; $i++){ $max_num *= 10; }
$min_num = $max_num/10;
for( ; ; ){
$num = rand($max_num)%$max_num;
last if($num >= $min_num);
}
です。
0〜9まではこれで表示できるんですが、'a'〜'z'までを時間を種にして表示させたいんです。
0603nobodyさん
2006/02/12(日) 13:32:27ID:???0604nobodyさん
2006/02/12(日) 14:11:18ID:???XXX には半角アルファベット大文字か数字が入り、1桁から3桁程度です。
だいたいうまくいくのですが、「階」という漢字のあとにXXX号室が来ると化けてしまいます。
ソースコードは次の通りです。環境はWindows2000 ActivePerl5.8.7です。
my @a;
my @b;
push @a, "A4号室";#うまくいきます
push @a, "1FC5号室";#うまくいきます
push @a, "1階206号室";# K206号室 になってしまいます
push @a, "A棟207号室";#うまくいきます
foreach (@a){
push @b, "$&\n" if /[A-Z0-9]+号室/;
}
print @b;
「1階206号室」のときだけ「K206号室」になってしまいます。
何が原因で、どうすればよいのでしょうか。
どなたかご教授いただけると助かります。
0605nobodyさん
2006/02/12(日) 14:38:27ID:???「階」が Shift_JIS だと「8A 4B」なので二バイト目の「4B」が「K」にあたるのが原因だね。
/[A-Z0-9]+号室/s にすればいい。
0606605
2006/02/12(日) 14:39:03ID:???Perl だとどうするんだろう?
0607nobodyさん
2006/02/12(日) 14:44:47ID:???てけとーな応急処置だけど、よかったらどうぞ。
0608nobodyさん
2006/02/12(日) 14:46:18ID:???0610604
2006/02/12(日) 15:14:54ID:???原因は>>605さんのおっしゃるように、Shift_JISの2バイト目とマッチしてしまったからなのですね。
勉強になりました。
対処としては>>607でうまくいきました。ありがとうございました。
(?<![\x81-\xfc])の部分ですが、Shift_JISの2バイト目を取らないように、
「左側にShift_JISの1バイト目が存在しない位置」を指定しているという理解で合ってますか?
0611604
2006/02/12(日) 15:48:35ID:???>>604のコードには記述しませんでしたが、処理対象には●12号室 ■10号室 のようなパターンもあり、
これまでは上手くいってましたが、>>607では 2号室 0号室 と出力されてしまいます。
Shift_JISは使わないほうが良いのでしょうか・・・
0612nobodyさん
2006/02/12(日) 15:59:29ID:???0613nobodyさん
2006/02/12(日) 16:57:35ID:???use Encode;
my $pattern = '([A-Z0-9]+号室)';
my $str = "1階206号室";
Encode::from_to($pattern, 'sjis', 'utf8');
Encode::from_to($str, 'sjis', 'utf8');
$str =~ /$pattern/;
my $match = $1;
Encode::from_to($match, 'utf8', 'sjis');
print $match;
0614607
2006/02/12(日) 18:51:15ID:???あくまで >>613 の言うように utf8 で処理するのが王道なのは百も承知で。
push @b, "$1\n" if /(?:[\x81-\xfc].)*([A-Z0-9]+号室)/;
0615nobodyさん
2006/02/12(日) 20:04:49ID:???乱数以外の偏らない別の方法って何?
ヒントだけでもいいから教えて
偏らないってどういう意味?
1万回やると「6」は1666回出るの?それとも1667回出るの?
0617nobodyさん
2006/02/12(日) 20:09:39ID:???または
/[A-Za-z0-9]{1,3}号室/
0619nobodyさん
2006/02/12(日) 23:28:00ID:ptODJMag削除パスワードが“1111”や“1212”、“1122”みたいな単純なパスワードを弾くには
どうすればいいでしょうか?
if ($password = ~ /1111/){ $error = 'エラーです'};
if ($password = ~ /1212/){ $error = 'エラーです'};
みたいにいちいち指定するよりもスマートな方法を伝授してください
0620nobodyさん
2006/02/12(日) 23:31:23ID:???0621619
2006/02/12(日) 23:42:10ID:ptODJMag1111 などの連続
1212 1122 1222 などの2つの種類の文字のみ
のつもりです
0622604
2006/02/12(日) 23:54:16ID:???うまくいきました。ありがとうございます。
調べて初めて知ったのですが、UTF8だと文字の途中のバイトでマッチしなくてすむようなので、
このやり方が適切みたいですね。
>>614
[\x81-\xfc]のあとのドットで2バイト目をマッチさせてるんですね。
ドットは任意の1文字としか考えてませんでしたので、途中の1バイトを1文字とみなして
マッチさせるとは思いもしませんでした。勉強になります。
>>616-617
そのやり方でも上記データを処理できますが、アルファベットは大文字固定で、
長さは3文字以上もありうるので[A-Z0-9]+になります。レスありがとうございました。
0623nobodyさん
2006/02/12(日) 23:57:14ID:???if (scalar (grep { !$seen{$_}++ } split //, $password) <= 2) {}
とかどうだろう。
0624619
2006/02/13(月) 00:18:53ID:NkDDMowLどうもです
書き忘れましたけど最初↓
if ($password = ~ /(.)(\1|(.))(\1|\2)(\1|\2)/){ $error = 'エラーです'};
これだとなんかおかしいんです
どこがおかしいのか自分でも
0625nobodyさん
2006/02/13(月) 01:06:45ID:???0626nobodyさん
2006/02/13(月) 01:07:12ID:bzAWjmTkプログラム中に
print $env = $ENV{'QUERY_STRING'};
と文を書き
$envに「name=maruyama」が入ることを期待して
URLに
http://www.hogehoge.jp/cgi-bin/index.cgi?name=maruyama
を打ち込みましたが「Internal Server Error」となります。
この場合URLの「?」の後ろ(name=maruyama)をブラウザに表示させるにはどのようにしたらよいのでしょうか?
0627nobodyさん
2006/02/13(月) 01:11:46ID:???print $query;
0628nobodyさん
2006/02/13(月) 01:12:32ID:???0629nobodyさん
2006/02/13(月) 01:14:48ID:???0630619
2006/02/13(月) 01:23:47ID:NkDDMowLif ($password = ~ /(.)(\1|(.))(\1|\2)(\1|\2)/){ $error = 'エラーです'};
0631nobodyさん
2006/02/13(月) 01:33:47ID:???最後の2文字を入れ替えてごらん
それと・・・
>629
0632nobodyさん
2006/02/13(月) 01:37:18ID:bzAWjmTk違うところが間違ってました。
お答えありがとうございました。
自己解決しました。
ご迷惑をおかけしました
0633619
2006/02/13(月) 01:38:58ID:NkDDMowLif ($password = ~ /(.)(\1|(.))(\1|\2)(\1|\2)/){ $error = 'エラーです'};
でも
if ($password = ~ /(.)(\1|(.))(\1|\2)(\1|\2)/){ $error = 'エラーです';}
でも結果は同じでした
(.)(\1|(.))(\1|\2)(\1|\2) ←ここをどうすればいいんでしょうか?
0634nobodyさん
2006/02/13(月) 02:17:57ID:???# 9文字以下はエラー
if(length($pass) < 9){ &error(); }
# 数字小文字大文字記号が混ざってないとエラー
if(!(($pass =~ /\d/) && ($pass =~ /[a-zA-Z]/) && ($pass =~ /[_!#$%&'()=\-"\[\]\|{}\/\.,\?]/))){ &error(); }
# 同じ文字が連続したらエラー
if($pass =~ /([0-9a-zA-Z])\1/g){ &error(); }
0635634
2006/02/13(月) 02:20:28ID:???$pass =~ /(.)\1/g
0636619
2006/02/13(月) 02:25:30ID:NkDDMowLどうもです。
2種の文字で構成されるパスの場合のエラーの場合どうすればいいでしょうか?
0637nobodyさん
2006/02/13(月) 02:28:03ID:???0640634
2006/02/13(月) 04:00:03ID:???ちったぁ考えろ
終了
0643nobodyさん
2006/02/13(月) 14:25:40ID:???open(UNKO "kusai.txt");
@BENKI=<UNKO>;
みたいにopen()関数で開いたテキスト内容(別にテキストじゃなくても良いが)
を配列に代入してるけど、スカラーじゃ駄目なの?
スカラーだと変数が32bitしかないから、エラい人が個々の配列にに自動で文字列を
一文字づつ代入してくれるから?
0644643
2006/02/13(月) 14:26:52ID:???脳内補正よろしく。
0645nobodyさん
2006/02/13(月) 14:56:24ID:???<>はスカラーコンテキストで使用すると一行読み込む。( $hoge = <FUGA> )
リストコンテキストで使用するとファイルをすべて読み込む。( @hoge = <FUGA> )
一気に配列に読み込む必要性が無ければ、
スカラーコンテキストで一行ずつ読み込んだ方が使うメモリーは少なくてすむので
私としてはそうすることをお勧めしたい。
しかし、一気に読み込むことでファイルをロックするべき時間が短くなるという利点もあり、
そういう風に一気に読み込むことを好む人もいる。前にこのスレで議論になったこともあった希ガス。
> 個々の配列にに自動で文字列を一文字づつ代入
配列の個々の要素に一文字一文字、ということ?一行ずつの文字列が入るよ。
$hoge[0] = "foo\n";
$hoge[1] = "bar\n";
> スカラーだと変数が32bitしかないから
Perlでは内部的に自動で整数型、不動小数点型、文字列型などを変換する。
ユーザ側は通常大きさを考えるようなことは無いし、この場合では文字列型になる。
0646nobodyさん
2006/02/13(月) 18:09:49ID:???# メモリの許す限り全Read
@lines = <IN>;
# 改行まで
$line = <IN>;
メモリ使用量に関して645さんのを補完すると
foreach (<IN>){ 〜処理〜 }
じゃなくて
while (<IN>){ 〜処理〜 }
です。
・・・だよね? (;´∀`)
0647nobodyさん
2006/02/13(月) 20:42:55ID:???0648nobodyさん
2006/02/13(月) 22:21:17ID:???上のaaa.cgiはフォーム入力からデータをファイルに書き出すCGIです。
SUBMITで自分自身を呼び出して何回も書き込めるようにしています。
下のbbb.cgiはaaa.cgiで作ったファイルからデータを1件づつ読み込んでいます。
【疑問】aaa.cgiでSUBMITを押してもbbb.cgiが動かないので画面のデータが更新されない。
【希望】aaa.cgiで更新したデータをすぐに下のbbb.cgiを動かして画面を更新したい。
bbb.cgiに更新ボタンを設置するのはやりたくない。
どうすればいいでしょうか?
0649nobodyさん
2006/02/13(月) 22:38:17ID:???0650nobodyさん
2006/02/13(月) 22:43:31ID:???> while (<IN>){ 〜処理〜 }
この二つって何が違うのでつか?
0651nobodyさん
2006/02/13(月) 22:51:19ID:???条件式が真の間繰り返す。
行入力演算子のときはwhile。
0652nobodyさん
2006/02/13(月) 23:03:26ID:???そんなあなたには
つ【JavaScript】
0653nobodyさん
2006/02/13(月) 23:11:16ID:???0654648
2006/02/13(月) 23:48:12ID:???652さん、その手もありましたか。調べてみます。
653さん、キーワードありがとうございます。やってみます。
ヒントありがとうございました。<(_ _)>
0655nobodyさん
2006/02/14(火) 00:32:58ID:INKxTjszprint qq(<INPUT type="submit" value="push">\n);
print qq(<input type="hidden" name="mode" value="change">\n);
print qq(</FORM>\n);
これを実行する(WEBページでPUSHボタンを押す)と「ファイルのダウンロード」(ローカルに保存)となってしまい、CGIが実行しません。
CGIを実行させるにはどのようにしたらよいのでしょうか?
0656nobodyさん
2006/02/14(火) 00:51:49ID:???・foreachやforはリストを元にしたループも可能。リストコンテキスト。ループ前に全部読む。
・while(<FH>)はwhile(defined($_ = <FH>))の略記。スカラーコンテキスト。ループ1周で1行読む。
>>655
実際に実行されてる可能性もある。とりあえずそれをダウンロードして中身をチェック。
CGIのプログラム本体が落ちてきたのならサーバ側の設定の問題でPerlは関係ないだろう。
0657655
2006/02/14(火) 01:45:00ID:INKxTjszApacheの設定ですかねえ。
どこをどのように書き換えたらよいのかよくわからないです・・・。
0658nobodyさん
2006/02/14(火) 01:51:15ID:???0659nobodyさん
2006/02/14(火) 02:08:04ID:???read(STDIN, $str, $ENV{'CONTENT_LENGTH'});
は
$str = <STDIN>;
とどこが違うんですか?
0660nobodyさん
2006/02/14(火) 02:26:53ID:???0661nobodyさん
2006/02/14(火) 04:01:35ID:???0662643
2006/02/14(火) 13:54:25ID:???つまり便器に入ったウンコを一段ずつ取り出すには配列の個々にアクセスすれば良い訳ですね。
0663nobodyさん
2006/02/14(火) 16:36:29ID:TPTf1Qt3(ひらがなのみとか、全角文字のみとか、半角英数のみとか)
何か情報がまとまってあるところないでしょうか?
というか、今ひらがなのみはなんとか以下のコードで動いたんですが
print "Content-type: text/html; charset=Shift_JIS\n\n";
$pattern = '(?:\x82[\x9F-\xF1])*';
$data =~ /$pattern/;
if ($& eq $data){
print "match";
}else{
print "unmatch";
}
exit;
なんかあやしいです。
回りくどいし
0664nobodyさん
2006/02/14(火) 16:47:09ID:OAiNE+tIcgiが”更新 ”ボタンで呼び出されたのかどうかが知りたい
2 : やってみたこと、
cgi-lib.plの &ReadParse(*form)でformの値を取得してみた。
3 : でも何も新しい値が入っていない
ごめんなさい、どうやって類似の記事を探したらいいのかわからなくて
せめてヒントをお願いします。m(_ _)m
0665nobodyさん
2006/02/14(火) 17:17:27ID:???0666nobodyさん
2006/02/14(火) 17:31:14ID:???サンプルコードなどで適当に変数名をつけるときに使う
英語ではfooやbarが使われるのでfoo,barについてはrfcにもなっている
ほげ学のサイトがあるので探してみ
0667nobodyさん
2006/02/14(火) 18:13:45ID:???つ【アクセスログ】
0670nobodyさん
2006/02/14(火) 21:32:00ID:???コントロールコードを拒否したければ
\x0-\x1f の範囲でオケなのかな?
0671nobodyさん
2006/02/14(火) 22:37:15ID:mb5R1R6vPerlで作ったおみくじCGIをサイトに置いたんですが
わたしのサイトに来てくださる人の携帯(DoCoMo)では動作しないって言われました
それでわたしも携帯で動作を確認するとやっぱり動きませんでした
PCでは問題なく動作するのですが携帯向けには何かしなければならないのでしょうか?
>>8-で紹介されているサイト様も見てみたんですが書いてありません
詰まってしまいました
どなたか原因が分かりますでしょうか?
0672nobodyさん
2006/02/14(火) 22:52:06ID:???http://pc8.2ch.net/test/read.cgi/tech/1138519327/395
レスもらってるんだから、調べてからにして下さい。
動作しない、だけでは解決のしようがありません。
0673nobodyさん
2006/02/14(火) 23:13:17ID:mb5R1R6vすいません、そこにもないです
それからレスはhttp://pc8.2ch.net/test/read.cgi/tech/1138519327/395
で誘導されたので気づきませんでした
0674nobodyさん
2006/02/14(火) 23:20:59ID:???誘導してもらってるのに、全然読んでないことだけは分かった。
シュミレータで確認汁。
それと、動かないだけじゃわかりません。
0675nobodyさん
2006/02/15(水) 00:01:00ID:???○ シミュレート
ここもゆとりんぐ全開かwww
0676nobodyさん
2006/02/15(水) 00:02:40ID:TfAwMHcm名前を入力してもらいボタンを押すと運勢が出るという
おみくじCGIでPOSTメソッドです
携帯だとボタンが押せない状態なんです
0677nobodyさん
2006/02/15(水) 00:06:18ID:???企業でも普通に使ってるみたいw
0678nobodyさん
2006/02/15(水) 00:13:03ID:???ゆとりんぐは勉強してろ
0680nobodyさん
2006/02/15(水) 00:19:54ID:???0681nobodyさん
2006/02/15(水) 01:05:24ID:???0682664
2006/02/15(水) 01:44:50ID:AsKZTDBda.cgiのボタンを押す->入力されたデータにエラーが無いかチェック
0.エラー -> a.cgi でエラー表示
1.エラーがない ->a.cgiでBingo表示
0の状態でF5押しまくってると1の画面が表示されてしまいます。
a.cgiで結果を表示させるのが、そもそもの間違いなのでしょうか?
0683664
2006/02/15(水) 01:57:37ID:???入力されたデータにエラーが無いかチェック
に内在バグがきっとあるに違いない。という方向でちょっとダイブしてきまつ。
0684nobodyさん
2006/02/15(水) 03:37:26ID:???0686nobodyさん
2006/02/15(水) 10:29:13ID:???それって、二バイト文字の1btyle目のコードですよね。
組み込んでみます。
ちなみにこういうのって一覧表のあるサイトってありますか?
今は、IMEパッドで見てるんですが、なんか微妙に異なるようですので。
0687nobodyさん
2006/02/15(水) 11:13:19ID:???漏れはいつもここを薦めている。変換則も(Cが少々読めれば)わかるし
ttp://www-cms.phys.s.u-tokyo.ac.jp/~naoki/CIPINTRO/CCGI/kanjicod.html
UTF-8についてはRFCを読んで調べたけど解説しているサイト無いかな…
0688nobodyさん
2006/02/15(水) 15:21:01ID:PmYHM0Bw分かる方がおりましたら教えてください。
subloadFormdata{
my ($query, $pair);
read(STDIN, $query, $ENV{'CONTENT_LENGTH'});
print $query;
foreach $pair (split(/&/, $query)) {
my($key, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([0-9a-fA-F][0-9a-fA-F])/chr(hex($1))/eg;
$value = jcode::sjis($value);
$value =~ s/&/&/g;
$value =~ s/</</g;
$value =~ s/>/>/g;
$value =~ s/\x0D\x0A/<br>/g;
$value =~ tr/\t/ /;
$FORM{$key} = $value;
}
}
-------------------------------------
たとえばメインルーチンで
print "ここは出力される";
loadFormdata();
print "ここは出力されない";
0689nobodyさん
2006/02/15(水) 15:29:27ID:???0690nobodyさん
2006/02/15(水) 16:11:29ID:RdFiluwLソースを見なきゃ分からんようなCONTENT_LENGTHのことだと
も気づかないアフォは発言すべきじゃないな。
>>686
~ /[\x81-\xff][\x40-\xff]/ ←これで全角全て拾える
0692nobodyさん
2006/02/15(水) 16:52:35ID:???だから、HTML見直せとiモードの解説サイト貼ってあるのにw
0693nobodyさん
2006/02/15(水) 17:03:26ID:???-1を吐いた場合ですら表示できる。
0694nobodyさん
2006/02/15(水) 17:15:35ID:???httpd が補完してくれるのでプログラム側で吐く必要は無い。
むしろ陽に吐いた方が、自動広告挿入などでサイズが変わる
場合に不具合の元となる。
0696nobodyさん
2006/02/15(水) 18:27:23ID:???> 少なくとも Apache で CGI 経由なら、Content-Length ヘッダはhttpd が補完してくれるので
ホント?
0697nobodyさん
2006/02/15(水) 20:25:22ID:???はまってしまっております。
Bad Request
Hint: https://example.com:443/
ソースは下記で、HTTPでは正常接続の確認が取れました。
ご教示いただけますと幸いです。
use Socket;
my ($host, $filename, $data) = @_;
my $return_value;
my $port = 443;
my $iaddr = inet_aton("$host") or return 0;
my $sock_addr = pack_sockaddr_in($port,$iaddr);
socket(SOCKET,PF_INET,SOCK_STREAM,0) or return 0;
connect(SOCKET,$sock_addr) or return 0;
select(SOCKET);
$| = 1;
select(STDOUT);
my $len = length($data);
print SOCKET "POST /$filename HTTP/1.0\n";
print SOCKET "HOST: $host:$port\n";
print SOCKET "Content-Type: application/x-www-form-urlencoded\n";
print SOCKET "Content-length: $len\n\n";
print SOCKET "$data";
print SOCKET "\n";
while(<SOCKET>) {m/^\r\n$/ and last;}
while(<SOCKET>) {$return_value .= $_;}
close SOCKET;
return $return_value;
0698nobodyさん
2006/02/15(水) 22:48:50ID:OyUmOolC× subloadFormdata
○ sub loadFormdata
0699nobodyさん
2006/02/15(水) 23:28:35ID:???書き方はあってるみたいだけど、なんだろうね。
SocketがもしかしたらSSL通信に対応していないのかもしれない。
しかし確証はない
0700nobodyさん
2006/02/15(水) 23:32:33ID:PmYHM0Bwとやるとフォームのデータが表示されるのですが、
$value = "hogehoge";
print $FORM{'$value'};
とやると何も表示されません。
hogehogeを変数にして、$FORM{'hohehoge'}と同じ内容のものが表示されるようにするにはどのようにしたらよいでしょうか
0701nobodyさん
NGNG○ print $FORM{$value};
0702nobodyさん
2006/02/15(水) 23:46:37ID:???print $FORM{"$value"};
だね。
0703697
2006/02/16(木) 00:29:46ID:???ご返答有難うございます。
サーバを変えてみたのですが、やはり同じBad Requestが
返ってきてしまうというのが現状です。
もう少し頑張ってみます。
状況が変わり次第ご報告とさせていただきます。
0704700
2006/02/16(木) 00:43:41ID:P0dyMCanすいません。ハマってました^^;
ありがとうございました!
0705nobodyさん
2006/02/16(木) 02:26:31ID:???SocketでSSL通信やるなら自前で暗号化をやらなきゃならないが、そのコードはどこにあるのかね?
俺ならSocketでやるなんて大それたこと考えずに迷わずLWP。
>>699
わからないなら、それであってるとか、いい加減な回答しないで引っ込んでろよ。
0706nobodyさん
2006/02/16(木) 12:37:14ID:ZVhjliSj&ReadParse;
として、%inを多様しているスクリプトがあります。
これをCGI.pmへ変更したいのですが
$in{'name'}
↓
$q->param('name')
という変更をしないで$in{'name'}のまま使うには
どのような記述をすれば良いのでしょうか。
$incfnも利用しているので、こちらの対処方法もお願いします。
0707nobodyさん
2006/02/16(木) 14:06:48ID:???cgi-libでいいじゃん。
君には十分だよ。
0709nobodyさん
2006/02/16(木) 14:29:23ID:???言語切り替えが出来るように作ってあるページで、
フランス語なんかに言語を切り替えると文字化けして、その文字化けがタグを侵食したり
して表示が崩れたりします。フランス語やドイツ語を扱う時に注意する点ってどういうとこ
だか、誰かアドバイスもらえませんか?
ページは全部Perlで組んでます。
0710nobodyさん
2006/02/16(木) 14:40:42ID:???0711nobodyさん
2006/02/16(木) 19:00:13ID:???<form action=aaa.cgi>
<input type=submit value=更新>
</form>
としているのですが、これだとボタンをクリックすると画面がaaa.cgiに移動してしまいます。
画面が一切変化しないでaaa.cgiを動かすにはどうすればよいでしょうか?
0716nobodyさん
2006/02/17(金) 00:28:06ID:???perldoc CGIの「FETCHING THE PARAMETER LIST AS A HASH」という項目を読め。
0717676
2006/02/17(金) 00:50:26ID:LOkWB/9eこんなソースです↓
if ($ENV{'REQUEST_METHOD'} eq "POST"){
read(STDIN, $post, $ENV{'CONTENT_LENGTH'});
}else{ $post = $ENV{'QUERY_STRING'};}
for (split(/&/, $post)){
($word, $value) = m/^(\w+)=(.*)$/;
$value =~ s/\+/ /g;
$value =~ s/%([0-9A-F]{2})/pack('C', $1)/egi;
$q{$word} = $value;}
print <<EOS;
"Content-Type: text/html; charset=Shift_JIS"
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>たいとる</title>
</head><body>
〜略
PCでは大丈夫ですが携帯では表示はしても反応なしです
どなたかフォローお願いします
0718nobodyさん
2006/02/17(金) 00:52:34ID:???print <<EOS;
"Content-Type: text/html; charset=Shift_JIS"
これおかしくね?
何でダブルクォートが・・
つか略すな。そこも大事だ。
0722nobodyさん
2006/02/17(金) 01:49:09ID:???お前はそれだけの情報で足りると思ってんのか?
エスパーさん向けだな。
つか>>719で萎えた。
名前の欄はちゃんと確認しようねボクちゃん。
0723nobodyさん
2006/02/17(金) 01:59:20ID:???0725nobodyさん
2006/02/17(金) 03:33:08ID:???0726nobodyさん
2006/02/17(金) 03:36:38ID:???悔しいのは分かるがContent-lengthも知らない香具師はとりあえず黙ってろ
最近アレだな、厨房っぽいのが常駐してんだな
0728nobodyさん
2006/02/17(金) 03:55:29ID:???0730nobodyさん
2006/02/17(金) 04:05:10ID:???0731nobodyさん
2006/02/17(金) 04:22:14ID:???0732706
2006/02/17(金) 04:51:48ID:RcUmmaVqありがとうございます。
use CGI;
CGI::ReadParse();
とすることで、%inをそのまま利用でき、$incfnも$inへ変更してファイル名が無事に取得できました。
ただ、マルチパートの画像を取り出すことができません。
open (OUTFILE,">>/usr/local/web/users/feedback");
while ($bytesread=read($filename,$buffer,1024)) {
print OUTFILE $buffer;
}
close $filename;
としても0byteとなってしまいます。
今まで調べて試行錯誤してみましたが、どうにもなりませんでした。
どなたかアドバイスを頂けないでしょうか。
0733nobodyさん
2006/02/17(金) 04:56:57ID:???0734706
2006/02/17(金) 04:58:30ID:RcUmmaVq<form action="./***.cgi" method="POST" ENCTYPE="multipart/form-data">
としております。
0735nobodyさん
2006/02/17(金) 06:13:19ID:???0736nobodyさん
2006/02/17(金) 09:20:24ID:???次からは独り言はチラシの裏にでも書いてね。
0740nobodyさん
2006/02/17(金) 17:48:02ID:???よく気が付いたなw
ちゃんと閉じられてなかっただけっていうオチかな?
でも最後にちゃんと閉じられなくてもスクリプトが終われば閉じられると思ったし、ん〜なんだろ
0741nobodyさん
2006/02/17(金) 17:51:12ID:???0742nobodyさん
2006/02/17(金) 17:55:00ID:???でもまあ $filename っていう変数名からして十中八九 read() の使い方間違えてるんだろうね。
0743nobodyさん
2006/02/17(金) 17:57:35ID:???read("d:\test.txt", $readduff, 1024);
みたいな使い方を想像してるのかな?
0744nobodyさん
2006/02/17(金) 21:15:59ID:???Crypt-SSLeay-0.51はインストール済みでございます。
ソースは下記です。
ご教示いただけますと幸いです。
sub post_request{
use LWP::UserAgent;
my ($req_url, $data) = @_;
my $ua = LWP::UserAgent->new;
my $req = HTTP::Request->new(POST => $req_url);
$req->content_type('application/x-www-form-urlencoded');
$req->content($data);
my $res = $ua->request($req);
if($res->is_success){
return $res->as_string;
}
else{
return "";
}
}
0745nobodyさん
2006/02/17(金) 21:36:53ID:???0746nobodyさん
2006/02/17(金) 22:33:50ID:???$tmp = index( $text , 'title' );としました。
しかし、「title」だけではなく「TITLE」という文字の可能性もあり
そちらも同時に検索したいのですが、良い方法はありますか?
0747nobodyさん
2006/02/17(金) 22:38:03ID:???SSLeayはインストールさえしておけばLWPが自動的に
使用してくれると仕様書に書いてありましたが、認識に
相違がございますでしょうか。
0748nobodyさん
2006/02/17(金) 22:43:44ID:???正規表現こそがPerlの華。
$text =~ /title/i
だけどこれじゃ位置を知ることはできないから、使える用途はやや限られる。
多くの場合位置を知らなくても処理できるんだけどね。
本当にそれが現れる位置を知りたいなら、先に小文字に合わせてしまうという手がある
$tmp = index( lc $text , 'title' );
0750nobodyさん
2006/02/18(土) 00:16:59ID:???http://search.cpan.org/~nwclark/perl-5.8.8/pod/perlfunc.pod#pos_SCALAR__
$text = 'foo title bar tiTle, baz titlE foo Title, bar TITLE baz title';
print uc substr($text, pos($text) - 9, 4) while $text =~ /title/gi;
0751nobodyさん
2006/02/18(土) 00:19:21ID:???@-でわかるよ。
% perl -e '$text="aaaTitle"; $text =~ /title/i; print $-[0];'
3
0753nobodyさん
2006/02/18(土) 02:12:59ID:Hc0+hkLtなので携帯でも実行できるように改造おねがいします
if ($ENV{'REQUEST_METHOD'} eq "POST"){
read(STDIN, $post, $ENV{'CONTENT_LENGTH'});}
else{$post = $ENV{'QUERY_STRING'};}
for (split(/&/, $post)){
($word, $value) = m/^(\w+)=(.*)$/;
$value =~ s/\+/ /g;
$value =~ s/%([0-9A-F]{2})/pack('C', $1)/egi;
$q{$word} = $value;}
if ($q{'WORD'} ne ''){
for (split(/\r*\n+/, $q{'WORD'})){next unless /(.+)/;$word = $1;}
}
print <<EOS;
"Content-Type: text/html; charset=Shift_JIS"
<html><head>
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>たいとる</title>
</head><body>
$word
<form method="POST">
<input type="SUBMIT" value=" テスト "><input type="text" name="WORD">
</form></body></html>
EOS
0754nobodyさん
2006/02/18(土) 02:18:16ID:???自分でやる気が無い人はスレ違い
http://pc8.2ch.net/test/read.cgi/php/1127916965/
0755nobodyさん
2006/02/18(土) 02:20:21ID:???おみくじCGIの方ですか
<form method="POST">
actionを指定しないと確かドコモじゃ実行できないんじゃなかったか。
つか普通に記述ミスだろ
0756nobodyさん
2006/02/18(土) 02:56:52ID:Hc0+hkLt記述忘れでした
ありがとうございました
0757nobodyさん
2006/02/18(土) 05:25:34ID:???0758nobodyさん
2006/02/18(土) 07:46:55ID:???1139355934
1139301779
1139325935
1139231627
1139409916
リスト2
1139231627
1139301779
1139355934
1139325935
のようにリスト1とリスト2があって、それぞれ$list1[連番]$list2[連番]のようになっています。
リスト1の上から順に読み込んで、読み込んだ内容がリスト2のどれかと一致したとき
$check[$list1の内容]を1にしたいと考えています。下のようにやってみましたがうまくいきませんでした。
どのようにしたら実現できるのでしょうか。ご教唆お願いします。
$num=-1;
until($list1dir_filenum==$num){
$num++;
print "$list1name[$num]\n";
$list2num=-1;
until($list2dir_filenum==$list2num){
$list2num++;
print "$list2name[$list2num]\n";
if ($list1name[$num]eq$list2name[$list2num]){
$val=$list1name[$num];
$namecheck[$val]="1";
}
}
}
0761758
2006/02/18(土) 08:29:29ID:???すいません。goo辞書で確認してみたら自分が間違いでした。教示ですね。ありがとうございます。
で、質問のほうはどのようにしたらうまくいくのでしょうか。お願いします。
0762nobodyさん
2006/02/18(土) 08:38:48ID:???http://www.kt.rim.or.jp/~kbk/perl-5.8/perlfaq4.html#data__arrays
my @list1 = (0..9, 5..9);
my @list2 = (1, 5, 10, 10);
my %check;
{
my(%saw1, %saw2, %count);
# ++$count{$_} == 2 && ++$check{$_} for # 要素が多い時
# %check = map ++$count{$_} == 2 ? ($_, 1) : (), # map で一気に
%check = map +($_, 1), grep ++$count{$_} == 2, # 段階を踏んで
grep(!$saw1{$_}++, @list1), # それぞれのリストが既に
grep(!$saw2{$_}++, @list2), # ユニークなら必要無し
;
}
print map "$_\n", sort { $a <=> $b } keys %check;
0763nobodyさん
2006/02/18(土) 08:39:26ID:???for $i (0 .. $#list1){
$check[$i]= grep($list1[$i] eq $_, @list2);
}
0764nobodyさん
2006/02/18(土) 08:42:47ID:???> $check[$list1の内容]
早まるなっそんな馬鹿でかい数を配列の添え字に使ったら
すごい量のメモリが確保されるぞ
0765nobodyさん
2006/02/18(土) 11:31:58ID:???世の中こういうヘボだらけになって、メモリをガンガン使って欲しい。
0767nobodyさん
2006/02/18(土) 12:34:04ID:???0768nobodyさん
2006/02/18(土) 12:58:01ID:???テキスト入れた日にゃ・・・Perl落ちw
0769nobodyさん
2006/02/18(土) 13:01:05ID:???0770nobodyさん
2006/02/18(土) 13:02:07ID:???0771nobodyさん
2006/02/18(土) 13:09:37ID:???嘘だと思うならやってみれ。
0772nobodyさん
2006/02/18(土) 13:11:23ID:???0773765
2006/02/18(土) 13:21:35ID:???頭使わず、メモリ使え。
0775nobodyさん
2006/02/18(土) 16:14:55ID:???おみくじこそPerlの真こっちゅおって言ってたなぁ・・・
この前通りかかったら別の教室になってた
0776nobodyさん
2006/02/18(土) 17:47:39ID:???0778nobodyさん
2006/02/19(日) 00:53:45ID:???0779nobodyさん
2006/02/19(日) 01:32:35ID:xuHW0Wknどんな風に書いたらよいですか?
データファイル
4234 ←一行目(カウンター)
さいたま市<>県庁<>アリーナ<>レッズ ←二行目以降はループで
川越市<>時の鐘<>古都
秩父市<>祭り<>花の街
プログラム
open(FILE, "<hogehoge.dat");
eval{ flock(FILE, 1) };
@log = <FILE>;
一行目の読み込み
@logの一行目
二行目以降はこの処理
@logの二行目以降
0780nobodyさん
2006/02/19(日) 01:47:56ID:???カウンタと次からのデータは切っても切れないものなの?
違うファイルにしてもいい希ガス。
で、foreachじゃなくて、for (my $i = 1; $i ++; @log) {}
で、いい希ガス。
0781nobodyさん
2006/02/19(日) 01:49:33ID:???0782nobodyさん
NGNG$readline =~ s/\x0D\x0A|\x0D|\x0A/;
my($cnt) = int($readline);
while($readline = <FILE>){
〜処理〜
}
0783nobodyさん
2006/02/19(日) 01:50:09ID:???配列に読み込んでforeachするのが良いかどうかは置いといて。
一行最初に読めば良いじゃん。
open(FILE, "<hogehoge.dat");
eval{ flock(FILE, 1) };
$counter = <FILE>;
@log = <FILE>;
0785nobodyさん
2006/02/19(日) 14:03:52ID:???┌→┐
↑話↓
└←┘
0786nobodyさん
2006/02/19(日) 15:17:40ID:???しょうがねぇじゃん
過去ログ読まねぇんだもんorz
0787nobodyさん
2006/02/19(日) 17:04:46ID:???↓ ↑ ↑ ↓
└→┘ └←┘
↑↑
───────
低 気 圧
0788nobodyさん
2006/02/19(日) 19:19:24ID:sHmg7IfX今Z-Z BOARDをレンタルしているのですが、こんど自前の掲示板を設置したいと思っています
どうしても利用者のトリップを引き継ぎたいのですが設置しようと考えている掲示板は
暗号化の部分がこのようになっています
sub tripmake{
my($key,$salt,$trip);
$_[0]=~s/◆/◇/g;
if($_[0]=~/#(.+)/){
$key=$1;
$salt=substr($key."H.",1,2);
$salt=~s/[^\.-z]/\./go;
$salt=~tr/:;<=>?@[\\]^_`/ABCDEFGabcdef/;
$trip=substr(crypt($key,$salt),-10);
$_[0]=~s/#(.+)/◆<\/B>$trip/;
}
return $_[0];
}
Z-Z BOARDのトリップにすることは可能でしょうか?
皆様よろしくお願いいたします
0789nobodyさん
2006/02/19(日) 19:33:27ID:???可能です
終了、次の質問どうぞ
0790nobodyさん
2006/02/19(日) 20:25:14ID:???LWPのgetメソッドでページの情報を取ってきたのですが
その取ってきたページで使われている文字コードが何であるかを
知る方法は無いでしょうか?
0791nobodyさん
2006/02/19(日) 20:40:05ID:???0792nobodyさん
2006/02/19(日) 21:41:24ID:???0793nobodyさん
2006/02/19(日) 22:05:53ID:???0794nobodyさん
2006/02/19(日) 22:34:29ID:???0795nobodyさん
2006/02/19(日) 22:52:30ID:???0796788
2006/02/19(日) 22:58:25ID:???0797nobodyさん
2006/02/19(日) 23:03:51ID:???0798nobodyさん
2006/02/20(月) 00:26:00ID:ppD/ecqFとかしたときに、$xのなかにある正規表現の特殊文字を普通の文字として扱う場合はどうしたらいいですか
0801nobodyさん
2006/02/20(月) 08:03:48ID:???jcodeのgetcodeを使いました。>>793も調べてみようと思います。
0804801
2006/02/21(火) 02:29:14ID:???jcodeを利用したのですが、まだ文字化けが起こります。
$ua = LWP::UserAgent->new();
$res = $ua->get( $inurl );
if($res->is_success)
{
$title = $res->title;
&jcode::convert( $title , "euc", "", "z");
}
else
{
#異常終了処理
}
ページ取得、タイトル取得には成功しているのですが。
jcodeの使い方は合ってますか?
私の使い方が正しくないのでしょうか?
jcodeでは希望の処理はできないのでしょうか?
Encodeを使えば回避できますか?
0805nobodyさん
2006/02/21(火) 02:54:00ID:???0806nobodyさん
2006/02/21(火) 03:14:58ID:???渡すのは型グロブかリファレンス
&jcode::convert( \$title , "euc", "", "z");
0807nobodyさん
2006/02/21(火) 17:43:45ID:???普通のプリント文をlengthするにはどうしたらいいんでしょうか?
sub hoge{
print 'momoko';
return;
}
この、サブルーチンhogeで出力される'momoko'の長さ(6文字)を計りたいのです。
$a = length(&unko);
print $a;
だとうまくいきせん。どうやればいいんでしょうか。
0809nobodyさん
2006/02/21(火) 17:51:46ID:???どうしてもprintを使いたいならIO::ScalarなりIO::Stringなり、
さらに必要ならIO::Teeなりを使う必要がある。
0813nobodyさん
2006/02/22(水) 05:44:07ID:???サイトに来てくれた人のHTTP_REFERERを保存していて
どんな単語で検索して来たのかを表示しようと思ったんですけど
うまく表示されない場合があります。
$value =~ tr/+/ / ;
$value =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("H2", $1)/eg ;
jcode::convert( *value, 'euc' );
調べたんですけど、だいたいどこもこのくらいしか書いてないんです。
他に何か必要なことがあるんでしょうか?
0814nobodyさん
2006/02/22(水) 06:10:09ID:???0815nobodyさん
2006/02/22(水) 07:48:55ID:???ありがとうございましたmm()__
0816nobodyさん
2006/02/22(水) 15:01:17ID:???詳しく言うとボタンをつかわいで変数にデータを入れる方法とかなんですが・・・
その場合後ろのタイトルとかに?をつけてポストとか書けばいいんでしょうか?
なんとかしてボタンじゃなくてリンクだけで送信されるようにしたいのですが。
宜しくお願いします。
0817nobodyさん
2006/02/22(水) 15:12:46ID:???それぞれ対応したページを生成する掲示板を作っています。
その掲示板に’ホームへ戻る’のリンクをつけて、その呼び出した元のページへ帰るようにしたいのですが、
どのような方法があるでしょうか?
最初はリファラーをクッキーに保存しておけばいいかなと思ったんですが、
imodeはクッキー使えないみたいなので困っています。
他の方法があれば教えてください。
0818nobodyさん
2006/02/22(水) 15:21:39ID:???クリック保証型の詐欺ですか (; ̄^ ̄)
0819nobodyさん
2006/02/22(水) 15:23:17ID:???面倒くさいだろうけど、<input type="hidden"〜 を使うしかないんじゃないかな
0820nobodyさん
2006/02/22(水) 17:49:13ID:???'KKK'をプリントしたいんですが・・・
どうやればいいんでしょうか。
$a = {
1 => 'aaa',
2 => 'bbb',
3 => 'ccc',
4 => $b->{test}[0]
};
$b = {
test => ['kkk','yyy']
};
print $a->{4}; # KKKをプリントしたいけどうまくいかないorz
0821nobodyさん
2006/02/22(水) 18:13:58ID:???それと$a,$bはsortで使う特殊変数だから、テストでも使わないのが吉。
0823nobodyさん
2006/02/22(水) 18:40:23ID:???Jcodeを使用しようと思い
Jcode一式をドキュメントルートのlibフォルダ下へコピーしました。
続いて、test.cgiに
use lib './lib';
use Jcode;
と記述しました。ですが、エラーになります。
ttp://www.aglabo.com/agl/proevo/perl/install/jcode-user.html
ここを見るとこれだけで使えるようなのですが
何が悪いのでしょうか。
0824nobodyさん
2006/02/22(水) 19:00:54ID:???エラーメッセージをコピペしないところが悪いんじゃないかなと思った
最近はEncodeもJcodeも入ってる貸し鯖が増えてると思ってたんだけど
そうでもないのかな?
0825nobodyさん
2006/02/22(水) 19:13:05ID:???utfフラグとかめんどくさくて結局Jcode使ってる。
0826nobodyさん
2006/02/22(水) 19:34:27ID:???すいません。
エラーは 500 Internal Server Error です。
use Jcodeをevalでくくってもだめでした。
0827nobodyさん
2006/02/22(水) 19:37:27ID:???うう。そっちじゃなくて、
use CGI::Carp qw(fatalsToBrowser);
を仕込んでおいたら吐いてくれそうなほうのエラーメッセージ。
0828nobodyさん
2006/02/22(水) 20:13:43ID:???CGI::Carp使ってみました。
でも500エラーのままかわりません。
use Jcode;をコメントにするとエラーはなくなります。
use Jcode or die("asdf");は無理なんでしょうか?
0829nobodyさん
2006/02/22(水) 20:14:51ID:???Encodeのある今、Jcodeなんてキモくて使えない。
utfフラグが面倒だったら常にfrom_to使えばいい。
0830nobodyさん
2006/02/22(水) 20:22:10ID:???0833nobodyさん
2006/02/22(水) 21:20:26ID:???0834nobodyさん
2006/02/22(水) 21:37:54ID:???0837nobodyさん
2006/02/23(木) 00:36:17ID:???山田家の逆襲を参考にファイルごとevalしてみたらこんなのが出ました。
Can't locate auto/Jcode/Unicode/utf8_euc.al in @INC
( (@INC contains:
./lib
/usr/lib/perl5/5.8.0/i386-linux-thread-multi
/usr/lib/perl5/5.8.0
/usr/lib/perl5/site_perl/5.8.0/i386-linux-thread-multi
/usr/lib/perl5/site_perl/5.8.0
/usr/lib/perl5/site_perl
/usr/lib/perl5/vendor_perl/5.8.0/i386-linux-thread-multi
/usr/lib/perl5/vendor_perl/5.8.0
/usr/lib/perl5/vendor_perl .) at lib/Jcode/Unicode.pm line 64
このline64ってのはコメント除いた行数なんですかね?
>>836
やったけどだめだったんです。
0838nobodyさん
2006/02/23(木) 01:12:06ID:???動いたら、それのほうが問題
0839nobodyさん
2006/02/23(木) 06:14:00ID:???eval {
require Encode;
};
if ($@) {
print $@;
}
eval 使う時って、use でなくて、require しないと止まるんやね。
あと、eval ブロックは、; セミコロン付けないといけないので、きをつけるべし。
0840nobodyさん
2006/02/23(木) 07:29:23ID:???print $@;
…じゃダメなの?
拙い自分用に拙く作ってみました。% hoge.pl Net::SMTP したりして遊ぶ。
#!/usr/local/bin/perl -w
use strict;
if (!$ARGV[0]) {
die("まじめにトラップする気がない。\n");
}
eval("use $ARGV[0]");
if ($@) {
print $@, "\n↑読め。\n";
} else {
print "$ARGV[0]が使える気配。\n";
}
0843nobodyさん
2006/02/23(木) 11:25:13ID:???eval("use Jcode");
ではエラなしの様子です。
eval{ Jcode::convert($hoge,"utf8","euc-jp"); };
だと>>837と同じエラがでます。
間違えて
eval{"use Jcode"};
としたときは
Undefined subroutine &Jcode::convert called
とでました。
0844nobodyさん
2006/02/23(木) 11:33:40ID:???これだけ実行すると何もエラー吐かないわけだけど。
0845nobodyさん
2006/02/23(木) 12:06:11ID:???perl -e "eval('use unko'); print $@"
0846nobodyさん
2006/02/23(木) 12:08:49ID:???ここみて同じ今年たら解決しました。
お世話になりました。
evalの件は勉強になりました。ありがとうございました。
0848nobodyさん
2006/02/23(木) 20:01:33ID:???0849nobodyさん
2006/02/23(木) 23:51:28ID:???SQL発行(insert)時に止まってエラーになったみたいなの
ですが、この現象を回避する方法をご教示いただけますと
幸いです。
DBはPgモジュールを使用し、Postgresで管理しております。
たしかにコマンド直打ちでSQLを実行してみると、ターミナルが
停止してしまいます。。
0850nobodyさん
2006/02/23(木) 23:52:30ID:???0852nobodyさん
2006/02/23(木) 23:56:18ID:???ちゃんとエスケープしてくれるんじゃないかな。
0853nobodyさん
2006/02/23(木) 23:57:35ID:???肝心のバイナリが貼り付けられませんでした。
「蕨市」と「ヘロ」の間には、エディタで開いて「SV」という
反転文字が入っております。
コードはSJIS→EUCに変換したものです。
0854nobodyさん
2006/02/23(木) 23:58:36ID:???元の文字列って何だろう?
そういうことも示せないってのは馬鹿かなにか?
0855849
2006/02/24(金) 00:22:49ID:???本当にありがたいです。。
もう少し具体的に説明させていただきますと、フォームはSJIS
ですので、入力があった文字はプログラムの先頭でEUCに
変換されます。
それをSQLにいれてinsertするのですが、その際に
「蕨市 〒ヘロ1-5-15」
↑
血管が浮き出るようなマーク
このような文字列でSQLが止まってしまっていることが発覚し、
改修していたのですが、どうしてもこのバイナリを処理すること
ができず困り果て質問させていただきました。
バイナリ文字は秀丸エディタで開くと、「SV」という反転文字が
入っております。
説明不足で申し訳ありません。
0856nobodyさん
2006/02/24(金) 00:26:33ID:???0859nobodyさん
2006/02/24(金) 00:35:54ID:???はい次
0860nobodyさん
2006/02/24(金) 00:38:18ID:???0862nobodyさん
2006/02/24(金) 01:17:56ID:???849が自殺していないことを祈る
0863nobodyさん
2006/02/24(金) 01:37:32ID:???0864nobodyさん
2006/02/24(金) 01:59:07ID:???何を使って変換したのか(できればモジュールのバージョンも)が分かれば、
原因も分かるかもね。
0865nobodyさん
2006/02/24(金) 05:23:53ID:???500エラー(文法エラーですよね?)になりました。
チェッカなどにかけてみると、
In string, @808 now must be written as \@808 at index.cgi line 70, near "@808"
index.cgi had compilation errors.
と、出たのですが、意味が分からなくて、ググってみたんですが当該情報が見つかりませんでした。
何が問題か、分かる方いましたら、お教えくださいますようお願いします。
0868nobodyさん
2006/02/24(金) 05:45:48ID:???有難う御座います
808なんて記述してないと思い込んで、確認してなかったですが、
(ファイルサイズ 808KB)
ってのがあってそこに\つけたら直りました
ほんと助かりました
0869nobodyさん
2006/02/24(金) 05:55:06ID:???0870nobodyさん
2006/02/24(金) 08:17:49ID:???0871nobodyさん
2006/02/24(金) 10:45:19ID:???0872nobodyさん
2006/02/24(金) 10:59:30ID:???0873nobodyさん
2006/02/24(金) 12:35:39ID:???1. 日本語文字列を使っている: YES => 2, NO => 30
2. Shift_JIS を使っている: YES => 10, NO => 3
3. EUC-JP を使っている: YES => 5, NO => 4
4. UTF-8 ...
みたいな。
0874nobodyさん
2006/02/24(金) 12:37:35ID:???使いやすければ使うし、そうでなければ無駄働きw
0875nobodyさん
2006/02/24(金) 13:17:52ID:???0876nobodyさん
2006/02/24(金) 13:49:15ID:???0877nobodyさん
2006/02/24(金) 13:51:23ID:???0878nobodyさん
2006/02/24(金) 13:55:04ID:???Shift_JIS のスクリプトにはお答えできません
0879nobodyさん
2006/02/24(金) 15:59:44ID:hXh5LOuqこちらで質問させて頂きます。
サーバのローカル上にある画像ファイルのMIMEタイプを
判別したいのですが、どうすればよろしいでしょうか?
GIFとJPEGが区別できるだけでいいです。
できることならモジュールとか使わず、
今のスクリプト上にシンプルに書きたいのですが。
0880879
2006/02/24(金) 16:03:26ID:hXh5LOuq画像のMIMEタイプって変ですね…。
画像のフォーマットの種類を判別したいのです。
よろしくお願い致します。
0881nobodyさん
2006/02/24(金) 16:22:19ID:???0882nobodyさん
2006/02/24(金) 16:24:24ID:???$file = $_[0];
open (FILE, "$file");
read (FILE, $data, 4);
close (FILE);
($type) = unpack ("H4", $data);
if ($type eq "ffd8") {
$type = "jpg";
} elsif ($type eq "8950") {
$type = "png";
} elsif ($type eq "424d") {
$type = "bmp";
} elsif ($type eq "4749") {
$type = "gif";
} else {
$type = "知るかボケ";
}
return ($type);
}
0883nobodyさん
2006/02/24(金) 16:45:12ID:???口悪くて性格も悪いやつもかなり混じってるけど。
0884879
2006/02/24(金) 16:53:33ID:hXh5LOuqどうもありがとうございます。
画像なんて普段扱わないから、さっぱり?でした。
>>883
ほんとですねw
0885nobodyさん
2006/02/24(金) 17:38:26ID:???特に問題は発生しないだろうけど、Win も考えるなら read の前に binmode を
0886nobodyさん
2006/02/25(土) 01:58:25ID:qE7CF1Aw外部ファイル呼び出しについて質問なのですが、呼び出し時に関数を
与えて呼び出す事は可能なのでしょうか?
ニュアンスとしましてはmain.cgiというソースの中に外部ファイル
(gaibu.cgi)を呼ぶ時にgetデータの送り方のように
require("gaibu.cgi?data=1");
としてgaibu.cgiへdata=1という関数を引き渡したいのですが・・・
main.cgiから渡されたdata=1というのをチェックして、gaibu.cgiの方で
main.cgiへ引き渡す関数を指定したいのですが。
妙な文章で申し訳ありませんが、どなたか宜しくお願い致します。
0887nobodyさん
2006/02/25(土) 02:23:48ID:???0888nobodyさん
2006/02/25(土) 02:28:14ID:???0890nobodyさん
2006/02/25(土) 02:48:36ID:???0891nobodyさん
2006/02/25(土) 02:54:14ID:???0892nobodyさん
2006/02/25(土) 02:56:47ID:???0893nobodyさん
2006/02/25(土) 02:58:46ID:???$ENV{"REQUEST_METHOD"} = "GET";
$ENV{"QUERY_STRING"} = "data=1";
my $data = `gaibu.cgi`;
0896nobodyさん
2006/02/25(土) 11:37:16ID:JV6sbN7wを読み込んで、その最終行だけを行ごと削除して出力したいのですが
ググっていろいろ調べて試したんですがうまくいきません。
よろしくお願い致します。
0898nobodyさん
2006/02/25(土) 13:50:14ID:???ロックとかエラー処理は自分で付け加えてね
open(IN, "inputfile.csv");open(OUT, ">outputfile.csv");while(my $inline = <IN>){if($inline =~ /XXX/){print OUT $inline;}}close(IN);close(OUT);
… どこのセルにXXXが含まれてるか分からんからこれ以上は無理
0899nobodyさん
2006/02/25(土) 13:51:44ID:???if(!($inline =~ /XXX/)){〜
0900nobodyさん
2006/02/25(土) 14:08:44ID:???0901nobodyさん
2006/02/25(土) 15:47:11ID:???0902nobodyさん
2006/02/25(土) 16:01:54ID:???0904nobodyさん
2006/02/25(土) 18:21:00ID:???>>901 と >>902 が上級者である根拠は?
0905nobodyさん
2006/02/25(土) 18:22:11ID:???0906nobodyさん
2006/02/25(土) 18:26:41ID:???0907nobodyさん
2006/02/25(土) 18:26:45ID:???0908nobodyさん
2006/02/25(土) 18:27:58ID:???0909nobodyさん
2006/02/25(土) 21:51:05ID:???0910nobodyさん
2006/02/25(土) 22:35:17ID:???今Perlの勉強の為に掲示板を作ってるんですが、
例えば十バイト毎に段落を変えたい場合どうすれば良いのでしょうか?
なにとぞご教授下さい。
0911nobodyさん
2006/02/25(土) 22:37:34ID:???0913nobodyさん
2006/02/26(日) 00:33:33ID:???0914nobodyさん
2006/02/26(日) 00:39:08ID:???1) 10バイトを別の文字列にコピー
2) その文字列を正規表現などで、正しい文字列かチェック
3) 正しくなければ、1バイト減らしてコピーして2)へ戻る
4) 正しければ終了
0915nobodyさん
2006/02/26(日) 02:24:54ID:???0916nobodyさん
2006/02/26(日) 14:45:09ID:???0917nobodyさん
2006/02/26(日) 16:03:42ID:QDNmTDhHですが宜しくお願い致します。
Q.関数の値を代入する際、サイズの制限はあるのでしょうか?
例えば私が考えているので
$test = "<table width=\"100%\" cellspacing=\"0\" cellpadding=\"0\">・・・";
などのように関数にそのままHTMLソースを入れているのですが結構なサイズ
になってしまうので不安です。
0918nobodyさん
2006/02/26(日) 16:05:28ID:???> ですが宜しくお願い致します。
ということにしたいのですね。:)
ちなみにどう「初め」たのか教えてください。
0919nobodyさん
2006/02/26(日) 17:06:28ID:???2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
もちろんどこまで「結構なサイズ」が変数に代入できるかを試した上での質問だよな?
0920nobodyさん
2006/02/26(日) 17:11:02ID:???自鯖でテストしろよ
0922nobodyさん
2006/02/26(日) 17:55:40ID:???0923nobodyさん
2006/02/26(日) 18:01:28ID:???0924nobodyさん
2006/02/26(日) 18:09:45ID:???末期かな
0925nobodyさん
2006/02/26(日) 18:23:15ID:???0926nobodyさん
2006/02/26(日) 18:57:50ID:???ごめんなさい、自鯖というのは何でしょうか?
それでテストということは、テストを行う環境ということでしょうか?
0927nobodyさん
2006/02/26(日) 19:40:19ID:???0928nobodyさん
2006/02/26(日) 19:48:41ID:???0929nobodyさん
2006/02/26(日) 21:04:48ID:???0930nobodyさん
2006/02/26(日) 21:54:22ID:???どのように書いたら良いのでしょうか?変数の選び方が間違っているのでしょうか?
ちなみに、現在は下のプログラムで、"192.168.0.1:80"をポートチェックしています。
for ($i = 0; $i<3; $i++)
{
$port=80;
$ip_add=192.168.0.1;
#↑の行を $ip_add=192.168.0.1+$i; みたいにしたい。
&CheckPort($portNo,$ip_add);
}
0931勉強中
2006/02/26(日) 22:16:58ID:???「NULL」と「LOW-BALUE(1バイトの'00')」は
違うものなのでしょうか???
0932nobodyさん
2006/02/26(日) 22:33:06ID:???0933nobodyさん
2006/02/26(日) 22:35:33ID:???32bits整数にしちゃうと楽かも♪
0935nobodyさん
2006/02/26(日) 22:57:08ID:???Cと違ってperlは文字列長を管理してるからヌル文字が境界にならない。
1文字だけの文字列を作っても、
内部ではreallocが多くならないように、長めにメモリが割り当てらる。
で、文字列長は1文字、とスカラ構造体のどっかに値が入る。
なので文字列にヌル文字入ってても平気。
0936nobodyさん
2006/02/26(日) 23:59:32ID:???my $port = 80;
for (my $x = 0; $x < 256; $x++) {
for (my $y= 0; $y < 256; $y++) {
my $ip_addr = sprintf("192.168.%d.%d", $x, $y);
CheckPort($port, $ipaddr);
}
}
0937nobodyさん
2006/02/27(月) 00:22:17ID:???0939nobodyさん
2006/02/27(月) 01:17:08ID:???ただ、自分の環境でしかテストしてないので間違いがあるかもしれないです
戻り値が 0 の場合はエラー判定してください
sub ip2dec{
my($ip) = $_[0];
my($basedec) = 256 * 256 * 256 * 256; # ベースとなる値
my(@quadip) = (0, 0, 0, 0);
my($ipdec) = 0; # 10進に変換された IP
@quadip = split(/\./, $ip);
# 全ての値が 0 〜 255 に収まってるかチェック
for(my $i = 0; $i < 4; $i++){
if(($quadip[$i] < 0) || ($quadip[$i] > 255)){
return 0;
}
}
for(my $i = 0; $i < 4; $i++){
$basedec = $basedec / 256;
$ipdec += $basedec * $quadip[$i];
}
return $ipdec;
}
0940nobodyさん
2006/02/27(月) 01:17:53ID:???shift 使えよ。
0941nobodyさん
2006/02/27(月) 01:23:23ID:???my($ip) = $_[0] || "";
0942nobodyさん
2006/02/27(月) 01:29:03ID:???取りあえずfor (my $x = 0; $x < 256; $x++)→for (0 .. 256)な。
0943nobodyさん
2006/02/27(月) 01:29:05ID:???0945nobodyさん
2006/02/27(月) 01:49:09ID:???foreach(1..65537){
print join('.', @ip), "\n";
foreach(reverse @ip){
($_ = $_+1 & 255) and last;
}
}
0946nobodyさん
2006/02/27(月) 01:52:39ID:???でさ、65537 って、0x10001 なんだけど。
0947nobodyさん
2006/02/27(月) 01:58:31ID:???$x なんて使ってないし・・・
>943
my($ip) = $_[0] || "";
そこには書かれてないけど
if(!$ip){ return 0; }
で抜けるようにした
ちなみに
&ip2dec("220.110.54.66");
みたく呼ばれることを想定
0948ヽ(´ー`)ノ ◆.ogCuANUcE
2006/02/27(月) 01:59:20ID:???0949nobodyさん
2006/02/27(月) 02:00:59ID:???出来るところは自分で書いた次第です
0950945
2006/02/27(月) 02:02:33ID:???foreach(0..65536){
print join('.', unpack("C4", pack("N", $ip+$_))), "\n";
}
>>946
ただのカウンタだから。
カウントする回数は適当にどうぞ。
0951nobodyさん
2006/02/27(月) 02:02:44ID:???すごいスーパーハカーですね。
for ($x = 0; $x < 256; $x++)
と
for $x (0 .. 256)
って同じ結果を得られるんですかね?
0953nobodyさん
2006/02/27(月) 02:04:32ID:???0954nobodyさん
2006/02/27(月) 02:05:17ID:???それでforのなかで$xが扱えるの?
いい事しりました
0955nobodyさん
2006/02/27(月) 02:06:48ID:???うっせ!そんなので下らない文字レスするなハゲ!あああ、私が悪うござんした。ケアレスミスぐらい多めに見ろやハゲ。
0956nobodyさん
2006/02/27(月) 02:07:28ID:???デスマ中でつか?
0957nobodyさん
2006/02/27(月) 02:08:31ID:???0958nobodyさん
2006/02/27(月) 02:11:54ID:???0959nobodyさん
2006/02/27(月) 02:12:47ID:???0960945
2006/02/27(月) 02:14:36ID:???これ忘れ物ですよ。
ttp://images-jp.amazon.com/images/P/4759222197.09.LZZZZZZZ.jpg
0961nobodyさん
2006/02/27(月) 02:21:18ID:???0962nobodyさん
2006/02/27(月) 03:10:33ID:???0963nobodyさん
2006/02/27(月) 07:31:56ID:???0964nobodyさん
2006/02/27(月) 08:37:23ID:???$string =~ s/?([0-9]+);/chr($1)/eg;
print $string; #ABC
0965nobodyさん
2006/02/27(月) 08:38:12ID:???my $string = "ABC"
0966nobodyさん
2006/02/27(月) 09:47:10ID:???0967nobodyさん
2006/02/27(月) 09:59:42ID:???0968nobodyさん
2006/02/27(月) 10:15:42ID:???0969nobodyさん
2006/02/27(月) 23:11:57ID:???可能であれば教えてくらはい。
ページAからページBに遷移した場合は1としてカウントし、
ページB内で何度更新しても1としてカウントする。
ページBからブラウザの戻るボタンを押してページAに戻り
再びページBに戻ってきた場合は1としてカウントする。
ただし、ページAはこちらでは操作出来ない(弄くれない)ものとする。
最初はリファラーチェックすればいけるかなぁと思ったんですが
ページAから遷移した状態のページBで何度更新してもページAの
リファラーが返っていたのでタメポですた。
何かいい案があれば教えてくらはいませ〜。
0970nobodyさん
2006/02/27(月) 23:27:41ID:???なのでページBでリロードしてもクッキーが取得できないのでカウントアップしない
ってのはどうだろか
0971nobodyさん
2006/02/27(月) 23:34:59ID:???0972nobodyさん
2006/02/27(月) 23:39:18ID:???レスありが�d
しかしながら>>969で書かせて頂きましたように
ページAはこちらでは操作出来ません。
よってページAでクッキーをセットってのが不可能となります。
またクッキーやJavaScript等は一切使えません。
そこ(ページAやページB)へアクセスしてくるのが
クッキーやJavaScriptに対応したものだけとは限らない為です。
わがまま言ってすいません。
0973nobodyさん
2006/02/27(月) 23:46:22ID:???早い話が「他人のサイト」扱いだと思えばいいの?
0975nobodyさん
2006/02/27(月) 23:51:05ID:???基本だから、セッション、リロードチェック辺りでぐぐって。
Bで毎回uniq IDを生成するんだよ。
0976nobodyさん
2006/02/27(月) 23:51:34ID:???リロードしてそのIPあったらカウントしないってのはどう
0977nobodyさん
2006/02/27(月) 23:52:53ID:???CookieやJSオフにしているユーザのことを考えるなら、
リファラを送らないように設定しているユーザも考えることになると思うが。
0978nobodyさん
2006/02/27(月) 23:57:02ID:???簡単すぎるのか、検索では出てきません。
よろしくお願いします。
0979969
2006/02/27(月) 23:59:40ID:???了解です。
いろいろとググりましたが
もっとググってみます。
>>976
>>戻るボタン押した時にそのIP削除
知識不足で申し訳ないです。↑はどのようにやればいいんでしょうか?
>>977
確かにそうですね。
ごめんなさい。
0980nobodyさん
2006/02/28(火) 00:00:59ID:???検索語に何を使っているのか気になる。
ttp://www.google.co.jp/search?q=perl+%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB
0981nobodyさん
2006/02/28(火) 00:16:04ID:???PHPのサンプルを見ると分かるかもね。
「セッション リロード対策」とかでググって。
そこまでやるかは別だけど。
0982nobodyさん
2006/02/28(火) 00:37:08ID:???<form action="cgiファイル" method=post>
<input type=hidden name=mode value=back2A>
<input type=submit value="Aに戻る">
</form>
--------
上で呼んだcgiファイル(Bでもいいや)で
・IPをログファイルから読み込んで削除
・最後にLocationでAに飛ばす
0983nobodyさん
2006/02/28(火) 16:43:39ID:???0984978
2006/02/28(火) 23:58:59ID:???でも、いまやって見たら、無事にできました。 ありがとうございました。
0985nobodyさん
2006/03/01(水) 13:00:29ID:042Ft4VLここみたいに画像を加工するツールを作りたいんですが、perlだけでできますかね?
0986nobodyさん
2006/03/01(水) 13:08:50ID:???0987nobodyさん
2006/03/01(水) 13:49:58ID:???無事送信出来る時と出来ない時があるのは、
Perlの書き方がまずいのでしょうか?
ググってみたものの、送信できない事はよくあるようですが、
(注意書きで「送信できない場合は[email protected]までご連絡ください」のような)
原因は何なんでしょうか?
0988nobodyさん
2006/03/01(水) 13:58:52ID:???> (注意書きで「送信できない場合は[email protected]までご連絡ください」のような)
これは action="mailto:〜" で片づけてる場合が多いんじゃないのかな。
あと、JavaScriptが効いてないと送信できないサイトでも見かけた。
0989nobodyさん
2006/03/01(水) 14:05:37ID:???0990nobodyさん
2006/03/01(水) 14:09:58ID:???画像処理にimagemagicとGDと2種類あるようですが、
グラフとか書きたいならGD
グラフを書くこと以外ならImageMagic
っていう認識でいんでしょか?
0991987
2006/03/01(水) 14:35:24ID:???ソース見てもらうのは悪いかなと思てたのですが…
うpしましうた。
※設定部分は省いてあります
http://up.spawn.jp/file/up12772.txt
ちなみに、JavaScriptは使ってません。
>>989
見れます。で、見てみました。
が、どうやら入力フォーム→確認画面までは到達し、その後送信ボタンを押しても何の反応もしなく
エラーすらも発生しないようなのです。
なので、それらしいログはなかったです。(まだざっと見ですが)
セキュティソフトとかが悪さしてる場合があるらしいですが、
4分の1の人が送れないらしいので、
さすがに問題は別なのかなと思ってます。
0992nobodyさん
2006/03/01(水) 15:21:35ID:???0995nobodyさん
2006/03/01(水) 15:50:16ID:???> print MAIL "Subject: $sub_msg\n";
おい。RFC 嫁。
0996987
2006/03/01(水) 15:54:21ID:???http://pc8.2ch.net/test/read.cgi/php/1141195171/l50
>>994
どの辺が?詳しく!!
>>995
ここ!?
0997nobodyさん
2006/03/01(水) 16:05:34ID:???0998nobodyさん
2006/03/01(水) 16:07:31ID:???直りんはダメな気配
ttp://up.spawn.jp/の上から5番目付近
0999nobodyさん
2006/03/01(水) 16:07:37ID:???1000nobodyさん
2006/03/01(水) 16:12:06ID:???10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。