Perlについての質問箱 26箱目

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
"The duct tape of the Internet" こと、Perlについての質問箱です。
"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
2デフォルトの名無しさん:2006/07/21(金) 01:18:40
[プログラミング自体の経験が無い奴はまずココを読め]
Perlプログラミング講座: http://www.site-cooler.com/kwl/perl/

[本]
リャマ: http://www.oreilly.co.jp/books/4873111269/
駱駝: http://www.oreilly.co.jp/books/4873110963/
Effective Perl: http://www.ascii.co.jp/books/detail/4-7561/4-7561-3057-7.html
クックブック: http://www.oreilly.co.jp/books/4873112028/

[オンラインマニュアル] (追加)
最新のドキュメント: http://search.cpan.org/~nwclark/perl-5.8.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/
3デフォルトの名無しさん:2006/07/21(金) 01:19:48
4デフォルトの名無しさん:2006/07/21(金) 01:20:55
5デフォルトの名無しさん:2006/07/21(金) 04:00:16
while() {
echo ">>1乙\n";
}
6デフォルトの名無しさん:2006/07/21(金) 06:25:03
my %hash = ( 乙 => 1);
7デフォルトの名無しさん:2006/07/21(金) 06:35:16
String found where operator expected at >>5, near "echo ">>1乙\n""
(Do you need to predeclare echo?)
8酩酊 ◆TWARamEjuA :2006/07/21(金) 06:58:49 BE:2287837-#
何でいちいち埋めるんかな。そっとしとけよって。
9デフォルトの名無しさん:2006/07/21(金) 08:19:10
乙一
10デフォルトの名無しさん:2006/07/21(金) 09:33:07
6連乙
11929:2006/07/21(金) 23:47:17
>>988
>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ヘッダを認識する範囲だけバッファして、それ以後は出力モード依存かなぁ)
12デフォルトの名無しさん:2006/07/22(土) 20:37:13
cpan> install Date::Simple
CPAN: 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 配下のディレクトリに自動ではいってくれないかね。
助けておくれ。

13デフォルトの名無しさん:2006/07/22(土) 20:57:48
>>12
コンパイル段階の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
1413:2006/07/22(土) 21:05:29
あ、もう一度ログを読み直して気づいた。多分cpanの初期設定ミスだ。
これやってみてくれ。
cpan> o conf make_arg
多分、
 make_arg   [1]
となると思う。なってたら
cpan> o conf make_arg ""
で消して
cpan> o conf commit
で保存しる
15デフォルトの名無しさん:2006/07/22(土) 21:08:55
>>13
Installing /usr/local/lib/perl5/site_perl/5.8.8/Date
でとりあえずインストールできた。
ありがとう。
しかし、毎回これが必要だとしんどいな〜
RedHat8,9 CentOS4系のcpanの時は、こんなことなかったのに。
FreeBSD6.1では、ふむ〜。。。。
16デフォルトの名無しさん:2006/07/22(土) 21:15:27
>>14
ためしに
cpan>install LWP::Simple
したら、OKだった。
×make_arg   1
 ↓
○make_arg   
だったのか〜
ご教授ありがとう。
17デフォルトの名無しさん:2006/07/23(日) 23:57:49
つ  Perlはやっぱもう駄目か - enbug diary (2006-07-22)
 
ttp://enbug.tdiary.net/20060722.html#p01
18デフォルトの名無しさん:2006/07/24(月) 00:23:12
こう言っちゃなんだけど頭の弱い人に使える言語じゃないしな。
19デフォルトの名無しさん:2006/07/24(月) 00:31:34
>>18
誤解されそうなんで言っておくがruby使いのみながみなこんなんだって訳じゃないぞ。
つーかPHP厨の陰謀ってことで。
20デフォルトの名無しさん:2006/07/24(月) 01:39:00
>>17-19
Ruby厨乙www
21デフォルトの名無しさん:2006/07/24(月) 02:04:08

おまいらもっと現実を見詰めようとは思わないのか?

生え抜きのPerlユーザーにすら見放されてるんだぞ


>私が思うに、RubyはPerlの守備範囲を何なくカバーしてしまっているので、
>Rubyが使えるとPerlは要らないんですよね。
>すでにPerlで書かれているプログラムを別にすれば。
>それ以来、Perlはawkと同様に「使えるけれど、大して要らないプログラム」となりました。
>と言いつつ、私はsedやawkは結構使ってますけど。


漏れがタイトルつけるとしたら

「Perl、終わったな」
22デフォルトの名無しさん:2006/07/24(月) 02:17:16
「Rubyで作っていいですか?」
「Rubyってなに?Perlじゃだめなの?」
「えーと、Rubyってゆーのはオブジェクトしこうのすくあqwsでrftgyふじこl」
「いいからPerlで作ってよ」
「。。。はい」

結論:Perlは終わらない
23デフォルトの名無しさん:2006/07/24(月) 02:29:00
Perlは大好きだし、ワンライナー書きまくりだし、非常に重宝してるんだけど、
Perlコミュニティの勢いのなさはすごく感じるな。
Perl6が失敗だったんだと思う。
5までのように、「汚いし保守できないけど、とりあえずしたいことがすぐできる言語」
という方向性のままで発展していけばよかったのに、「綺麗さ」「理想」を求める
プログラミング業界全体の流れに流されて方向性を見失ってしまったんじゃないかと思う。
24デフォルトの名無しさん:2006/07/24(月) 02:54:15
世界を見たらPerlだらけ。Rubyなんか物好きが使ってるだけ。
25デフォルトの名無しさん:2006/07/24(月) 03:15:01
幹が腐りつつあるって感じ。
26デフォルトの名無しさん:2006/07/24(月) 04:14:27
>>23
Perl6っていつリリースされたの?
知らなかったorz
27デフォルトの名無しさん:2006/07/24(月) 04:30:02
宣伝にも失敗してるのか
だめだこりゃ
28デフォルトの名無しさん:2006/07/24(月) 10:36:41
同じく知らなかった。嘆いてる風なのからすると悪くなったのか
29デフォルトの名無しさん:2006/07/24(月) 10:56:41
Rubyが思うように普及しないからって相手をけなすのはどうか。
  ↓
30デフォルトの名無しさん:2006/07/24(月) 11:14:02
Rubyなんてマニアに受けてるだけだろ。って俺も相手(Ruby)をけなしてるか。
まあ、PerlerもRubyけなしてるし、るびきちもPerlをけなしてる感じはするけどな。どっちもどっち。
でもPerlはちょっと古臭くなった感がある。
31デフォルトの名無しさん:2006/07/24(月) 11:30:50
そうそう。CやC++も古臭すぎて使ってらんねwwww
32799:2006/07/24(月) 11:43:49
コミュニティの質だけで言語の優劣を語って何の意味があるのか
だいたいfailmallocとかいってるが
mallocが失敗する状況でできることなんてどうせ何もないんだから
それに対していちいちエラートラップする意味がわからん
perlは優れている
何が良いってperlクックブックがいい
あんなに包括的なプログラミングの解説書は見たことがない
いや、あるんだけど日本語ではない
CPANに行けばあらゆるジャンルのコードが読み放題
ラクダ本は旅の友に最適
failmallocの記事では最近の若い奴らはmallocが失敗する経験なんて
ないだろうから、そういう経験をすべきだなんて書いてあるが
それこそperlの晴れの場だろう

誰かが言っていた
「普段疑問が投げかけられないものほど、むしろ疑え」
「例えばそれはCだ」
「Cの中途半端な抽象化で多くの貴重な時間という資源が失われた」
と。
私も提言しよう私たちは以下の言葉を疑ってかからねばならない
「きれいで読みやすいコードは保守しやすくて幸せ」
皆この文意を取り違えている
きれいで読みやすいコードがよいのではない
コードをきれいで読みやすくする過程でプログラマがする経験や思考がよいのだ
私たちが読みたいのは小学生でも読めるおとぎ話なのか?
いいや違う。私たちが読みたいのは掘れば掘るほど雫が溢れて来るマンコなのだ
逆説的だが複雑さこそが効率へ貢献するのだ
読みやすいコードばかりなら能力の低い派遣や新卒にだって読めるだろう
だがかれらは「てにをは」を直すことはできるかもしれないがマンコは掘れないだろう
それでこの業界は幸せになれるのだろうか
私はそうは思わないのだが。
33デフォルトの名無しさん:2006/07/24(月) 11:50:25
>>17-32
くだらん好き嫌い問題を議論してないで好きな言語を使ってればいいだろ。
34デフォルトの名無しさん:2006/07/24(月) 11:55:47
>>799 しつこいよオマエ
35デフォルトの名無しさん:2006/07/24(月) 13:07:59
なんで無視できないのかねぇ
36デフォルトの名無しさん:2006/07/24(月) 13:11:32
面白から。
37799:2006/07/24(月) 13:52:34
私から提案がある
perlはOOPをやめるべきなのである
Beyond Javaという本にperlについてこう書かれている
「歴史がありとても興味深い言語だがOOPがキモ過ぎる」
これはとても本質を突いていると思うマンコの
今は猫も杓子もしゃくとりむしもOOPだとわめいている
しかしそれが一体どれだけ時間を無駄にしているのか
彼らはあまりに理解していなさ過ぎる
パターンだイディオムだと騒ぐのはいいが、お前らコードを
書いているのか?と問いたい
我々はコンサルタントではない。熟慮して設計して、それから
やっとコーディングを始めるなんて馬鹿げている
テストファースト?なんて下らないんだ。私はエロ画像のurlが手に入れば
それでいいのである
ファクトリメソッドはこうで・・・ええとここはテンプレートメソッドで、
ああテストのテンプレートも作らなきゃ・・・
などと考えているうちにエロ画像はサーバから消されてしまうのである
断言するが我々は原点に返らねばなるまい
テストファーストではない
エロファーストである
諸君思い出してみるがいい。あなたは何のためにコードを書くのだ?
顧客とwin-winになるため?世界平和?
全然、違うだろうが!!
私もあなたもプッシーです
38デフォルトの名無しさん:2006/07/24(月) 14:02:24
「私もあなたもプッシーです」だけ読んだ
39デフォルトの名無しさん:2006/07/24(月) 14:10:51
Rubyなんて使うな、pythonにしておけ。
40デフォルトの名無しさん:2006/07/24(月) 14:49:17
>>37
ドラゴンボールの中ではフリーザが好きです。 まで読んだ
41デフォルトの名無しさん:2006/07/24(月) 15:07:40
phpは使わないがあれはあれでいい言語だと思うわ。
ただ自分が使わないってだけで良い悪いなんてのはないしな。
悪いのがあるとしたら言語のせいにしてソースを汚く書く奴だ。
42酩酊 ◆TWARamEjuA :2006/07/24(月) 19:16:58 BE:2613683-BRZ
>>37
うんうんそれで桶♪
43デフォルトの名無しさん:2006/07/24(月) 21:39:56
>>37
おまえそんな長文を投入する勇気が良くあるな
微妙に色々勉強してるのが笑える
44デフォルトの名無しさん:2006/07/25(火) 03:00:54
「私もあなたもプッシーです」で抜いた
45デフォルトの名無しさん:2006/07/25(火) 07:33:14
いや、OOP嫌いなら使わなきゃいいじゃん。
CPANモジュールがほとんどOOPに置き換わっているのは
お前の考えと異なっている奴のほうが圧倒的に多いという事実を示しているよ。
46デフォルトの名無しさん:2006/07/25(火) 07:45:16
OOP自体は嫌いじゃないし
他の言語で使う分にはまんざらでもない

PerlでOOPってかなり見苦しいと思う
47デフォルトの名無しさん:2006/07/25(火) 09:35:53
rubyもpythonもperlのいいとこ取りしてるんだからperl6はrubyのOOPを
いいとこ取りしてスクリプトの決定版になってほしい。
48799:2006/07/25(火) 09:54:27
perl6は結局ラリーが実装から降りちゃったのがまずかったんじゃ・・・
ラリーが確か「私の実装能力はもうわかったらデザインに集中
することにする」みたいなこといってたような・・・
つまりラリーが設計のみに集中するようになったはいいが
実装者が実はラリーくらいしかいなかったと
49デフォルトの名無しさん:2006/07/25(火) 11:24:06
船頭多くして船山に登る
50デフォルトの名無しさん:2006/07/25(火) 11:49:16
進化の袋小路
51デフォルトの名無しさん:2006/07/25(火) 11:58:25
そろそろリファクタリングの時期に来てるね
52デフォルトの名無しさん:2006/07/25(火) 13:44:58
メカはすでに腐り落ちているのを、多数の人力で無理矢理生かしている状態。
53デフォルトの名無しさん:2006/07/25(火) 16:16:27
ラリーの書いたコード、perlのソースで読んだことあるけど
別に普通だったよ。というか、普通過ぎて、もっと良く書けるだろって感じ。
あと変なマクロの嵐で頭痛くなった。
実装から手を引くのもなんとなく分かる。

ラリーはRubyも勉強したけど、結局Perl6にはあまり取り入れなかった。
しかも、やっぱり自然言語を目指すという変な方向に行っちゃった。
で、いまんとこ実装できるパワーがありそうなのは、鳳タンくらい?
54デフォルトの名無しさん:2006/07/25(火) 20:24:12
Perlが死んだ今、どの言語を勉強するべきですか?
55デフォルトの名無しさん:2006/07/25(火) 20:41:20
日本語
56デフォルトの名無しさん:2006/07/25(火) 21:34:23
Whitespaceオヌヌメ Brainf*ckも楽しいですよ^^
57デフォルトの名無しさん:2006/07/25(火) 22:05:22
なにその変態言語
58デフォルトの名無しさん:2006/07/25(火) 22:15:47
まあ、RubyかPythonか。問題は言語仕様より開発コミュニティの
開発パワーの優劣だよなあ。
59デフォルトの名無しさん:2006/07/25(火) 22:33:48
ruby厨が一人で頑張ってるな。お前等も手伝ってやれよw
60デフォルトの名無しさん:2006/07/25(火) 23:13:58
流行りだしRubyやPythonにも手をだすけど、身近なスクリプトはPerl、っていう人は普通に多そう
あれだ 大学で外国語とるけど普段は日本語 みたいな
61デフォルトの名無しさん:2006/07/25(火) 23:20:32
ruby厨を装ってPython厨のふりをしたPHP厨を陥れようとしてるAWK厨にみせかけたScheme厨を騙るJavaScript厨だと思い込ませたいTcl/Tk厨必至だなwww
62デフォルトの名無しさん:2006/07/25(火) 23:35:42
Tcl/Tkが必至ですか。そうですか。
63デフォルトの名無しさん:2006/07/25(火) 23:50:12
いやCOBOLだろう
64デフォルトの名無しさん:2006/07/26(水) 00:17:53
COBOL舐めんなよ。
65デフォルトの名無しさん:2006/07/26(水) 00:23:19
いやD言語だr・・・ごめ。僕は嘘をつきました。

JavaかRubyか、マニアックにcrowbarとかもいいかもな。
むしろ国産のcrowbarしかねえだろ。crowbar勉強しよう。みんなでcrowbarだ。サンプル言語だけど。
66デフォルトの名無しさん:2006/07/26(水) 00:53:20
昨日はSchemeをマスターしました。
67デフォルトの名無しさん:2006/07/26(水) 00:57:38
明日はプッシーをマスターします。
68デフォルトの名無しさん:2006/07/26(水) 01:13:11
プッシーってはじめて聞く言語だな
どんな言語なの?
69デフォルトの名無しさん:2006/07/26(水) 01:24:46
うは、しばらくぶりに来てみたら夏休み一色になってるなwww
70デフォルトの名無しさん:2006/07/26(水) 02:05:05
>>69
弁えて遊んでる連中よりお前の方が。
71デフォルトの名無しさん:2006/07/26(水) 04:07:22
Pussy BEGIN:

OBJ~Sujiman => (i) => (O) ;cupar
("Hello, World") => %DISP <= (O) ;echo

() => (null) ;goodbye
72デフォルトの名無しさん:2006/07/26(水) 04:26:35
ちょいと質問なんだけど、
CPANのサイトに
authors/01mailrc.txt.gz
modules/02packages.details.txt.gz
modules/03modlist.data.gz
ってあるじゃん?

誰かこれの作り方知らない?

要はCPANのミラーサイト作ってバージョン管理したいわけなんだけどさ・・・
73デフォルトの名無しさん:2006/07/26(水) 11:16:18 BE:247632274-BRZ
わらわら
74デフォルトの名無しさん:2006/07/26(水) 12:06:08
>>72
欲してるのはCPAN::Miniかなぁ?
75デフォルトの名無しさん:2006/07/26(水) 15:46:17
質問です。
yahoo等の検索エンジンでは、ユーザーから入力された検索ワードを
「分解、オプション解釈」して処理していますが、
この処理を提供するライブラリ等は無いでしょうか?
76デフォルトの名無しさん:2006/07/26(水) 16:07:16
point.log
加藤<>500点<>まぁまぁ\n
石橋<>2380点<>すごい\n
山本<>120点<>ヤバい\n
萩本<>20点<>しょぼい\n

と言った形式のログファイルがあります。(ちょっとしたゲームのポイントを格納してます)
あるページで名前を入れて送信するとその人の名前と得点、コメントを表示する機能を作りたいのですが
例えば山本さんがまた同じゲームをしたとするとlogファイルへ更に山本さんのデータが追加されてしまい、
名前を入れて送信機能を使うと山本さんの二回分の得点とコメントが表示されてしまいます。
(一番最新のものだけ表示したいのです。)

無理矢理一番最後のものだけ表示する、というやり方なら出来たのですが
できれば過去の記録は要らないので消してしまいたいのです。
今回でいくと 『山本<>120点<>ヤバい\n』 の行です。

効率を考えてゲームのポイント送信時にその人の名前をチェック、
point.logに同じ名前があればその行を削除、その後point.logへその人の新しいデータを追加
という処理を行ってみたのですがどうにも上手くいきません。
(実際に自分で書いたものがあるのですが、
 ここからではちょっとスペースが足りなかったようです。要望があれば書きます。)

知恵をお貸し頂けると嬉しいです。長文すみません。よろしくお願いします。
77デフォルトの名無しさん:2006/07/26(水) 16:15:52
>>76
>無理矢理一番最後のものだけ表示する、というやり方なら出来たのですが

ということなら、重複した不要行がファイルのどの位置にあるか
具体的に分かることが可能ですよね。
であれば「一番最後のものだけ表示」した後、不要行の削除処理を行えば
処理効率もよいかと思います。
78デフォルトの名無しさん:2006/07/26(水) 16:22:05
>>76
point.logがどれだけサイズがでかくなるかはわからないが、
名前をキーに全部データをハッシュに入れてしまえばよいのでは?

見た感じ、コメントの部分は点数を見て判断できそうなのでpoint.logは「名前<>点数」だけでいいような気がするが。
で「名前」をキー。「点数」を値としたハッシュ作れば簡単に出来そうな感じがする。
79デフォルトの名無しさん:2006/07/26(水) 16:24:03
複数人が同時に要求した場合のことは考えなくていい? あるいはその辺はできてる?
80デフォルトの名無しさん:2006/07/26(水) 16:32:28
>>76
> point.log
> 加藤<>500点<>まぁまぁ\n
> 石橋<>2380点<>すごい\n
> 山本<>120点<>ヤバい\n
> 萩本<>20点<>しょぼい\n

この変なフォーマットは必須なのか?
なぜこんな異常なことをやってるの?
81デフォルトの名無しさん:2006/07/26(水) 16:32:35
>>76
perldoc -f dbmopen
82デフォルトの名無しさん:2006/07/26(水) 16:37:12 BE:477576869-BRZ
>>75
MeCabとか?
83デフォルトの名無しさん:2006/07/26(水) 16:45:10
>>61

吹いた(笑)
84デフォルトの名無しさん:2006/07/26(水) 16:48:55
>>80
自演乙。
8572:2006/07/26(水) 16:56:29
>>74
CPAN::Miniって ドキュメントざっとみてみましたが、
CPANから特定の部分のミラーを作るって感じですよね?

具体的には現在ある.cpan/sourcesの下をCPANサイトに仕立てたいのです。
86デフォルトの名無しさん:2006/07/26(水) 16:56:53
DBD::AnyData Ver.0.08 499行目は,コメントアウト(して,SUPER::finishにまかせるように)した方が
DBD::AnyData::st->fetchなどでrowを読み切ったときにActive属性がちゃんとリセットされるように
思うのですが,この書き換えでの副作用はあるでしょうか?
87デフォルトの名無しさん:2006/07/26(水) 18:18:24
>>76

$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)
88デフォルトの名無しさん:2006/07/26(水) 18:59:56
>>75
>「分解、オプション解釈」して処理していますが
質問内容はクエリーの解析まで?
それとも「クエリー解析して処理」まで?
namazuとかheじゃだめなの?
http://www.namazu.org/
http://hyperestraier.sourceforge.net/index.html


>>82
MeCabは文章の形態素解析で、検索クエリーの解析はしてくんないべ。
89デフォルトの名無しさん:2006/07/26(水) 20:13:50 BE:159192263-BRZ
>>88
Estraierか、、そんなのもありましたね
MeCabはわかち書きで似たようなことが出来るかなーとか…
90デフォルトの名無しさん:2006/07/26(水) 20:18:54
つかHyperEstraierは--enable-mecabオプションがある。
分かち書きとN-gramは実行時に切り替え可能
やほーの「分解、オプション解釈」がどんなもんだかしらんので
比較はできんが
91デフォルトの名無しさん:2006/07/26(水) 23:49:10
CPANのモジュールをそのままインストールすると、最新版とその依存関係で入りますが、

install A::B

バージョンを指定してインストールすることってできますか?
その場合、その昔のバージョンとその時の依存関係は保たれながらインストールされますかね?


92デフォルトの名無しさん:2006/07/26(水) 23:49:41
>>91
install A::B -> cpan> install A::B
93デフォルトの名無しさん:2006/07/26(水) 23:57:07
CPANに過去のバージョンがアーカイブされていればインスコはできる。
94デフォルトの名無しさん:2006/07/27(木) 04:20:24
>>93
それってid以下を指定してやる、
install A/AB/ABCD/Hogehoge-1.20.tar.gz
ってやつ?
95デフォルトの名無しさん:2006/07/27(木) 05:48:26
>>85
じゃあCPAN::Siteかなぁ?
96デフォルトの名無しさん:2006/07/27(木) 08:23:18
perl5.8 apache2.2 mysql5.1 perl-DBD-MySQL-3.0004の環境で
SELECT @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文を発行するベターな方法ありませんか?
97デフォルトの名無しさん:2006/07/27(木) 10:44:37
perlからID,PWをform認証しているページのコンテンツを取得するのに
以下のスクリプトを書いていて、そこまではうまくいってるんですが、
ヘッダーを追加して送信する場合、どのようにしたらいいんでしょう?

以下のようなヘッダーを追加する方法を教えてください。
ヘッダー名: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;

98デフォルトの名無しさん:2006/07/27(木) 11:39:19
>>97
そのくらいperldocで調べろよ
99デフォルトの名無しさん:2006/07/27(木) 11:42:05
>>97
$request->header("HOGE","HOGEHOGE");
100デフォルトの名無しさん:2006/07/27(木) 11:55:07
>>96
・ @ はエスケープしたか?
・ 複数のSQL文を連続実行したいならトランザクションか排他を使え。
10196:2006/07/27(木) 12:53:45
>>100
@はエスケープしました。
トランザクション、排他だとパフォーマンスが劣りますしロジックが冗長的になってしまいます。
MySQL++では
MYSQLPP_EXPORT Result store_next ()
Return next result set, when processing a multi-query.
のような関数があるのですがdbiで同じ事をするのは現時点では不可能なのでしょうか。
10276:2006/07/27(木) 15:23:05
無事解決することが出来ました!
返信してくださった皆さんありがとうございました。
レス遅れてすみません・・。
103デフォルトの名無しさん:2006/07/27(木) 17:52:49
結局どういう方法で解決させたの?
報告を受ける側としてはそこが重要
104デフォルトの名無しさん:2006/07/27(木) 18:48:03
>>101
そんなエラーでないけど・・・
SELECT * FROM data WHERE age = (SELECT MAX(age) FROM data);
いろんなもん実行したいんだったら関数登録しとけばー?
105デフォルトの名無しさん:2006/07/27(木) 22:46:01
>>102
>>103
山本さんが二人いたら?
106デフォルトの名無しさん:2006/07/27(木) 22:52:05
>>105
一人は太郎さん?
107デフォルトの名無しさん:2006/07/28(金) 00:23:12
>>106
そしてもう一人を五郎にして解決?
108Perl not Pearl:2006/07/28(金) 00:42:39
4314
4331

[EOF]

のようにデータの入ったファイルからリダイレクトで標準入力
からデータを入力するときに、EOFも取り込まれてしまうの
ですが、取り込まれないようにする方法はありますでしょう
か?今は以下のように、わざわざ配列からpopしてEOFを
捨てています。

@a = <STDIN>;
chomp(@a);
pop @a;
109デフォルトの名無しさん:2006/07/28(金) 02:23:04
>>108
chomp($tre=<STDIN>);
110デフォルトの名無しさん:2006/07/28(金) 03:24:47
>>108
必要な分だけ渡せばいいものを
「わざわざ」なのはそんな文字付けてる方だよ
配列使うならpopが無難
111Perl not Pearl:2006/07/28(金) 05:58:42
>>109
>>110

ありがとうございます。

今、ヤフー掲示板のスレッドを、見やすいように、100くらいの投稿
をまとめてダウンロードして、表示させるプログラムを作っているので
すが、いろいろ不可解な問題が発生しています。

不可解な点をひとつずつ質問させてください。

まず一つ目の質問ですけれども、
3つのプログラムで、同じ結果が得られると私が思うプログラム
で結果が異なってしまいます。意図した結果が得られるものと
不可解な結果が得られるものがあります。
112Perl not Pearl:2006/07/28(金) 06:02:04
(プログラム1)
コマンドライン入力: 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;
}
113Perl not Pearl:2006/07/28(金) 06:08:15
(プログラム2)
コマンドライン入力: 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;
}
114Perl not Pearl:2006/07/28(金) 06:11:41
(プログラム2)
コマンドライン入力: 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;
}
115Perl not Pearl:2006/07/28(金) 06:13:49
>>114
は(プログラム2) ではなく(プログラム3)です。
(プログラム2)と(プログラム3)の違いはライブラリ
関係の部分をコメントアウトしているか否かだけです。
116デフォルトの名無しさん:2006/07/28(金) 08:40:07
>>115
(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";
117デフォルトの名無しさん:2006/07/28(金) 08:45:29
というか、実行時環境に影響されないコードを書きたかったらchompは使うな。
必要ない制御コードは全て入力から取り除くという考え方の方が正しい。
118デフォルトの名無しさん:2006/07/28(金) 12:17:57
またアホがいるな。つかLWP使うような質問は答えるべきでないな。
119デフォルトの名無しさん:2006/07/28(金) 12:58:48
以下のXML形式データを、テキストファイルにしたいのですが、
どうすればよいでしょうか。参照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,
120デフォルトの名無しさん:2006/07/28(金) 13:12:49
ヒント:夏休みの宿題は自分でやろう!
121デフォルトの名無しさん:2006/07/28(金) 13:29:12
>>119
XML::Parserでも使っと毛。
つーかXMLは元々テキストファイルだが?
122デフォルトの名無しさん:2006/07/28(金) 14:06:31
>>120 塚本先生?誰かに聞いていいって言いませんでした?

>>121 調べたんだけど、なんかそれむずかしそ。もう少し調べてみるか。

XML-Simpleってのは、どうでしょうか。あー、xml少し勉強しないとな。
123119:2006/07/28(金) 15:50:46
XML::Simple使って、valの値は取れるようになったけど、
<val>の他に、
<null/>があって、
どう対応すればいいのかわからない。うーん。
124デフォルトの名無しさん:2006/07/28(金) 15:52:32
>>123
ここにいる人々はおまえが何をやりたいのか分からない。
125デフォルトの名無しさん:2006/07/28(金) 16:21:44
>>119 >>123
質問する時はあなたを知らない人にあなたの意思が伝わるようにきちんと説明しましょう。
回答者はエスパーではないです。
126デフォルトの名無しさん:2006/07/28(金) 16:54:35
>>123
分からんけど、XML解析する前に '<null/>' 削除するとかは?
127Perl not Pearl:2006/07/28(金) 19:28:12
>>116
>>117

よく意味がわかりませんが、文字コードが原因なのですね。

文字コード超研究 (単行本)
深沢 千尋

でも買って読んでみます。
しかし、こんな簡単なコードでも問題が起きるとは。。。

一応、スパイダリングハックスっていう本のコードをコピーしたの
ですが。。。
128Perl not Pearl:2006/07/28(金) 19:28:46
>>116
>>117

ありがとうございました。
129デフォルトの名無しさん:2006/07/28(金) 19:39:23
>>127
>こんな簡単なコードでも問題が起きる

Perlは元々unix環境で使ってナンボだからな。
Windows環境で5.8以降はいくつか問題がある。
有名なのだとcp932とsjisの違いとか。
130123: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}){
このようになるのですが、ハッシュ名指定以外で取る方法がわからない。
一行ずつ読んでデータ取ったほうがいいかな。
131デフォルトの名無しさん:2006/07/28(金) 20:09:08
近頃の質問者は態度もアレなのな
132デフォルトの名無しさん:2006/07/28(金) 20:21:57
XML::Simple じゃなくて XML::Parser使え。
パース中にタグが登場した時点でイベントハンドラ呼ばれるから、そこで好きなようにデータ構造を構築できる。
133デフォルトの名無しさん:2006/07/28(金) 20:28:01
>>132
どもです。
内部でタグの変更ですね。XML::Parser。難しそうだけど調べてみます。
134デフォルトの名無しさん:2006/07/28(金) 20:31:27
敬語が使えない馬鹿が増えたねぇ
135デフォルトの名無しさん:2006/07/28(金) 20:43:42
スマソと言えば許される2ちゃんねるはもう昔の話。
136116,117,129,132:2006/07/28(金) 20:51:10
正直どうでもいい。S/N下がるだけだ
137デフォルトの名無しさん:2006/07/28(金) 20:59:38
--
以下、敬語以外禁止となります。
--
138デフォルトの名無しさん:2006/07/28(金) 21:12:15
大統領! 危険です!! 早く車の方へ!
139デフォルトの名無しさん: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
140デフォルトの名無しさん:2006/07/28(金) 22:25:41
よろしかったでしょうか?、という確認は日本語文法上正しかったでしょうか?
141Perl not Pearl:2006/07/28(金) 23:01:14
よろしかったでしょうか?
は京都に行ったときによく耳にして違和感を覚えました。
最近では、東京でも聞きます。
142デフォルトの名無しさん:2006/07/28(金) 23:21:56
よろしかったでしょうか?
京都の人間だからなのかしらないけど、違和感なし。
143デフォルトの名無しさん:2006/07/28(金) 23:29:28
敬語ってのは時期や地域で重ね方が変わるから、正解はない。
敬語を重ねるのが良い場合も悪い場合もある。
144デフォルトの名無しさん:2006/07/29(土) 00:00:06
2ちゃんねるで敬語講座でもするおつもりですか?
145デフォルトの名無しさん:2006/07/29(土) 00:00:46
お皿をお片づけしてもよろしかったでしょうか?といって、
返事をする前に手に取って片付けていくファミレス店員をこの間見た。
146デフォルトの名無しさん:2006/07/29(土) 00:30:01
>>129

>有名なのだとcp932とsjisの違いとか。
それはPerlと関係ねーよ!

つかUNIXでも問題あるっしょ。
147デフォルトの名無しさん:2006/07/29(土) 02:03:38
Spreadsheet::ParseExcelから読み込んだXLSファイルを
Spreadsheet::WriteExcelで、テンプレートとして利用できるものでしょうか。ただの噂?
もしご存じでしたら、教えてください。
148デフォルトの名無しさん:2006/07/29(土) 10:13:23
北海道弁では過去形自体に敬語のニュアンスが含まれるので
よろしかったでしょうか?に違和感なし。
「こんばんわ」と同意の「お晩です」という表現があるが
相手によって「お晩でした」と使い分ける。
#ほぼ50代以上限定

言語の話題だし、それもTIMTOWDI
149デフォルトの名無しさん:2006/07/29(土) 10:34:35
違和感はないのかも知れないが、某全国チェーンの店員のマニュアルとして
全国で同じ言葉を使わせようとするのは違和感あり。
150デフォルトの名無しさん:2006/07/29(土) 11:26:20
>>146
perl5.5以前というかjcode.plにはなかった問題ってことで。
151デフォルトの名無しさん:2006/07/29(土) 11:27:14
もう10年ぐらい前になるのか、コンビニで初めて、よろしかったでしょうか、を聞いたときは、
少し頭が混乱していました。
頭の中で、「えっ、えー?」みたいに。
話し方次第では、少し冷たく感じるかも。
さいたまー、です。
152デフォルトの名無しさん:2006/07/29(土) 11:30:25
ざつだんはほかでやれって、おかあさんがゆってた。
153デフォルトの名無しさん:2006/07/29(土) 12:08:43
ままのゆうことばかりきいていたらじりつできないよ
154Perl not Pearl:2006/07/29(土) 12:20:25
すみませんが、どなたか教えてください。
ヤフー掲示板の投稿を、一つのHTMLファイルにまとめて、読みたいと
思い、Perlのプログラムを書いているのですが、また問題にぶつかり
どこが間違っているのか原因が分かりません。

作業内容は、以下のような感じです。

(1)URL「A」から5つの投稿をゲット(「まとめ読み」できるのは5つの投稿までです。)
(2)直前の5つの投稿のURLを調べ、それを次のURL「A」とする。
(3)(1)へ戻る。
155Perl not Pearl:2006/07/29(土) 12:22:03
プログラムの骨格は↓のような感じです。

my $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";

}
156Perl not Pearl:2006/07/29(土) 12:29:12
このプログラムで次のような不可解な現象が起きてしまい、原因が分かりません。

一回目のループ($i == 1)では、問題がありません。
二回目のループで問題が発生します。
 $contentには正しい意図通りのデータが格納されます。
 ところが、マッチするはずの
 $content =~ m?mid=(\d+)"><b>前の5件のメッセージ</b></a>?s;
 がマッチしません。$contentの内容を出力して調べてもマッチ
 するはずなのです。

どなたか原因がわかるかた、教えていただけないでしょうか。

157Perl 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);

158Perl not Pearl:2006/07/29(土) 12:32:23
あ、
>>108
ではなく
>>111
でした。
15976:2006/07/29(土) 14:00:40
うわ、またレスが。すみません・・
>>103
>>87さんのを参考に一旦別のファイルへ保存するというやり方でやらせて貰いました。
元々あまり大きなサイズのlogになる予定は無いのでこれで充分だと判断しました。
160デフォルトの名無しさん:2006/07/29(土) 15:33:26
>>140
してもよろしかったでしょうか? は文法上はしらんが、言葉としてはおかしい。絶対おかしい。
よろしいでしょうか? が本則で、それが過去形になってる。
これをタメ口に直訳すると「こうやってやったけど、もういいよな?」 ってことだ。
161デフォルトの名無しさん:2006/07/29(土) 16:09:36
>>160
その直訳おかしい。
つかここで自然言語の話するのはちょっと。
162デフォルトの名無しさん:2006/07/29(土) 17:00:46
emacsのcperl-modeで.plファイルを
その場で実行するにはどうすればよいですか?
cperlのドキュメントいろいろ漁ったけど
実行のことだけなぜかみつからない・・・
163デフォルトの名無しさん:2006/07/29(土) 17:30:48
>>162
M-x Compileでも使えばいいんじゃね?
164デフォルトの名無しさん:2006/07/29(土) 17:41:34
>>156
それは正常な動作。
165デフォルトの名無しさん:2006/07/29(土) 17:55:08
>>160
Would you like some coffee?
166162:2006/07/29(土) 18:26:48
>>163
それ、やってみたんだけど
makeになっちゃうんだよね
167デフォルトの名無しさん:2006/07/29(土) 18:31:53
>>166
ボケ! 書き換えろ。
168162:2006/07/29(土) 18:49:24
>>167
すんまそん
.emacsに
(setq compile-command "perl")
て書いたら
M-xしたときにmake -kじゃなくてperlがでるようになりました

で、すいません本当にすみません
最後に教えて下さい

M-xしたときにperlと出すのはいいんだけど
このままじゃいちいち.plファイルを指定しなきゃいけないんです
現在開いている.plファイルが自動的にセットされるようにしたいんですけど
どうすればいいの〜〜
169デフォルトの名無しさん:2006/07/29(土) 18:55:56
>>168
変数compile-commandを知っているのなら、それのヘルプを見れば
やり方が書いてあるが。

それ以外でも、当該*.plにローカル変数定義を書いておく方法もあるな。
170デフォルトの名無しさん:2006/07/29(土) 19:01:54
>>169
> 変数compile-commandを知っているのなら、それのヘルプを見れば
> やり方が書いてあるが。

elispを知ってる人ばかりだとは限らないような……これくらいパッと見でわかるかな?
171デフォルトの名無しさん:2006/07/29(土) 20:50:32
>>156
マッチするはずの部分がどうなってるか、その説明だけで分かる奴はいないと思う。
172Perl not Pearl:2006/07/29(土) 21:19:15
>>171

http://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>
173デフォルトの名無しさん:2006/07/29(土) 21:35:58
>>172
m?? を 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() を呼ぶまでマッチしないってこと。
174Perl not Pearl:2006/07/29(土) 21:44:29
>>171
>>173

ありがとうございます。
どんな区切り文字でもいいのかと思っていました。
175デフォルトの名無しさん:2006/07/29(土) 22:15:34
>>171
マッチ演算子の問題だから、その説明だけでわかる奴(>>164等)にはわかる。
ネタと判断してスルーした奴も多い気がする。

自分の場合は、不可解な現象というからには

@array = ($a=0,++$a,++$a,++$a,$a++,$a++,$a++);
print join(',',@array),"\n"; # 6,6,6,3,4,5 になる.

程度の不可解さ(?)は欲しいと思った程度。
176デフォルトの名無しさん:2006/07/29(土) 22:43:47
6666345って、なんじゃそりゃぁあ????
177デフォルトの名無しさん:2006/07/29(土) 22:46:22
ごにょごにょした後の結果を返すものは値を返すタイミングが後回しになるって事???
178デフォルトの名無しさん:2006/07/29(土) 22:52:44
#include <stdio.h>
int 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
何じゃそりゃぁぁぁああ???
179デフォルトの名無しさん:2006/07/29(土) 23:34:56
>>175みて思い出した。
検証したくて、
my $i ;
( print $i = 0 ,
print ++$i ,
print $i++ );
print "\n" ;
みたくやって、更にハマッタ若き日の俺w
180デフォルトの名無しさん:2006/07/29(土) 23:42:04
>>178
そんなんK&RやANSIの規定外なので結果はコンパイラ依存。

perlは処理系が事実上一つしかないので同じ結果にはなるだろうが、
全てのバージョンで同じになるとは思わないほうがいい。
181デフォルトの名無しさん:2006/07/30(日) 11:50:24
適当なファイルを〜.plにD&Dして、そのファイル名を引数にとりたいのですが、
こういった事は可能でしょうか?
もし簡単にできるようでしたら、その方法をご教授ください。
182デフォルトの名無しさん:2006/07/30(日) 11:58:28 BE:53064623-BRZ(1002)
.bat
183デフォルトの名無しさん:2006/07/30(日) 12:01:29
>>181
copal
184164:2006/07/30(日) 12:09:59
>>175
?の挙動はグチャミソのお下品コードを書かない人間にとっては、
用途がさっぱり不明だから、ほとんどの人間にとっては蘊蓄にしかならないね。
作者なんかは好んで使ってそうだけど。
185デフォルトの名無しさん:2006/07/30(日) 12:31:14
>>184
> 作者なんかは好んで使ってそうだけど。
ってことはPerlではこの動作は保証されてるの?
186デフォルトの名無しさん:2006/07/30(日) 12:36:43
perlは処理系が事実上一つしかないので同じ結果にはなるだろうが、
全てのバージョンで同じになるとは思わないほうがいい。
187デフォルトの名無しさん:2006/07/30(日) 12:52:35
>>186
たとえばJavaではJLSで明確に規定されてるけど
Perlにもそういう規定があるという可能性はないの?
188デフォルトの名無しさん:2006/07/30(日) 13:04:52
>>185-187
>>184はマッチ演算子の話をしてんだろ?何か勘違いしてないか?
189デフォルトの名無しさん:2006/07/30(日) 13:06:25
思いっきり勘違いしてたorz
「?の挙動は」を見落として>>175の後半の話かと思ってた
190デフォルトの名無しさん:2006/07/30(日) 13:23:00
>>181
Win板の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とかできるのでかなり楽できそう。
191デフォルトの名無しさん:2006/07/30(日) 15:22:43
前々スレ(24箱目)の680と同じく、定数を設定するファイルを分離、requireして利用しようとしています。
前々スレでは680への返答としてconstantが紹介されていたのですが、
単純にconstantを使って定数を設定しても他のファイルで利用できませんでした。
使い方が間違っているんだと思うのですが、正しい使い方を教えてもらえないでしょうか。
今はこんな感じです。

ファイル1(ファイル名 test.pl)
use constant PI => 3.14;
1;

ファイル2
use constant;
require 'test.pl';
print PI, "\n";
192デフォルトの名無しさん:2006/07/30(日) 16:03:34
pl2batの存在を知らないやつもいるのか。

>>191
use strictしような。
定数はコンパイル時に定義されていないとダメ。
BEGIN{ require 'test.pl' }
193191:2006/07/30(日) 16:24:24
>>192
ありがとうございます。
コンパイル時…ですか。いままで意識したこともありませんでした。
一応、格好つけで use strict はしています。
194デフォルトの名無しさん:2006/07/30(日) 17:57:51

htmlのインデント整形してくれるモジュールって、どっかに落ちてないでしょうか?
CGIモジュールの出力だけなら、Prettyで整形されますが、HTML::Templateと組み合わせると、インデントが崩れます。
なので、出来上がったHTMLを食わせると整形して出力してくれるようなモジュールがあると便利なんですが。

HTML::Parser使えば書けそうですが、誰でも考えそうな要求なんで、あれば既存のモジュールで楽したい。
195Perl 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";
196デフォルトの名無しさん:2006/07/30(日) 18:18:05
文字コードが固定の場合は、use open を使うと楽。

#!/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";
197Perl not Pearl:2006/07/30(日) 18:19:20
入力ファイルの「in.txt」の内容は、
"日本語\n"
です。

198Perl not Pearl:2006/07/30(日) 18:21:26
それで、問題なんですが、出力ファイルの「out.txt」で
文字化けが発生します。

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
使っているエディタは秀丸エディタ

です。
199196:2006/07/30(日) 18:22:07
この場合は use Encodeがいらないな。
200196:2006/07/30(日) 18:23:00
おっと、割り込んじゃった?
それとも >196 の方法でもだめ?
201Perl not Pearl:2006/07/30(日) 18:27:54
>>196
>>199

ありがとうございます!

use open IO => ':encoding(shiftjis)'; # IOをshiftjis に設定
use open ':std'; # 標準入出力も、それで設定。

を付け加えたらうまくいきました。
理由はわかりませんが。。。

やっぱり体系的にPerlの使い方を調べないとすぐに文字コードの
問題でトラブってしまうようでPerlって大変ですね。

変な質問ですが、なぜみなさんはPerlを使われているのですか?
Perlは簡単で強力、人気がある、というイメージで使い始めたの
ですが、JAVAを勉強したほうがいいのではないかと思い始めました。

本をちらっと読んでみても、Javaはすっきりしていて、Perlのような
あやしげな感じがしなかったです。
202デフォルトの名無しさん:2006/07/30(日) 18:31:40
Perl::IO についてはweb上に丁寧な日本語解説サイトがあるから、その程度であきらめるのはもったいないかな。
とっつきにくいけど、仕組みがわれば難しいもんじゃない。

Perlが歴史的にごちゃごちゃした仕様になっているのは確かだが。
203デフォルトの名無しさん:2006/07/30(日) 18:31:47
キミはきちっとした正しい日本語ばかりのNHKを見続ければいいと思うよ^^
204デフォルトの名無しさん:2006/07/30(日) 19:14:46
>>201
うん、JAVAに移行すべきだと思うよ。Perlはもう忘れて、すぐにJAVAに移行しよう。
205デフォルトの名無しさん:2006/07/30(日) 19:25:31
>>150
いや、バージョンや言語によらずUnicodeとの変換で起こる問題でしょ。
Jcodeは2.0でUnicodeを使うようになったから問題が出やすくなったというのはあるかもしれないけれど。
206デフォルトの名無しさん: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'}と書くと怒られてしまいます。
このような場合、どう書くものなのか教えてください。
207デフォルトの名無しさん:2006/07/30(日) 19:30:53
push(@{$hoge{'scadule'}}, 'are');
208デフォルトの名無しさん:2006/07/30(日) 19:32:57
foreach (@{$hoge{'scadule'}}) {
 ...
}
209デフォルトの名無しさん:2006/07/30(日) 19:34:57
scadule
210デフォルトの名無しさん:2006/07/30(日) 19:39:46
schedule
211206:2006/07/30(日) 19:42:03
>>207>>208
ありがとうございます。

>>209
これまたご指摘ありがとうございます。
あー、はずかしー。
212デフォルトの名無しさん:2006/07/30(日) 23:30:32
すいません、Perlのプログラムで質問なのですが
現在CSVファイルから1行ずつデータを取得し編集を行い
別ファイルに吐き出すということを行っているのですが

1セル内に改行コードがある時にデータの配列がずれてしまうので
改行コードから後ろの文章を削除したいのですが、どのように
書けばよいのでしょうか
213デフォルトの名無しさん:2006/07/30(日) 23:41:23
>>212
それはそのプログラムがどのように書かれているかによります。
214212:2006/07/30(日) 23:55:33
>>213 レスありがとうございます

今現在どうやればよいのかわからないので
困っていたのですが、カンマ区切りで取得する・・・という所まで
しかできてないのが現状です・・・
-----------------------------------------
# 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] );
}
215デフォルトの名無しさん:2006/07/31(月) 00:54:48
ほげ,"ふ
が",はげ
あほ,"ばか",しね

みたいなファイルのとき

「ふ」だけ拾って「が」は捨てるという意味?

line_split($i == 0) = ['ほげ', 'ふ', 'はげ']
line_split($i == 1) = ['あほ', 'ばか', 'しね']

と入るのを期待しているの?
216212:2006/07/31(月) 00:56:38
>>215
そうです、書き方悪くてすいません
まさしくそれがやりたいことなんです。
よろしければ教えていただけないでしょうか・・・
217デフォルトの名無しさん:2006/07/31(月) 01:34:01
perlで変数名に日本語を使用すると、
Unrecognized character
となります。
例えば、「$日本語変数=・・・」
使えるようにする方法ってありますか?
環境はwinXP,ActivePerl v5.8.7です。
218デフォルトの名無しさん:2006/07/31(月) 01:49:55
昔そんな記事を読んだことがあると思って検索した。

use utf8でいけるらしい。
http://www.pure.ne.jp/~learner/program/Perl_unicode.html#use_utf8
219デフォルトの名無しさん:2006/07/31(月) 02:24:34
>>216
捨てるより連結したほうが楽だが、捨てないとだめか?
改行コードの位置がわかる様に'//' をはさんで連結しているけど、いらなけりゃとればいい。
制限事項として、、クォートはダブルクォート限定で、文字列中にダブルクォートが含まれている場合は対応していない。

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;


220デフォルトの名無しさん:2006/07/31(月) 02:33:23
ちぇっく用のprint が残ってた。

>print join('|', @line_all),"\n";

はいらない。
221212:2006/07/31(月) 03:53:26
>>220
こんな夜中に回答いただきありがとうございます
これで一度実施してみたいと思います。
本当に感謝いたします。
222デフォルトの名無しさん: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の使い方が間違っていますか?

223デフォルトの名無しさん:2006/07/31(月) 22:02:14
>>222
スコープの外に$fileが出てきてるじゃん。
224222:2006/07/31(月) 22:09:52
>223

$file にディレクトリ下のファイル名を収納して、
次にその名前を他の用途に使いたいのです。

それで、とりあえずprintしてみたのですが。。。
225デフォルトの名無しさん:2006/07/31(月) 22:21:49
>>222
間違ってる。
226デフォルトの名無しさん:2006/07/31(月) 22:24:29
>>222の場合、while の条件節で $file をレキシカル宣言(my)しているので、while のブロック( {〜} )の
レキシカルスコープ中でしか $file を使えない。(use strict 下では)
もし、ブロックの外で使いたいのなら、while の外で my $file; などと宣言して、while の条件節の my は消しておく。

これが理解できないようなら、use strict はまだ早いかも。
ところで >>222 の場合、ディレクトリの中の一番最後のファイルしか処理できないけど、それでいいんだよね?
227デフォルトの名無しさん:2006/07/31(月) 22:32:51
>226

やってみました。
use strictを使うようにって本に書いて有りましたが、
理解してないと拙いですね。

>ところで >>222 の場合、ディレクトリの中の一番最後のファイルしか処理できないけど、それでいいんだよね?

違います〜!!
すみません、ファイル名のみ(ディレクトリは除く)利用したいのです。
巧い方法を教えて下さい。
228デフォルトの名無しさん:2006/07/31(月) 22:41:12
>>227
ファイル名をとっておいて後で使いたいのなら、ファイル名を格納する為の配列変数を作って
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"; }
とかできるけど・・・そういう事ではなくて? やりたい事を書いた方が早いかも。
229デフォルトの名無しさん:2006/07/31(月) 22:51:24
>228
ありがとうございます。

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";
}
230デフォルトの名無しさん:2006/07/31(月) 22:53:39
そのスクリプト、libraryとして再利用する積もりなければ
myなんか使わなければいい。my厨が多くて困る。use strictもいらない。
231酩酊 ◆TWARamEjuA :2006/07/31(月) 22:59:43 BE:1961036-BRZ(1019)
>>229
opendir DH, $dir or die "$dir:$!";
print join ' ', grep !/^\.{1,2}$/, readdir DH or die "$!";
exit;

かな?
232酩酊 ◆TWARamEjuA :2006/07/31(月) 23:01:00 BE:3812257-BRZ(1019)
>>231
あ、配列かm(_ _)m深謝
my @files = grep !/^\.{1,2}$/, readdir DH or die "$!";
233酩酊 ◆TWARamEjuA :2006/07/31(月) 23:03:47 BE:2614638-BRZ(1019)
>>232
う、$!には何も入ってこないのか(呆)
my @files = grep !/^\.{1,2}$/, readdir DH;
print @files ? join ' ', @files : 'No entry...';
234デフォルトの名無しさん:2006/07/31(月) 23:16:43
>>229
> use Cwd;
>
> my $dir = Cwd::getcwd();

まあ、

my $dir = '.';

でいいんだがな。
235デフォルトの名無しさん:2006/07/31(月) 23:20:31
> if @file =~ /^\.{1,2}$/;

これってどういうつもりなの?
236デフォルトの名無しさん:2006/07/31(月) 23:38:36
'.'と'..'を除きたいんでしょ
237デフォルトの名無しさん:2006/08/01(火) 09:07:07
>>230
いまどきはuse strictとuse warningsは必ずつけとけというのが普通じゃないかね。
くだらんバグがかなり門前払いできる。ワンライナーでまでやれとはいわんが。
238デフォルトの名無しさん:2006/08/01(火) 11:12:18
かといって、意味分からず使ってるとこういう質問が出る。
バグが門前払いできるとしても、そのバグ修正できる程度のスキルがないと意味ないし。
239デフォルトの名無しさん:2006/08/01(火) 11:26:08
でも use strict の意味やエラーの修正方法もわからないままプログラム組んでも、
そのうちバグを出して質問するに決まってる。結局動かなくて質問するんジャマイカ?

であれば use strict させることと、strict によるエラー時の対応方法を
まず最初に教えたほうがいい気はする。
240デフォルトの名無しさん:2006/08/01(火) 12:21:03
strictなんか付けないでもエラーがあれば、エラーの行番号とエラーの中身まで出してくれるからそこを直せばいい。それがスクリプト言語のいいところ。
strict付けると、どうせ再利用しないスクリプトでもグローバル変数に忠告が出たり不要なエラーが出てくる。libraryにするつもりなければ、不要だと思う。

241デフォルトの名無しさん:2006/08/01(火) 12:48:56
typoに時間かけて悩むのが好きならそれでいいんじゃない?
242デフォルトの名無しさん:2006/08/01(火) 12:51:48
漏れはタイポはしない。プログラマの基本だ。
243デフォルトの名無しさん:2006/08/01(火) 12:52:54
一番良いのはPerlを使わn・・・
244デフォルトの名無しさん:2006/08/01(火) 12:58:27
質問者です。

皆さんありがとう御座います。
勉強になりました。

strictで悩みましたが、それ以前も分かっていない
ことが分かりました。

perlは面白いですね!
245デフォルトの名無しさん:2006/08/01(火) 13:00:23
>>242
たしかにミスをしないのは重要だが、ミスを絶対にしない人間がいないからこそ用意されてるんだろうが。
246デフォルトの名無しさん:2006/08/01(火) 13:02:25
>>245
242みたいのには何を説明しても無理だよ
247デフォルトの名無しさん:2006/08/01(火) 13:07:00
ミスをしないためのはずのものが、逆に新たなミスを引き起こしてるのが問題だな。
248デフォルトの名無しさん:2006/08/01(火) 13:08:39
新たなミスってなんだよw strictの意味分ってねぇだろ >>242
249デフォルトの名無しさん:2006/08/01(火) 13:18:23
>>248
放っておいてやれ。もう引っ込みつかないんだろ。
まあでもuse strictは使い切りの作業スクリプトなんかでは使わないときもあるけど
use warningsは毎回使うよな。
250デフォルトの名無しさん:2006/08/01(火) 14:07:34
PERL5OPT=-w にしてある
251デフォルトの名無しさん:2006/08/01(火) 14:08:37
俺はstrict warning my 厨だな。
なんかもう条件反射で手が自然に書いてしまう。
252242:2006/08/01(火) 14:10:06
>>247は漏れじゃないんだけどさ、
自信ない椰子はstrict, warning使ってればいいんじゃない。
253デフォルトの名無しさん:2006/08/01(火) 14:28:32
>>248
その意味分かってないヤツが新たなミスを起こすってことだよ
254デフォルトの名無しさん:2006/08/01(火) 14:52:22
いろいろな書き方ができるからいいんじゃないの。
人の価値観にどうこう言うのやめようや。
255デフォルトの名無しさん:2006/08/01(火) 15:10:17
>>254
> いろいろな書き方ができるからいいんじゃないの。
> 人の価値観にどうこう言うのやめようや。

「人の価値観にどうこう言うのは許される」という価値観にケチをつける人が出現しました!!
256242:2006/08/01(火) 15:13:12
「人の価値観にどうこう言うのは許される」という価値観にケチをつける人にケチをつける人が出現しました!!!(以下無限ループはwarning使わず自分で制御汁。)
257デフォルトの名無しさん:2006/08/01(火) 15:13:35
覚悟の上でやってる奴は好きにしてくれとしか言いようがないが、
新しい人に悪影響を与えるのは良くない
258デフォルトの名無しさん:2006/08/01(火) 15:18:53
perl -e"$str='「人の価値観にどうこう言うのは許される」という価値観にケチをつける人';" -e"print($str.'が出現しました!!!') while($str=$str.'にケチをつける人');"
259デフォルトの名無しさん:2006/08/01(火) 15:20:05
>>242,247
おまえらがどんなソースを組もうが知ったことじゃないが
間違っても糞なソースをネットワークで公開するなよ!
あと、perl使えますとか公言したりするな。
お前らのせいでPerlerのレベルが不当に評価されちまうから。
260デフォルトの名無しさん:2006/08/01(火) 15:20:52
>>256
それはちがうだろ。
>>255は、
「「人の価値観にどうこう言うのは許される」という価値観にケチをつける人にケチをつけ」ているのではなく、
「人の価値観にどうこう言うのやめようや」という言葉で以って、「人の価値観にどうこう言っ」ている露骨な矛盾をやらかしている人にケチをつけているのでしょう。

261デフォルトの名無しさん:2006/08/01(火) 15:22:50
議論のスタンスにケチつけ始めたら、その話はもう続ける価値がない。
262242:2006/08/01(火) 15:42:51
>>259
藻前こそなぁー。strict、warning付けっぱなしでwebに
公開してネットワークの負荷を増やさんでくれよー。
263242:2006/08/01(火) 15:51:52
s/ネットワークの負荷/サーバの負荷/;
264デフォルトの名無しさん:2006/08/01(火) 16:09:47
鯖の負荷なんてものは誰かの書いたとんでもなく非効率的なコードが
そのほとんどを消費してるものだ。
265デフォルトの名無しさん:2006/08/01(火) 16:18:24
use strict;
use warning;
でスクリプトが遅くなると勘違いしてる真性の馬鹿がいるな・・・
266デフォルトの名無しさん:2006/08/01(火) 16:26:48
my いらないとか、sub の中でどうやって変数使ってんだ?w
どうみてもスパゲッティです、って感じなのか? 怖ぇw
267デフォルトの名無しさん:2006/08/01(火) 16:27:18
>>ALL
242は夏厨なので放置しましょう。
262の発言でわかるように242は劣悪なperl/CGI本が大量生産した害虫の一匹なのです。
どう丁寧に説明しても話は平行線で交わることはありません。
268デフォルトの名無しさん:2006/08/01(火) 16:39:16
ログファイルにウォーニングをバンバン書き出してるのが遅くなってる原因だろ?
269デフォルトの名無しさん:2006/08/01(火) 17:13:33
>>263
typoしてんじゃん・・・
270デフォルトの名無しさん:2006/08/01(火) 17:15:40
つまりはKENTか
271デフォルトの名無しさん:2006/08/01(火) 17:21:32
>>266
自分に出来ない事は他人も出来ないと思ってるの
272デフォルトの名無しさん:2006/08/01(火) 17:22:05
君の書いたコードを見たいwwwww
273デフォルトの名無しさん:2006/08/01(火) 17:34:17
>>271
266は出来ないなんてどこにも書いていない。
おまえがアフォだねと書いてるだけ。
274デフォルトの名無しさん:2006/08/01(火) 17:54:49
なんだこの不毛な流れ
275デフォルトの名無しさん:2006/08/01(火) 17:54:50 BE:176880645-BRZ(1002)
(#^ω^)ビキビキ…
276デフォルトの名無しさん:2006/08/01(火) 18:03:50
さすがだ
277酩酊 ◆TWARamEjuA :2006/08/01(火) 20:49:53 BE:1089825-BRZ(1019)
今喜多産業
278デフォルトの名無しさん:2006/08/01(火) 20:56:31
>>277
(・∀・)カエレ!!
279242:2006/08/01(火) 20:58:54
はい3行でね。
libraryで再利用もしない小さなスクリプト書くにもstrictやwarning
使わなきゃ自分のtypoやerrorが発見できない香具師らが、ちょっと
テクが上の人に同じことをしろと強要してる流れですよプゲラ
280デフォルトの名無しさん:2006/08/01(火) 21:04:03
>>242
「俺typoしないもん」って言ってる奴が
さっそく262でtypoしてる状態では何言っても説得力ねーよ、バ〜カw
ようは自分がミスしててもミスと認識してないだけだろ。
281デフォルトの名無しさん:2006/08/01(火) 21:05:47
242の頭がイタイって流れか
282デフォルトの名無しさん:2006/08/01(火) 21:08:31
そうそう
242の頭が逝っちゃってるって流れ
283デフォルトの名無しさん:2006/08/01(火) 21:10:21
>>279
typoしないもんって言って速攻typoするあたり
さすがテクが上の人は違いますね。
感服しました。
284デフォルトの名無しさん:2006/08/01(火) 21:16:24
242のギャグ最高!

誰もstrictやwarningを使わないとtypoやerrorが発見できないなんて書いてない。
つけた方が効率的に発見・予防できるってだけだよ。
さすがテクが上の人は脳内捏造も半端じゃないですね。
285デフォルトの名無しさん:2006/08/01(火) 21:32:22
みんなが242のギャグを褒めたのに照れてどっかいっちゃったな。
奥ゆかしい奴だ
286デフォルトの名無しさん:2006/08/01(火) 21:33:53
Perl6だとデフォルトでstrictがONじゃなかったっけ
287デフォルトの名無しさん:2006/08/01(火) 21:57:10
そうなんでつか!?
Perl6って追ってなかったから知らなかった。
ちょっくらPugsのドキュメント読んでくる
288デフォルトの名無しさん:2006/08/01(火) 22:01:10
つーかstrictがONでのエラーはそうでないものよりずっと分かりやすいじゃまいか。
初心者が「変数に何も入ってません。インタプリタのバグでしょうか」といってくるより、
「XX行目でコンパイルエラーになってしまいますが、何故ですか」といってくるよりずっと楽だわ。
289デフォルトの名無しさん:2006/08/01(火) 22:01:17
ホントだ、子飼氏のblogにあった。
http://blog.livedoor.jp/dankogai/archives/50441879.html
290デフォルトの名無しさん:2006/08/01(火) 22:01:42
あああ日本語がシンタクスエラーだった orz
291デフォルトの名無しさん:2006/08/01(火) 22:04:55
>>288
284が書いている「つけた方が効率的に発見・予防できる」ってことに集約されるな
292デフォルトの名無しさん:2006/08/01(火) 22:26:41
行きずりで連絡先も聞かないブス女抱くにも体温計やコンドーム
使わなきゃ自分のミスやerrorが回避できない香具師らが、ちょっと
テクが上の人に同じことをしろと強要してる流れですよプゲラ
293デフォルトの名無しさん:2006/08/01(火) 22:32:48
夏ですね☆
294デフォルトの名無しさん:2006/08/01(火) 22:33:26
俺よりちょっとでもテクが上なら
strictやwarningが与えるコンパイル上の制約はプログラミングの効率に何の影響もないはずなんだけどな。

いっそのこと実際にコード書いて貰って証明してもらうか?
295デフォルトの名無しさん:2006/08/01(火) 22:34:51
行きずりで連絡先も聞く気にならない女抱くにもコンドームやピル
使わなきゃ避妊できない香具師らが、ちょっと
テクが上の人に同じことをしろと強要してる流れですよプゲラ
296デフォルトの名無しさん: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がロックされるか、ソケットの受信がなくなるかのどちらかになってしまいます。

よろしくお願いします。
297デフォルトの名無しさん:2006/08/01(火) 22:41:26
>>296
これ、どうやってソースDLするの?
あとOS、Perlのバージョン,モジュールの使用可否の情報もキボン
298296:2006/08/01(火) 22:42:12
メンゴDLできた。
299297:2006/08/01(火) 22:43:02
298カキコミス297デス
300デフォルトの名無しさん:2006/08/01(火) 22:56:09
>>297
すいません、うっかりしてました。
Win2k SP4、ActivePerl5.8.8
モジュールはインストールしたままのものです。
301デフォルトの名無しさん:2006/08/01(火) 22:57:06
strict厨じゃなくてmy厨が問題の発端じゃないの?
302酩酊 ◆TWARamEjuA :2006/08/01(火) 23:03:13 BE:3485748-BRZ(1019)
242=夏VIPPER厨ということですね♪

はい次の方。
303デフォルトの名無しさん:2006/08/01(火) 23:03:59
行きずりの女だくのにコンドームつけないお前の勇気に感服した
ってか避妊以前に病気怖くね?
304デフォルトの名無しさん:2006/08/01(火) 23:10:02
本当はstrictしたいけど素直になれないツンデレさんが出没しているスレはここですか?
305デフォルトの名無しさん:2006/08/01(火) 23:12:50
>>304
じょ、じょ〜だんじゃない。
わたしにはstrictなんていらないのよ。本当よっ!
306デフォルトの名無しさん:2006/08/01(火) 23:22:43
strictしたら負けかな、と思ってる
307デフォルトの名無しさん:2006/08/01(火) 23:43:02
>>296
> client.plはSTDINを送信し、応答を受けるだけのものですが、server3.plからの接続応答「Hello!」が一行あるとワンアクション分タイミングがずれて表示されてしまいます。
connect時にサーバが送ったメッセージを受信していないからだ。
308デフォルトの名無しさん:2006/08/02(水) 00:55:05
このスレは昔から良識な人が多いのでこんなこと書くと、
「放置しろよ」とか思われてしまうかもしれないが、
最近、このスレも煽りが増えたね('A`)

いや、>>242のことではなくて。
事あるごとに、他人を必要以上に小馬鹿にしたがる煽りが。
同じ日本人であると思うと見ていて恥ずかしい。
309デフォルトの名無しさん:2006/08/02(水) 01:03:56
>>308
もうこの手の自演はいいです。
310デフォルトの名無しさん:2006/08/02(水) 01:12:45
>>308
ヒント:夏
311デフォルトの名無しさん:2006/08/02(水) 02:18:56
>>307
それで、受信を何行でも受け取れるようにclient2.plでforkを使って送信と受信を分けようしたんですが、上手くいかないんです。
312デフォルトの名無しさん:2006/08/02(水) 02:37:49
>>311
ヒント: select
313デフォルトの名無しさん:2006/08/02(水) 03:01:03
>>312
ちょっと書いてみた。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";
}
}
}
}
て感じで。
314デフォルトの名無しさん:2006/08/02(水) 03:09:30
>>296
まず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を使ってやるなら、
ソケットからの読み取りをブロックしないようにすれば大丈夫かな?
その場合は、ソケットへの読み書き部に排他制御もするべきだろうね。
315デフォルトの名無しさん:2006/08/02(水) 05:35:13
server側の処理はPOEで簡単に書けたけど、
client側が思ったようにうごかねぇ。
POE::Wheel::ReadLineでいい感じになるよって書こうかと思ったけど
WinのせいなのかActivePerlがいけないのかわからんけどPOSIXのマクロがねぇって怒りだしてうごかねぇな。。。
おまけに普通にPOE::Wheel::ReadWriteでInputHandleにSTDINを登録してもWinはなぜかうごかねぇし…。
どうなってんだこりゃ?
316デフォルトの名無しさん:2006/08/02(水) 05:38:08
Linux,BSDで動くclient.plは書けたけどWinで動くクライアントがかけねぇ!!
296には悪いが練る。
317デフォルトの名無しさん:2006/08/02(水) 10:47:14
ぼくはまちやさんで今はやってるはてなのXSS
aho.cgi?a=b&page=0"><script>alert("aho")</script>の類は
kentさんのスクリプトに試したら起きなかった
やはりkentさんはすごいね
318デフォルトの名無しさん:2006/08/02(水) 11:27:35
>>313
こちらでは受信が出来なくなってしまいました。
>>314
ほんとだ、凄くつまらないミスしてますorz
Windowsだから希望したように動かないと思っていいということでしょうか?
>>316
遅くまでありがとうございます。
やはりWindowsだからだめなんでしょうか。

Perlでこういった処理というのは、あまり使われないのでしょうか?
今回はチャットの形で挑戦したのですが、特定の処理を別のマシンにまるなげするとか、うまくやればリモート操作なども出来そうなので、いろいろ弄ってみたかったです・・・・。

何が問題か未だにわかっていませんが、別の方法で、例えばTkで出来ないか、試してみます。
319デフォルトの名無しさん:2006/08/02(水) 12:01:50
>>318
> Perlでこういった処理というのは、あまり使われないのでしょうか?

いや、ありとあらゆるプロトコルのサーバもクライアントもサーバントも
プロクシも存在する。

Windowsって難儀やねえ。
320297=315=316:2006/08/02(水) 13:39:52
>>318
Perl,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でまた違うのか…。
もうちょっと調べてみる ・ω・)ノ
321デフォルトの名無しさん:2006/08/02(水) 16:06:40
なんだか理解の範囲を超えてる話題になってきちゃってます。
いい機会なので、ヤフオクで安いPCでも仕入れて、LInuxインスコしてみようかな。
お金ないけどorz
322デフォルトの名無しさん:2006/08/02(水) 16:15:06
誰か、お願いします1つだけ教えてください。

http://news18.2ch.net/mnewsplus
っていうのを読み込んで mnewsplus の部分だけ欲しいです。
/より後を切り出すためにはどうすればいいでしょうか?
2chのルートディレクトリはほとんど、1つ下のディレクトリにあるみたいなので
ディレクトリ名だけ欲しい状況です。

おねがいします。
323デフォルトの名無しさん:2006/08/02(水) 16:21:05
splitでいいんですか?

//と/という構成なのでゴチャゴチャになっちゃいそう>_<
私がほしいのが○○○の部分です。

http://2ch.hoge.net/○○○
324デフォルトの名無しさん:2006/08/02(水) 16:23:12
>>321
実機のほうがいいのは確かだけど
coLinuxやVMWareのPlayerが無料で公開されてるのでリンク貼り付けときます。

http://www.itmedia.co.jp/enterprise/articles/0411/05/news072.html
http://blog.yasaka.com/archives/2005/10/vmware_playervi.html
325デフォルトの名無しさん:2006/08/02(水) 16:49:08
>>322
my $url = 'http://news18.2ch.net/mnewsplus';

1. (split!/!, $url)[-1];
2. $url =~ s!http://[^/]+/([^/]+).*!$1!;
326デフォルトの名無しさん:2006/08/02(水) 16:57:56
plをexeにコンパイルしたいのですが

本家でperl dev kit なるものがダウソしたのですが、ライセンスKEY買えってでて、どうやって買うのかもわからずできませんでした。

他に方法ないでしょうか;
327デフォルトの名無しさん:2006/08/02(水) 17:02:11 BE:79596533-BRZ(1002)
PARとか
コンパイルと言えるかどうかは知らないけど
328デフォルトの名無しさん:2006/08/02(水) 17:05:00
perlcc
329デフォルトの名無しさん:2006/08/02(水) 17:13:37
>>325
1. と 2. じゃ意味が違うようだけど、質問の回答ならどっちでもいいのかな
330デフォルトの名無しさん:2006/08/02(水) 17:42:00
>>324
面白そうなので、調べてます。
ちなみに、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;
}
331デフォルトの名無しさん:2006/08/02(水) 18:07:38
題意を満たすだけなら。
($result) = $url =~m|/(.+?)$|;
332331:2006/08/02(水) 18:12:47
あれ、うまくいかないや。最短一致でいけるとおもったのに。
333デフォルトの名無しさん:2006/08/02(水) 18:24:03
>>331
最初に見つけた'/'から行末までいっておしまいか。
マッチの終了位置が最短にするようにはするけど
開始位置が最短になるように移動することはしないのね。
334デフォルトの名無しさん:2006/08/02(水) 18:25:11
perl -e'my $url = "http://news18.2ch.net/mnewsplus"; my ($ret) = $url =~ m,([^/]+)$,; print "$ret\n"'
335326:2006/08/02(水) 18:27:29
誰かコンパイルしておくれ
336デフォルトの名無しさん:2006/08/02(水) 18:45:46
>>318
Perl 5.6系で実行する、マジお薦め。
5.8系なら print を send に書きかえる。
うろ覚えだけど、そんな感じ。
337デフォルトの名無しさん:2006/08/02(水) 19:02:18
>>335
perlcc -o yes.exe -e 'while(1){print "yes\n";}'
338297:2006/08/02(水) 19:07:11
>>336
試しにXPのActivePerlを5.8.8から5.6.1(build638)に入れ替えてみたけど
POEを使った方法やIO::Selectを使った方法を試したけどうまくいかないよ。
sendはsocketを処理する奴で
漏れは296の問題を解決しようとして標準入力がうまく扱えなくて頓挫中。
339デフォルトの名無しさん:2006/08/02(水) 19:07:46
use File::Basename ;
my $ret = basename $url ;
340297:2006/08/02(水) 19:30:32
341297:2006/08/02(水) 20:20:30
5.8.8に戻してthreadsを試したけど2つのスレッドが平行しないな。
AのスレッドがSTDINを読みに行く間,Bのスレッドは止まってるよ。
これじゃあスレッドを実装してる意味ねぇじゃん…。
漏れの勝手な結論: Windows + ActivePerlの挙動が変
342デフォルトの名無しさん:2006/08/02(水) 22:46:44
Windowsではソケットとselectの相性が悪いってことなんですね。

Win32::Socketpairというモジュールでは、syswriteとsysreadを使っているようです。
関係があるか良くわかりませんが、また時間があるときに弄ってみます。
343297:2006/08/02(水) 22:49:30
>>342
逆っす。
340のリンク先を見てもらうのがいいと思います。
344デフォルトの名無しさん:2006/08/02(水) 23:24:10
>>343
とりあえずお気に入りに入れました。
英語からっきしダメなんで、時間があるときに解読していきますorz
345デフォルトの名無しさん:2006/08/02(水) 23:32:18
>>344 340のリンク先は日本語のページだよ?
346デフォルトの名無しさん:2006/08/02(水) 23:40:15
そのリンク先のフォーラム?の記事が・・・
347デフォルトの名無しさん:2006/08/03(木) 00:21:32
>>338
こっちだと、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は、(ハマりそうだから)確認すらしていないけど。
348デフォルトの名無しさん:2006/08/03(木) 00:24:03
つーか、ファイルハンドルやソケットのblockingを変更するメソッドあるだろ?
あれはWindowsでも動いたと思うぞ。
349デフォルトの名無しさん:2006/08/03(木) 01:18:02
>>347
XP+ActivePerl5.8.8では動かんな。

>>348
具体的なコード プリーズ
350デフォルトの名無しさん:2006/08/03(木) 01:33:21
noblockingにするとブーンと……
351デフォルトの名無しさん:2006/08/03(木) 01:39:17
>>349
POEやIO::Selectをつかってnon-blocking処理してるのを
理解できてないわけだから>>348をいくら叩いても何も出てこないよ
352326:2006/08/03(木) 04:01:05
perlcc無理でした・・

親切な方いましたら ↓の.plファイルをexeにコンパして、[email protected] に送ってもらえないでしょうか


http://gareki.ddo.jp/ki/ki/ki_6814.xxx

合言葉は326でお願いします

353デフォルトの名無しさん:2006/08/03(木) 04:12:10
信頼の絆って大切だねッ!
354デフォルトの名無しさん:2006/08/03(木) 04:30:08
perl2exeって知ってるか?
355デフォルトの名無しさん:2006/08/03(木) 11:13:24
>>352
ウィルス実行しないように気つけろよw
356デフォルトの名無しさん:2006/08/03(木) 12:14:07
Term::Capを使ったサンプルソースのサイトをご存知ないでしょうか
具体的には、DOS窓中で任意の位置に文字をprintしたいのです。
クックブックの内容どおりでは、WindowsXP perl5.8環境では
うまくいかず行き詰ってます…
357デフォルトの名無しさん:2006/08/03(木) 15:23:44
perlコードをexeにするメリットってあるの?
358デフォルトの名無しさん:2006/08/03(木) 15:32:01
>>357
デメリットの半分くらいはあるんじゃない?
359296:2006/08/03(木) 19:09:23
こちらの環境では、やはり同じようにロックされてしまいます。
360デフォルトの名無しさん:2006/08/03(木) 19:11:54
只今>>359が完全にロックされました。 セーフティセーフティしますか?
361デフォルトの名無しさん:2006/08/03(木) 20:08:07
>>356
コマンドプロンプトは端末じゃねぇから
Win上でTerm::Capでほげほげするってのは多分無理じゃね?

あとモジュールの使い方くらい、ここで聞いたりウェブ探さなくても
モジュールのドキュメントにサンプルコード書いてあるべ?
コマンドプロンプト開いて
perldoc Term::Cap
ってしてみ。
362デフォルトの名無しさん:2006/08/03(木) 20:09:56
つWin32::Console
363347:2006/08/03(木) 20:38:19
>>349
そっか、余計な事を書いてしまったようで(>>296氏にも)失礼した。
98SEの場合、(クライアント側は)5.8系だと print $socket $_; 中でロックするので、そいつだと思った。

もうちょい調べてみるけど、ActivePerlのソース(816/613双方)を見た感じ、ソケット回りはNT/9x系で
共通だから、徒労に終わる予感。
364297:2006/08/03(木) 21:01:12
>>347
サーバ側は私もすぐにスクリプトを組めました。
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されちゃうんですよね。
365296:2006/08/03(木) 23:11:57
>>361のレスでふと気になって、サーバーは同じように直接実行して、クライアントはtelnetで接続してみました。
そうすると、受信は出来ますが、送信どころか入力が出来ません。
しかし、一つ気になることがありました。
それは、改行が改行になってないということです。
プロンプトでは\nと\rで行が変わって先頭にカーソルが移動しますが、telnetだと、\nのみでカーソルが真下に移動します。
telnetはめったに使わないので文字コードの扱いをよく知りませんが、改行コードで攻める方法もあるのかもしれない(?)ので、後でやってみます。
366297:2006/08/04(金) 00:19:50
>>296
サーバーは動くの確認してるからそっちだけでもソースうぷったほうがいい?
367デフォルトの名無しさん:2006/08/04(金) 01:42:43
すいません、Perlプログラムについて質問
させていただきたいのですが、

@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)
どなたかよい方法ありましたら是非ご教授願えませんでしょうか・・・
368デフォルトの名無しさん:2006/08/04(金) 01:45:43
よく理解してないのだが、普通に16進->2進やって空白ビットだけ落とすってのは駄目?
369デフォルトの名無しさん:2006/08/04(金) 02:29:43
>>367
@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;

ビットの配列化は適当に。
370367:2006/08/04(金) 03:03:08
>>368,369さん
ありがとうございます!
正直このために5時間以上考えてもうまくいかず
熱出して鼻水だしてやってました・・・これで養生できそうです。
本当にありがとうございます
371デフォルトの名無しさん:2006/08/04(金) 04:00:44
マルチポストすいません。webprog板でも質問したのですが回答頂けなかったのでこちらでも質問させてください。

ttp://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);
}
372デフォルトの名無しさん:2006/08/04(金) 08:21:36
>>371
質問するときはOS, perlのバージョンを書けってママンに教えてもらわなかったのか?
373デフォルトの名無しさん:2006/08/04(金) 09:57:16
>>371
selectというのは、、selectでブロックして、
selectを抜けた時にselectの返り血で
タイムアウトか入力があったかを調べるもの
なんだが。
374371:2006/08/04(金) 11:42:33
>>372
すっかり忘れてました。
OS: Linux 2.6.9-1.667 #1
Perl: v5.8.5
で試してますが将来的にはWindows+Perlでもスクリプトが組めるように
alarm関数は避けて試してます。

>>373
selectって、そういうものだったんですか…
やはり、とりあえずalarm関数でやっていくしかないみたいですねー
有り難うございました。
375デフォルトの名無しさん:2006/08/04(金) 12:11:57
>>374
?
(@_@;)
376デフォルトの名無しさん: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です。
377デフォルトの名無しさん:2006/08/04(金) 18:36:05
特殊なのはjperlの方。
マルチバイトとjperlがどういったものなのか理解すればわかる話。
perl5.8.8で同じことしたい場合はソースコードをUTF-8で書くかencodingを使え。
ただしencodingは副作用も大きいからそれがなんなのか、
どこまで影響するのかを理解できないなら使わないほうが身のため。
378347:2006/08/04(金) 19:29:47
>>364
STDIN処理中の他スレッドブロックは確認できず。
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でのロックの判断用。
379376:2006/08/04(金) 19:36:05
>>377

そのスクリプトが載っていた本はjperlに準拠していて、
本に書いてある出力はjperlの方だったので、
ActivePerlがおかしいのかと思ってしまいました。

ありがとうございました。
380371=374:2006/08/04(金) 20:08:50
>>375
あれ?私の解釈間違ってました?
381296:2006/08/04(金) 23:11:17
>>378
Windows上では1つのプロセスで同時には無理と考えるしかないみたいですね。

>324の使い方で挫折してまして、やはり実機でやろうとヤフオクに手を出したのですが、競り負けましたw

これ以上の追求は、いまの自分の知識ではついていけないので、ROMに戻りたいと思います。
いろいろ調べていただいて、ありがとうございました。
それでは。
382297:2006/08/05(土) 05:36:19
>>378
パイプで作ったプロセスの標準入力はコンソールではないから
無理のような気がするのですが。
383デフォルトの名無しさん:2006/08/05(土) 11:14:12
httpsのページを取得する。
実際には、ETRADEのポートフォリオのページを取得したい。
Crypt::SSLeayを用いて取得可能?→使用方法不明
どうすればよい?
384デフォルトの名無しさん:2006/08/05(土) 11:18:48
>>383
ソース読めば使い方なんか簡単にわかるよ。
385デフォルトの名無しさん:2006/08/05(土) 12:35:53
>>384
使い方はわかった。
問題は、ログイン後にリンク先にいきやり方が
わからないだった。
なのでclose。
386297:2006/08/05(土) 14:31:17
>>383
Crypt::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
387デフォルトの名無しさん:2006/08/05(土) 14:42:10
data.txtに入っているデータを バブルソートを使って
4,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;
388387:2006/08/05(土) 14:42:53
すみません、バブルソートではなく普通のsort関数でした>_<
389デフォルトの名無しさん:2006/08/05(土) 14:43:36
宿題?
390デフォルトの名無しさん:2006/08/05(土) 14:48:53
いいえ。私のデータベースのデータの並び替えのプログラムを作って走らせたんですが
エラーが出てしまいます>_<
391デフォルトの名無しさん:2006/08/05(土) 14:50:03
最初のコンマの前の数字で大きい順に並び替えて
出力保存しようとしているのですが、なぜかエラーに・・・>_<
392デフォルトの名無しさん:2006/08/05(土) 14:52:01
FH2 なんていうファイルハンドルはオープンされていないのだが。
393デフォルトの名無しさん:2006/08/05(土) 14:54:32
%data_hash = ();
open(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;
394デフォルトの名無しさん:2006/08/05(土) 14:54:34 BE:238789139-BRZ(1002)
全く何がやりたいコードか分からん…
395デフォルトの名無しさん:2006/08/05(土) 15:00:03
相手するなよ…
396デフォルトの名無しさん:2006/08/05(土) 15:03:19
>>392さん
すみません2消し忘れました>_<

>>393さん
無駄のない書き方ありがとうございます。
もし>>387にあるような記述で書くのならば
どういうふうに書けばいいのでしょうか?
また、どこにエラーがあったのかも知りたいところです。

申し訳ないです。>_<

>>394さん
>>387のようにdata.txtのデータを行単位で読み込んで
行の一番最初にあるコンマの前の数字で大きい数字が上にくるような
データの並びに変えて出力保存したいです>_<
397デフォルトの名無しさん:2006/08/05(土) 15:06:38
>>393さんのソースで走らせたところ

10,2,D,DDD 7,21,B,BBB
4,3,A,AAA
2,9,C,CCC


と出力保存されました>_<
398デフォルトの名無しさん: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";
}
と書きなさい。
399デフォルトの名無しさん:2006/08/05(土) 15:16:48
>>397
そら、最終行に最初から改行記号が入ってなかったんだろう。
400デフォルトの名無しさん:2006/08/05(土) 15:18:58 BE:53064432-BRZ(1002)
#!/usr/bin/perl

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__

こういう事?違ってたらごめん
401デフォルトの名無しさん:2006/08/05(土) 15:19:49
>>398
ずばり、その通りでした!
今、走らせたらうまく行きました。
ありがとうです^^
ただ、並び替えした後は
10,2,D,DDD 7,21,B,BBB 4,3,A,AAA 2,9,C,CCC
と一行になってしまうので\nをそれぞれに入れてあげなきゃですね。


>>399
ずばり、そうでした。
ありがとうございます^^
402デフォルトの名無しさん:2006/08/05(土) 15:20:52
>>400
sort の比較の中でsplitするのって無駄じゃね?
403デフォルトの名無しさん:2006/08/05(土) 15:22:30
>>401
あなたのプログラムだと、改行記号を取り去っているからね。
>>400さんとか>>393さんのだと、取り去っていないから改行記号が最初から入っている。
最終行だけは入っていない可能性があるけど。
404デフォルトの名無しさん:2006/08/05(土) 15:23:34
>>400さん
それでも出来ますね!
色んなやり方があるんですね。
ありがとうです。

>>398さんの記述になおしたのですが
10,2,D,DDD 7,21,B,BBB 4,3,A,AAA 2,9,C,CCC

と一行表示されてしまいますね>_<
405デフォルトの名無しさん:2006/08/05(土) 15:23:58
もういいだろ。
406デフォルトの名無しさん:2006/08/05(土) 15:25:47
これでいいですか?

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];
}

@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;

407デフォルトの名無しさん:2006/08/05(土) 15:27:21
>>406で出来ました。
ありがとうございました^^
408デフォルトの名無しさん:2006/08/05(土) 15:29:56
まあ、他の人の書き方をみて勉強するといいと思いますよ。
ということで次の質問どうぞ。
409デフォルトの名無しさん:2006/08/05(土) 15:41:49
またデバッグもしないエラー隠蔽者の増大につながる「援助ごっこ」をやっていたのですか。
410デフォルトの名無しさん:2006/08/05(土) 15:49:54
つーか無意味にageるキチガイどもはまとめて去れ。
411デフォルトの名無しさん:2006/08/05(土) 17:03:37
このスレの住人は猛烈に頭がいいから困るw
412デフォルトの名無しさん:2006/08/05(土) 17:44:44
プラグラマって職業柄か90%が性格ひねくれてるよな
その90%のうちの、さらにひねくれてる連中が2chねらのテメーらってわけだが
413デフォルトの名無しさん:2006/08/05(土) 19:02:22
>>412
さあ、プラグラム書きの仕事に戻るんだ。
414デフォルトの名無しさん:2006/08/05(土) 20:46:46
語りストの話題もここでいいの?
415デフォルトの名無しさん:2006/08/05(土) 21:45:40
>>414
どんな話題だってかまわないよ。
別の言語のネタだって。何したってもうこれ以上酷くなりようないしな。
416デフォルトの名無しさん:2006/08/05(土) 22:56:15
>>383
<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:>
フォームはこのとおりなんだけど。
どうすればいいの?
417デフォルトの名無しさん:2006/08/05(土) 23:05:33
>>386
ちなみに、HTML::Formはインストール済み。
418デフォルトの名無しさん:2006/08/05(土) 23:07:06
416は >>386 の間違い。
419デフォルトの名無しさん:2006/08/06(日) 00:21:04
>>386
やっとわかりました。
ありがとう。
420347:2006/08/06(日) 03:39:52
>>382
XP 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;
がブロック回避用の記述。
これで駄目なら、ちょっと自分には難しいかも。
421デフォルトの名無しさん:2006/08/06(日) 03:51:09
「ー」は、全角文字の2バイト目に『 [ 』のコードを含むので、
「ー」をマッチするとエラーが出るのを、うまくマッチさせるにはどうしたらいいかな?
422デフォルトの名無しさん:2006/08/06(日) 04:13:23
EUC-JPとかUTF-16とかにしてから処理する
もしくは、文字列の先頭から見ていって、どれがマルチバイト文字でどれがシングルバイト文字なのか調べていく

とか?
423デフォルトの名無しさん:2006/08/06(日) 04:29:21
>>422
サンクス。やってみる
424デフォルトの名無しさん:2006/08/06(日) 06:05:53
\Q\E
425デフォルトの名無しさん:2006/08/06(日) 13:08:38 BE:132660353-BRZ(1002)
いいかな?じゃねぇよ それが質問者の態度か
いい加減にしろよ 
426デフォルトの名無しさん:2006/08/06(日) 13:51:52
>>425
僕はあまりこだわらんほうなので気にしないけれど、>>421 の質問そのものはあまり上手じゃないね。
encoding の知識が少しあれば SJIS を使った場合の「おやくそく」だと読み取れるし、エラーも Unmatched なんちゃらだとすぐに思い当たる。
でもそれを回答者に期待しちゃダメよ。意図と現象の他に環境とエラーメッセージを書け、なんてつまらんことを繰返し言うのにはちゃんと理由があるのだから。
427422:2006/08/06(日) 13:56:51
ああ・・・ ごめん、すごい勘違いしてた。('A`)
428デフォルトの名無しさん:2006/08/06(日) 15:05:39
さんざん encoding を使うなと言ってるのに、
それでも使う質問者がどうなろうと知ったこっちゃねぇ。
429426:2006/08/06(日) 15:24:31
>>428
ネタと思いつつ、、
encoding プラグマの話は出てきてないぞう。
430デフォルトの名無しさん:2006/08/06(日) 18:15:20
実際無駄にソース貼りまくるよりはましな質問だと思うけどね。
何やりたいのかはわかるし。まあ質問の内容は糞過ぎだはな。
431デフォルトの名無しさん:2006/08/06(日) 18:19:53
うん、まともな日本語使えてる分ましな方だはな。
432デフォルトの名無しさん:2006/08/06(日) 18:40:24
プチ日下部が住み着いてるな。
433デフォルトの名無しさん:2006/08/06(日) 18:56:55
>>430
言いたい事は分かるが何故このタイミングで言うかな。
434デフォルトの名無しさん:2006/08/06(日) 22:49:29
>>432
そういうことにしてしまいたいのですね? ;)
435デフォルトの名無しさん:2006/08/07(月) 00:40:34
ってか >>425 がキレてる理由がわからない。
436デフォルトの名無しさん:2006/08/07(月) 00:49:35
暑さとカルシウム不足
437デフォルトの名無しさん:2006/08/07(月) 01:54:51
>>436
> カルシウム不足
迷信イクナイ
438デフォルトの名無しさん:2006/08/07(月) 02:25:14
>>437
迷信じゃない。
439デフォルトの名無しさん:2006/08/07(月) 04:08:51
迷信だよ。
確かにカルシウムは細胞の興奮に関係していて神経細胞も例外ではないが、
ホメオスターシスによって血中のカルシウム濃度は一定に保たれている。
もし、カルシウムの摂取が不足していたら、最初にまず破骨細胞が活発に活動して骨を溶かす。
440デフォルトの名無しさん:2006/08/07(月) 04:15:45
ちなみに俺は ホメオスタシス 派だ。
441デフォルトの名無しさん:2006/08/07(月) 04:48:28
俺はホモオスオカス 派だ。
442デフォルトの名無しさん: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;のような別の書き方は無いですよね??
443デフォルトの名無しさん:2006/08/07(月) 10:03:06
Excelでそれと同じような表を作って、CSV形式で保存して、それをメモ帳か何かで開いてみろ
444デフォルトの名無しさん:2006/08/07(月) 10:03:15
>>442
splitしたあと、表示する前に元に戻せばいいと思うよ。
445デフォルトの名無しさん:2006/08/07(月) 10:08:09
>>443
ダブルクォートで囲まれますね。
でも、そのデータ自体を出力する際に

open( OUT, ">hoge.txt" );
flock( OUT, LOCK_EX );
print OUT $TITLE.",".$DATE.",".$EMAIL","..$CONTENTS;
close OUT;

となるのでダブルクォート入れられないですよね・・・


>>444
すみません。ただ内容の中に入る文字列が日記みたいなもので
「読点」がデフォでたくさん入ってるので、それらが全て
「,(半角カンマ)」になってしまいます>_<
446デフォルトの名無しさん:2006/08/07(月) 10:11:46
例えば
hoge.txtの中身が

題名,8月7日,[email protected],"aaaa,aaaaaaaa,aaaaaaaaa,aaaa",test

だったとして

($TITLE,$DATE,$EMAIL,$CONTENTS,$ETC)=split( /,/,$IN);

をしたら
$CONTENTSの中には aaaa,aaaaaaaa,aaaaaaaaa,aaaa が入りますか?
447デフォルトの名無しさん:2006/08/07(月) 10:13:55
>>446
あんたの技量では自力では処理できない。
moduleを使え。
448デフォルトの名無しさん:2006/08/07(月) 10:16:17
>>445
ある文字を別の文字に置き換えるだけじゃもとからその別の文字が元から含まれてたら
それがもともとその文字だったのか置き換えの結果によるものかわからないのは当たり前。

「,」→「\,」
「\」→「\\」

にするとか頭使えよ。

449デフォルトの名無しさん:2006/08/07(月) 10:17:41
>>447
Text::CSV_XSだな。

450デフォルトの名無しさん:2006/08/07(月) 10:21:01
区切り文字を '\0' のような、テキスト中に普通登場しないものに変えろ。
また、テキスト中の'\0'はあらかじめ削除しろ。
'\0'を使ったAAは存在しないので、これで問題ない。

'\0' が 文字コード0の制御文字だってことがわからんレベルなら諦めた方がいいけど。
451デフォルトの名無しさん:2006/08/07(月) 10:23:43
皆様、ありがとうございます。
カンマ区切りというのが一般的だと思っていたのですが
皆様工夫をこらして、

>>450さんみたいに

”\0”とかで区切っているのですね。

ありがとうございました。
452デフォルトの名無しさん:2006/08/07(月) 10:24:10
>>450
Perlの文字列リテラルだと'\0'は「\」と「0」の2文字なのでその書き方は不親切ではないかと思う。
"\0"と書くべきだな。
453デフォルトの名無しさん:2006/08/07(月) 10:25:30
斜め上を行く理解をされたようだがそれはそれでいいか...
454デフォルトの名無しさん:2006/08/07(月) 10:28:05
>>452

"\0"じゃダメなのですか?
455デフォルトの名無しさん:2006/08/07(月) 10:47:20
452は'\0'がだめだという話で"\0"ならok

% 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
456デフォルトの名無しさん:2006/08/07(月) 10:53:05
>>455
わざわざ詳しい説明ありがとうございました。

保存する際に

open( OUT, ">hoge.txt" );
flock( OUT, LOCK_EX );
print OUT $TITLE."\,".$DATE."\,".$EMAIL"\,"..$CONTENTS;
close OUT;

でしておいて、読み込む際に


($TITLE,$DATE,$EMAIL,$CONTENTS,$ETC)=split( /\,/,$IN);

で問題解決しそうですね。
ありがとうございました。
457デフォルトの名無しさん:2006/08/07(月) 10:57:44
こういうのがありました^^;

$in{'CONTENTS'} =~ s/,/¸/g;
458デフォルトの名無しさん:2006/08/07(月) 11:07:09
>>456
ちょw"\0"使えよ
459デフォルトの名無しさん:2006/08/07(月) 11:27:25
ここは笑うところで合ってる?
460デフォルトの名無しさん:2006/08/07(月) 11:29:28
あってる
461デフォルトの名無しさん:2006/08/07(月) 11:58:08
>>439
ちょっと知識つけただけの素人さんだったか。
ネット上でアホがいろいろ言ってるようだけど、いくつかの実験で
カルシウム欠乏だけでストレス増してるのが観測されてるよ。
462デフォルトの名無しさん:2006/08/07(月) 12:32:45
すみません、先ほどの者ですが「 \0 」を実装したところ
うまく行きました^^

ところで、既存のデータで既に「,(半角コンマ)」になってるものを
修正する際には

「,」→「\0」の置き換えでいいのですか?

メモ帳でこの置き換えをしたら文字として認識されてしまいそうで^^;

もしくは新しく出来上がったデータの \0にあたる部分をコピペして
置き換えでいいですか?

何度もすみません
463デフォルトの名無しさん:2006/08/07(月) 12:54:24
>>442
,
つーか、どうせ出力はHTMLなんだから,を見つけたら,に変換しとけばいいじゃん。
464463:2006/08/07(月) 12:55:18
オワっwww変換されやがった。もう一度全角でトライ。

&#44;
つーか、どうせ出力はHTMLなんだから,を見つけたら&#44;に変換しとけばいいじゃん。
465デフォルトの名無しさん:2006/08/07(月) 13:00:51
>>463
>>464

えっ!??!?
最初からその手があったんですかwww

&nsbpみたいなテクw
466デフォルトの名無しさん:2006/08/07(月) 13:03:08
>>464
神様ありがとうございました^^;
467デフォルトの名無しさん:2006/08/07(月) 13:14:15
c++では以下の式では関数aとbのどちらが先に
実行されるかは不定ですだから実行順序に依存
した処理はするなと本にありました

i = a() + b();

perlではどうなのでしょうか?

i = a() + b();としたときa()とb()は必ずa(),b()の順で
実行されるのでしょうか?それとも不定なのでしょうか?
468デフォルトの名無しさん:2006/08/07(月) 13:29:06
>>442
よーしパパ元データに <script type='text/javascript'>alert('Hello');</script> って居れちゃうぞー
469デフォルトの名無しさん:2006/08/07(月) 13:35:27
>>467
評価の順番に依存するプログラムを書くべきではない。以上。
470デフォルトの名無しさん:2006/08/07(月) 14:50:59
>>469
exit;
だけが許されるってことか。
471デフォルトの名無しさん:2006/08/07(月) 14:54:52
>>467
処理系実装がどうかは置いとくとして、本質は同じ。
評価順を保証したければあらかじめ返値を保存して使えば目的は果たせるけれど、あんまりうれしくない。

$i = &a() + &b();

これを見て多くの人は、各項がいつ確定しようが $i は変わらないと感じるでしょう。
評価順への依存に気付き、その依存の内容を知るには、各関数でどのような副作用が生じているかを読み解かねばなりません。
結果としてコードがとても読みづらくなり、従ってある程度の量のコメントを必要とし、そしてある日突然動作しなくなる可能性があります。
ですからこのようなコードに直面した場合は構造化手法を見直したほうが良いでしょう。
472デフォルトの名無しさん:2006/08/07(月) 15:01:18
>>465
TSV じゃダメなの? 値中の \t は s/\t/ /g するなり、s/\t/&#9;/g するなり。
# てか /&nsbp;/&nbsp;/
473デフォルトの名無しさん:2006/08/07(月) 16:34:12
>>471
それ評価順の問題じゃなく関数がへぼいだけじゃん。
そんでもって引数が同じで結果が違うのは関数じゃないじゃん。
474デフォルトの名無しさん:2006/08/07(月) 17:15:05
>>473
> それ評価順の問題じゃなく関数がへぼいだけじゃん。

なので関数の括り出し方などを考え直そうね、という主旨です。
ちょっと分かりづらかったかもしれませんね。

> そんでもって引数が同じで結果が違うのは関数じゃないじゃん。

サブルーチンと言い換えても構いません。Perl においては単に呼称の問題なので。

a() が b() に影響を与える (またはその逆) 処理を行っていたとして、どちらが先に評価されるかで式の結果が変わる、
あるいは式の結果には影響を与えないが、他の部分でその式における両サブルーチンの処理順に依存した処理を行っている、

などという設計は早晩破綻するに決まっているのでショボーンだよ、という話でした。
475デフォルトの名無しさん:2006/08/07(月) 18:58:47
Mac OS X、Perl 5.8.6で使っています。
スクリプトを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

こんな感じになります。解決方法があったら教えてください。
476デフォルトの名無しさん:2006/08/07(月) 19:32:12
>>475
スクリプトをUTF8で書かない、use encoding(utf8)を使わない。
477デフォルトの名無しさん:2006/08/07(月) 19:34:04
>>475
use encoding を使うとデバッガは使えない。
たぶん、use utf8 を使うべきじゃないかな。

>>473
Perlでは time() も sleep() も関数。
そして、time()+sleep(10) という式の値は評価順によって異なる。
もちろん、「time()が関数でない」「time()やsleep()がへぼいだけ」等の
可能性は否定しない。
しかし、これは評価順の問題として扱うのが妥当だろう?
478475:2006/08/07(月) 20:03:06
>>475 それくらいわかってる上での質問デスヨ

>>476 アリガトン。use utf8だとデバッグはできるんですが、スクリプトを少し書き直す必要があるんです。
でも、use encodingが使えないなら、use utf8で書き直してみたいと思います。
479デフォルトの名無しさん:2006/08/07(月) 21:15:57
nameに同じ名前を指定する時、
Input typeがcheckboxならばcgi-lib.plで処理出来るのですが
hiddenの時も同じように処理は出来ないのでしょうか?
&ReadParseの力を使っても何も表示されませんでした。お願いします。
480475:2006/08/07(月) 21:18:43
>>479
スレ違い
厨房は向こうへどうぞ
481479:2006/08/07(月) 21:41:05
>>480
初心者ですみません。
いつも簡単なPerlの質問はこのスレッドで質問させて頂いたのですが
他に適した場所がございましたら誘導お願いします。
482デフォルトの名無しさん:2006/08/07(月) 21:45:27
>>481
おまえか!

ヒント:あなたの質問は
x Perl
o CGI
です。

にしても>>475は自分のこと棚に上げて何のつもりだか。
483デフォルトの名無しさん:2006/08/07(月) 21:46:39
484479:2006/08/07(月) 21:51:45
>>483
すみません、誘導ありがとうございました。
以後気をつけます。
485475:2006/08/07(月) 21:55:14
>>480 人の名前騙るなよ。
俺は480みたいな事言いませんよ。ID見てよ。
486デフォルトの名無しさん:2006/08/07(月) 21:56:06
>>485
面白くないよ。
487475:2006/08/07(月) 21:56:34
ってIDでないじゃんこの板。違うよー、480は俺じゃないよー。スレ汚しスマソー。
488デフォルトの名無しさん:2006/08/07(月) 23:12:25
>>478
> >>475 それくらいわかってる上での質問デスヨ

# アンカーがアレなのは置いといて、

あなた様がどれくらいわかっているのかについて、私どもは事前にお示し頂いておりません。
ゆえに >>476 の無礼も無理からぬ事と存じます。ここはどうか寛大なお心でご勘弁ください。
489デフォルトの名無しさん:2006/08/07(月) 23:24:22
ちなみにおれ様は何もわかってないよ。
(念の為、事前に示しておいたワケ。)
490デフォルトの名無しさん:2006/08/07(月) 23:26:18
>>487
480が誰だとかそういう以前の問題だろ。二度と来ないで欲しい。
491デフォルトの名無しさん:2006/08/07(月) 23:28:20
>>488
無礼なのはお前と>>475だけだろ?
492デフォルトの名無しさん:2006/08/08(火) 03:23:12
         ナ ゝ   ナ ゝ /    十_"    ー;=‐         |! |!
          cト    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
493デフォルトの名無しさん:2006/08/08(火) 05:22:35
EmacsスレといいPerlスレといい
UNIX上でそれなりに歴史長いやつのユーザーには
年甲斐のない人が多いんでつね。

な ん で バ カ を 放 置 で き な い ん だ ??
494デフォルトの名無しさん:2006/08/08(火) 08:57:35
utf8で
print length ('1234567890');
ってやったら30って出たんですけどどうしてですか?
495デフォルトの名無しさん:2006/08/08(火) 09:15:33
utf8 ってなんだかわかっててきいてるんですか?
496デフォルトの名無しさん:2006/08/08(火) 09:21:21
>>494
use utf8をしないでスクリプトをutf8で書いただけなんじゃないか。
497デフォルトの名無しさん:2006/08/08(火) 09:49:51
>>494
utf8では、'0123456789'が30バイトだから。
念の為、Perlの標準では1文字は1バイトで、30バイトの文字列の文字数は30。
498デフォルトの名無しさん:2006/08/08(火) 10:15:45
>>494

use encoding "shiftjis";
print length ('1234567890');

ってしたらちゃんと10って出たYO。
SJISで書いたけど。
499デフォルトの名無しさん:2006/08/08(火) 10:41:59
lengthが文字列長を返すような環境で、
文字列の桁揃えをして出力するいい方法は無いでしょうか。
500デフォルトの名無しさん:2006/08/08(火) 10:59:19
>>494=>>499
お前が死ねばいい。
501デフォルトの名無しさん:2006/08/08(火) 10:59:20
Jcodeでも使えば?
502デフォルトの名無しさん:2006/08/08(火) 11:00:06
>>501=499
自演うぜえ。
503デフォルトの名無しさん:2006/08/08(火) 11:03:58
ごめんね
かぁさん初めて自演したから
ごめんね
504デフォルトの名無しさん:2006/08/08(火) 11:08:12
みんななんで自演てわかるの?(´・ω・`)
505デフォルトの名無しさん:2006/08/08(火) 11:11:25
>>504
>>502は勢い余ってって感じだが、>>500の指摘なんてそれこそ見てればわかるな。
506デフォルトの名無しさん:2006/08/08(火) 11:17:17
>>505
自演って自分で問題提起して自分で返事するみたいなやつよね?
>>494>>499と同じ人なのは予想できるけど、>>501 以降はマジわかんない・・・。
何か見方があるのかと思ったけど洞察力なのか (´・ω・`)
507499:2006/08/08(火) 11:19:06
>>506
いや、別人なんだこれが。
答えなさそうだしもういいです。
508デフォルトの名無しさん:2006/08/08(火) 11:27:21
>>507
このフォローが自演の証。
509デフォルトの名無しさん:2006/08/08(火) 11:29:14
>>508
自演だってなんだっていいよ。それより頼むから馬鹿な質問に条件反射で答えないでくれ。
510デフォルトの名無しさん:2006/08/08(火) 11:35:27
print decode('euc-jp', sprintf("%-8s hoge\n", encode('euc-jp', 'ほげほげ')));

とか。

511デフォルトの名無しさん:2006/08/08(火) 12:52:08
つーかお前らformatって知ってるか?
512デフォルトの名無しさん:2006/08/08(火) 13:14:16
format のせいで余計な組み込み関数が増えたね。
あれこそモジュールでいいような。
513デフォルトの名無しさん:2006/08/08(火) 15:07:54
>>511
知ってるけど今回の文字幅の問題をなんとかしてくれるようなもの
だったっけ?
514494:2006/08/08(火) 18:24:30
うわ、ageて質問したら盛り上がりましたね。499とは別人です。
515494:2006/08/08(火) 18:25:50
おこたえいただき、ありがとうございました。
516デフォルトの名無しさん:2006/08/08(火) 20:46:17
皆さん、荒れてるのは仕事がないから?一つ就職にチャレンジしてみては?
ttp://www.r-agent.co.jp/event/EventKijiDetail/fmlist/1/id/2000252/cat/100.html?vos=nabladww0180000008
いや、決して宣伝ではないから。
517デフォルトの名無しさん:2006/08/08(火) 21:01:25
σ(^-^;)
518デフォルトの名無しさん:2006/08/08(火) 21:04:00
>>371で質問した者です。再び質問させてください。
FTP転送を行うスクリプト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
519デフォルトの名無しさん:2006/08/08(火) 21:12:16
evalブロックでdieを捕捉するなり何なり

eval { # try
 $SIG{ALARM} = sub {
  ...
  die "FTP TIMEOUT..."; # throw
 };
 alarm($timeout);
};
if ($@) {
 # catch(timeout)
}
520デフォルトの名無しさん:2006/08/08(火) 23:17:32
select使えばいいのに……
521518:2006/08/09(水) 06:43:50
>>519
なるほど
eval使えばできるんですね。

>>520
やっぱりselectで、できるんですか。。
522デフォルトの名無しさん: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>


みたいな書式から変数を割り出せればよいのですが・・・
523デフォルトの名無しさん:2006/08/09(水) 13:45:22
>>522
$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
524デフォルトの名無しさん:2006/08/09(水) 14:07:13
>>521
> やっぱりselectで、できるんですか。。

Net::FTPなんかはselect使いまくりだが。
525デフォルトの名無しさん: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);
526デフォルトの名無しさん:2006/08/09(水) 14:59:29
sub delete_repeated_element{
my @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;
}
527デフォルトの名無しさん:2006/08/09(水) 15:06:25
あ、分かりました。
@list_outがグローバルなんですね。
528デフォルトの名無しさん:2006/08/09(水) 15:28:52
めんどくさがらないでstrictぐらいつかえっツーの
529デフォルトの名無しさん:2006/08/09(水) 15:38:03
use Array::Uniq;
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);
my @uniq1 = uniq sort @list1;
print "uniq1: @uniq1\n";
my @uniq2 = uniq sort @list2;
print "uniq2: @uniq2\n";
530デフォルトの名無しさん:2006/08/09(水) 17:33:32
file1.datのような構成を、大項目毎に区切ろうとkugiri.plを作りました。
が、大項目の頭の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)
531デフォルトの名無しさん:2006/08/09(水) 17:44:46
>>530
> @lines=split(/\n[^\t]/, $readfile);
これでどう?
@lines=split(/\n(?!\t)/, $readfile);
532デフォルトの名無しさん:2006/08/09(水) 18:32:22
Perlで出力文字のフォント(大きさと書体)を変更したいのですが、
そのような演算子はありますか?
533デフォルトの名無しさん:2006/08/09(水) 18:35:51
>>532
演算子はないと思う。
534デフォルトの名無しさん:2006/08/09(水) 18:35:56
ない
535デフォルトの名無しさん:2006/08/09(水) 18:36:44
my $flags = 36; # 適当なbit flags 例えば32bitとする
my $bit = 2; # セットしたいbit位置(を1にした値)
my $flag = 1; # セットするflag状態 0 or 1

として、bitのset、resetを行うような処理を、
my $mask = ~$bit;
$flags &= $mask;
$flags |= $bit if $flag;
こう書いているのですが、もうちょっとなんとかなりませんかね。
536デフォルトの名無しさん:2006/08/09(水) 19:35:17
>>535
vec
537デフォルトの名無しさん:2006/08/09(水) 19:45:50
初めてperlで簡単なプログラムくんだけど

もうね・・疲れたよ
UTF-8フラグとか、UTF-8Nで保存とか
なんでperlは、いろいろ面倒なの?

でもねでもね、完成したときは今までで一番嬉しかったよ


538デフォルトの名無しさん:2006/08/09(水) 22:08:52
配列の代入について質問があります。

my(@a, @b) = (@x, @y);
とすると、
@a == (@x, @y)
@b == undef
となりますが、
@a == @x
@b == @y
とする簡単な方法はありますでしょうか?

サブルーチンへの引数として二つのリストを渡すときに
問題になると思いますので、簡単な方法があるのでは
ないかと思いますがいかがでしょうか?それともわざわざ
二つのリストの長さも引数として渡さなければならないの
でしょうか?
539デフォルトの名無しさん:2006/08/09(水) 22:14:10
>>538
サブルーチンへ渡すときはリファレンスを。
func( \@a, \@b );

> my(@a, @b) = (@x, @y);

の場合なら
@a = @x;
@b = @y;
と書くのが分かりやすいのでは。
540デフォルトの名無しさん:2006/08/09(水) 22:17:28
>>539

ありがとうございます。
はじめてのPerlには載っていなかったので分かりませんでした。
541デフォルトの名無しさん:2006/08/09(水) 23:22:10
>>530
@lines=split(/(?=^DATA)/m, $readfile);
542デフォルトの名無しさん:2006/08/10(木) 06:55:25
# perl -MCPAN -e 'install Template::Extract'
すると
***略***
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
543530:2006/08/10(木) 10:18:40
亀レスですいません。
>>531
(?!regexp)を知りませんでした。ありがとうございます。
>>541
大項目名はDATAで始まるとは限りませんのでこれは使えませんね。
因みに$/=''としている場合、mオプションは有効なのでしょうか?
544デフォルトの名無しさん:2006/08/10(木) 10:56:19
プログラミングの経験はまったくない。
パソコンに関してはPC-DOSやbashでバッチファイルを作るぐらいのことしかしたことがない。
そんな俺が切実な事情でperlを上級レベル、職業レベルにまで高めたい。
毎日2時間は学習時間が取れる。3ヶ月で可能だろうか?

この手の言語を取り扱う人が余裕や見栄で言う、「そんなもん1週間でできるぞ」みたいなレスは今回は辞退したい。
何を要にして学習すればいいのか、キーワードだけでも教えてくれんだろうか。

545デフォルトの名無しさん:2006/08/10(木) 11:06:43
つ[初めてのPerl]
つ[続・初めてのPerl]
つ[Perlクックブック]

つ[プログラム言語Perl]
つ[実用Perlプログラミング]

つperldoc
つCPAN
つGoogle

つ「ひたすら手を動かすべし」
546デフォルトの名無しさん:2006/08/10(木) 12:03:35
>>543
//m 有効だよ。っつーか試せばいいじゃん。
@lines = split /^(?!¥t)/m, $readfile ;
@lines = split /^(?!¥t)/, $readfile ;
547デフォルトの名無しさん:2006/08/10(木) 12:52:45
>>544

なにがしたいの?
1000時間単位で言語を使ってても、出来ることもあるし、出来ないこともいっぱいあるよ。
まあ、何をどうしたいのかによって答えは違う。

Perlで綺麗な記述(分かった記述)を書くのは最低でも1000時間必要かと思う。
548544:2006/08/10(木) 13:16:03
>>545
やっぱりオライリーのやつが定番か。サンクス

>>547
いわゆるwebプログラマとして扱うperlではなくて、UNIXサーバの各種オペレーションやバッチ処理、
ネットワーク機器のオートパイロットやログ解析に使いたい。
昔sed/awkというものがあったと思うけど、ああいうものを使ってやることをperlで、ってことかなぁ。
なのでCGIとかの技術には興味なしです。
549デフォルトの名無しさん:2006/08/10(木) 13:17:24
>>544
> 毎日2時間は学習時間が取れる。3ヶ月で可能だろうか?

もっとも大きなファクターは、あなたの才能。

> 何を要にして学習すればいいのか、キーワードだけでも教えてくれんだろうか。

わたしは、新しい言語をマスターする時は、何か適当な大きさのカタマリを
作ってみるが。

あとは、「あれもこれも出来るように」なることではなく、
「あれやこれをしたいと思った時にそのやりかたを調べる方法」を
掌握するのが目標だということを忘れずに。

550デフォルトの名無しさん:2006/08/10(木) 13:30:17
条件分岐と変数を使ったことあるなら、わりと早いんじゃないのかな。
perl4相当の勉強でもなんとかなりそうな話にも見えるし。

俺のperlはここからはじまった。
ttp://www.tohoho-web.com/wwwperl.htm
551デフォルトの名無しさん:2006/08/10(木) 13:51:45
どこまでが上級かという線引きがとても難しいけど
プログラム初心者が2時間×3ヶ月で辿り着けるのは
いいとこ中級レベルじゃないかな。
言語を敷居の低いPHP(CLI版)にするか勉強時間を
増やすかの妥協をしないと無理だと思う。
552デフォルトの名無しさん:2006/08/10(木) 13:52:15
>>544
3ヶ月なら、1日2時間じゃ足りないと思う。せめて3時間は欲しい。
553デフォルトの名無しさん:2006/08/10(木) 13:56:34
日に3時間取れても上級にはならないかも
554デフォルトの名無しさん:2006/08/10(木) 14:03:20
↑の用途だとOOPに固執する必要はないと思うから早く済むんじゃないかな
555デフォルトの名無しさん:2006/08/10(木) 14:09:06
>>548
その程度のことなら1週間で余裕。
むしろPerlよりもシステム管理についての知識のほうが重要。
556デフォルトの名無しさん:2006/08/10(木) 14:12:36
>>548 の用途でも、1週間では職業レベルに行き着かないだろ
1週間しかPerl勉強した事の無い奴に会社の鯖任せられないって。
557デフォルトの名無しさん:2006/08/10(木) 14:18:27
プログラミング言語の習得に必要な時間は本人の才能が最大要素で、
人によってかかる時間が100倍も違ったりします。
558デフォルトの名無しさん:2006/08/10(木) 15:00:27
>>548
perlよりもUNIXやネットワークの勉強が重要な気がする。
559デフォルトの名無しさん:2006/08/10(木) 15:10:21
才能なんか関係ないよ。要はやる気。
興味のないものを永遠とだらだらやっててもそりゃ100年たっても終わらない。

俺は4年間で10以上の言語覚えたけど、才能があるかって言ったらそうじゃないわけで。
プログラミング言語を作る、という目標から自然に起こった動機がそれを可能にしたんだと思う。
560544:2006/08/10(木) 15:27:45
>549
拝承。やっぱりそれで正解なのかな。
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
「必要に迫られている」状態なので気持ちで乗り切る。ガンバル
561デフォルトの名無しさん:2006/08/10(木) 15:30:17
pythonにしておけ。
562デフォルトの名無しさん:2006/08/10(木) 16:19:50
>>560
OOP要らないって言うけど、使いたいモジュールがOOPで書かれてたりすると
最低限は知っておかなきゃいけなくなる。
ネットワーク系のモジュール多いし。
全部自分でやろうとせずに、既にあるものについてはそれ使った方が良い。
まぁ、それでも相当数は書く事になるでしょう。

あとテストは慎重に。
場合によってはノンパスワードのsshやら、sudoやらを
使わなければいけなくなると思うので。

と、大手ISPでperlを腐る程書いた俺が言ってみる。
563デフォルトの名無しさん:2006/08/10(木) 20:16:28
>>561
彼の用途だとRubyでいいのでは
ネットワーク機器の処理ならexpectでいいとも思うけど
564デフォルトの名無しさん:2006/08/10(木) 20:31:47
Rubyだとマシンにインストールして回らなきゃいけなくなるんだよね。
お客さんのマシンがあると、インストールさせてもらえなかったり。
ということで消去法的にPerlになっちゃう。
Rubyで書いた事もあるけど、会社の人間が新しい言語が混じるのを喜ばない。
565デフォルトの名無しさん:2006/08/10(木) 21:22:20
>>564
私も同じ理由でperlを使ってたんだけど、
最近はCPANモジュール使ったりで結局インストールして回ってたりします。orz
566デフォルトの名無しさん:2006/08/10(木) 22:16:25
rubyよりはpythonのほうがインスコされてる可能性高い。
567デフォルトの名無しさん:2006/08/10(木) 22:22:32
↓を引数なしで実行すると"Use of uninitialized value in string eq at test.pl
line 3."とエラーが出るのですが、
use warningsを外さないでエラーを出さないようにする方法はないですか?

#!/usr/bin/perl
use warnings;
if($ARGV[0] eq 'test'){ print "TEST"; }
568デフォルトの名無しさん:2006/08/10(木) 22:36:35
if(defined $ARGV[0]){.....}
569567:2006/08/10(木) 23:00:05
>>568
d。先に↓の処理をすることで対応しました。
if(!defined($ARGV[0])){ $ARGV[0]=''; }
570デフォルトの名無しさん:2006/08/10(木) 23:32:30
むしろ$ARGV[0]を直接振り回さないで
$val = (defined $ARGV[0]) ? $ARGV[0] : "";
とかしたほうが無難な気がする・・・
571567:2006/08/10(木) 23:49:49
>>570
確かに$ARGV[0]を書き換えるのはよろしくない気がします。
変数は使わずに↓のようにしてみました。
if((defined($ARGV[0]) ? $ARGV[0] : '') eq 'test'){ print "TEST"; }
572デフォルトの名無しさん:2006/08/11(金) 00:00:33
横だけど、それやったら素直に
if( defined $ARGV[0] and $ARGV[0] eq 'test' ){....}
やん?
573567:2006/08/11(金) 00:11:38
>>572
そうですね。。。失礼しました。
574デフォルトの名無しさん:2006/08/12(土) 11:56:09
POE-0.36のChangesを見ると8/7にそれっぽい修正が入ってるような
575574:2006/08/12(土) 11:57:49
すんません>>574のカキコは>>315に対するレスです。
576デフォルトの名無しさん:2006/08/12(土) 12:03:18
Pugs触ってるけど、Perl6ってもう覚え直しだな。全然別言語。
577デフォルトの名無しさん:2006/08/12(土) 12:13:54
んなこたぁ、改めてここに書くまでもなく周知のことだよ。
578デフォルトの名無しさん:2006/08/14(月) 10:48:08
#! /usr/bin/perl

$tmp = "1234dfg";
$tmp =~ tr/123//;
print $tmp;

これの出力結果がなぜか 1234dfg のままなのですが
なぜ 4dfg にならないのでしょうか
perlのバージョンは v5.8.4 です。
579デフォルトの名無しさん:2006/08/14(月) 10:52:52

>>578

削除したければ
$tmp =~ tr/123//d;

詳しくは
> perldoc perlop
580デフォルトの名無しさん:2006/08/14(月) 21:44:40
>>554
皆の言う取り素養に寄るところが大きいとは俺も思うが努力で十分カバーできると思うよ。

エジソンの名言があるだろ?
「天才とは99%の努力と1%の才能である」

自分の才能の99倍の努力をすれば夢は叶う、夢を叶えられる人間こそ「天才」なのだと俺は解釈している。

ガンガレ!!
581デフォルトの名無しさん:2006/08/14(月) 22:22:30
>>580
ちがうちがう。エジソンちがう。
○ 「天才とは 1%のひらめきと99%の努力 である」
582デフォルトの名無しさん:2006/08/14(月) 22:24:15
インスピレーションをどう訳すかは諸説あって難しい。
583デフォルトの名無しさん:2006/08/14(月) 22:36:36
ひらめかない奴は、努力の使い道がないwww
584デフォルトの名無しさん:2006/08/14(月) 22:47:05
>>582
しかし "才能" のニュアンスは gift とか sense に近くて inspiration ではないよーな。

ひらめくけど努力しないやつ = 器用貧乏
ひらめかないけど努力はするやつ = サラリーマン
585デフォルトの名無しさん:2006/08/14(月) 23:19:56
>>567
>#!/usr/bin/perl
>use warnings;
>if($ARGV[0] eq 'test'){ print "TEST"; }

if("$ARGV[0]" eq 'test'){ print "TEST"; }
適当だけどこれでどう?
586デフォルトの名無しさん:2006/08/14(月) 23:24:05
>>584
器用貧乏ってそういう意味じゃないんじゃないの?
はっきりと意味を分かっているわけじゃないけど、漠然とした感じがすでに違うと思う。
587デフォルトの名無しさん:2006/08/15(火) 00:33:18
>>585
ははは
588デフォルトの名無しさん:2006/08/15(火) 00:37:42
>>580
スクリプトのコーディングを練習して上達するということにひらめきは全く必要ないかと。

「天才とは99%の努力と1%のひらめきである」の言葉の本質は
世の中で過去の経験則で成り立っている常識の概念に変化を与える道筋を見つけるのには
まずひらめきというあかりが必要で、その道筋を見つけてもそれが間違った道でないと
証明しインパクトを与えるには先駆者として沢山の様々な障壁を継続的に解決する
努力も求められるよということで、
>>544がやろうとしていることには全くの新規性がなく
既に沢山の先駆者が存在しドキュメントも非常に豊富。

なので544に求められる能力はひらめきではなく学習能力の高さと学習の量。
これは見たことも会ったこともなく客観的なデータもない状態で
544の書込みからは3ヶ月、1日2時間ずつと学習の量だけしか示されてないので
544にはできるかと評価しろといわれても難しいと思う(すくなくとも俺には無理)。

あと「perlを上級レベル」というのも544にとってなにをもって上級と感じるのか、
「職業レベル」というのはとりあえず動いているスクリプトで金銭を受け取っているから職業レベルとするのか
技術を売るからには責任を持って事にあたれ、常に情報を継続的に収集・検証できてる人を指すのかで非常にレベルの差がある。

どういうイメージしてるのかわかんないけど
職業レベルというからにはperlのコーディングを覚えて終わりではなくて
システムとネットワークの知識、情報収集力もそれなりに必要になるよ。

ぶっちゃけ、1日2時間しか取れないんだとよほど学習能力高くねぇと無理じゃね?
ちゃんと技術力のある会社にバイトとして入って徹夜もいとわず1日中仕事に就きながら
スパルタで仕込まれ、3ヶ月間逃げ出さなければいけるよ。
589デフォルトの名無しさん:2006/08/15(火) 00:51:06
>ちゃんと技術力のある会社にバイトとして入って徹夜もいとわず1日中仕事に就きながら
>スパルタで仕込まれ、3ヶ月間逃げ出さなければいけるよ。

それが難しいとか。
590デフォルトの名無しさん:2006/08/15(火) 01:16:35
>>588
/.から来た人?
591588:2006/08/15(火) 01:19:00
>>589
ごもっとも。
上記のことを実行するとなると
ちゃんとした会社を探だし、
雇用を獲得し、
絶望的なまでのレベルの差のプレッシャーにめげず、
毎日あたりまえのように長時間就業しても
体・心ともに健全でいられること
という結構難しい条件をクリアしないといけないです。

でも他のプログラミング言語経験がなく
システム/ネットワーク設計・構築・運用がない人間(544の書込みで勝手に推定)が
職業できちんと通用するスキルを短期間で獲得となると、
それなりの努力は必要だと思う。
592デフォルトの名無しさん:2006/08/15(火) 01:21:08
ちゃんとした会社がバイトにそんな事をさせるとはとても思えないけど
593588:2006/08/15(火) 01:26:53
>>592
あぁ、めんご、591のカキコでは「技術力が」が抜けてた。
588の方ではちゃんとはいってるッス。

>>590
2chも/.も/.Jも読むけどなんで?
./からこのスレにリンクされてるの?
594デフォルトの名無しさん:2006/08/15(火) 01:44:46
>>593 みんなが適当にレスしてるとこに>>588でいきなしマジレスの長文が来たから>>590がパニクッタんじゃね?
595588:2006/08/15(火) 01:51:39
>>594
そういうことッスか。
長文のマジレスすんませんでした。
失礼します。
596デフォルトの名無しさん:2006/08/15(火) 12:00:40
ウィルコムのPHSにメールを
送信すると文字化けするんです
jcodeで文字コードを変換してるんだけど↓
jcode'convert(メール本文, "jis");
なにか駄目なところがありますでしょうか?

携帯に送ると文字化けしないんです
SMTPサーバーのOSはFedora Core3です
597デフォルトの名無しさん:2006/08/15(火) 12:08:39
RFC2822
598デフォルトの名無しさん:2006/08/15(火) 12:14:26
PHSに送ったメールをPCに送信して文字化けしないのかは確認されましたでしょうか?
charsetは適切に設定していますか?

情報が足りなさすぎ!
とりあえず送信したのをヘッダー付でここに貼り付けろ!
質問はそれからだ。
599596:2006/08/15(火) 12:50:45
>>597
>>598
回答ありがとうございます。
情報不足すみませんでした。

おそらくsubjectにMIMEエンコードしていないことが
原因かなと気付きました。現在テストできない状況なんです・・・。
件名は文字化けしていないのですが、
最後の1文字が切れていましたので
怪しいなぁと。
charsetは未設定でした。
テストの結果はまたご報告します。
600デフォルトの名無しさん:2006/08/15(火) 13:04:40
なんでまたPHS…
601597:2006/08/15(火) 13:06:31
頼むからヘッダと本文と、正しいメッセージを送出してくれ。
携帯はキャリアのgatewayが変換しているからそれなりに融通が利くんだろう。
Willcomは、端末のMUAの出来がいまいち(対応範囲が狭い)。
それでも、ヘッダ不足とかの規格外メッセージが読めないのはあたりまえ。
送出側がまずは正しいフォーマットで作成すること。
602デフォルトの名無しさん:2006/08/15(火) 14:44:12
>>596のはperlの話題ではなくmailに関する質問でスレ違いだな。
603デフォルトの名無しさん:2006/08/15(火) 14:52:21
>>600
君が無知なだけかと。
604デフォルトの名無しさん:2006/08/15(火) 15:11:13
>>602
かれが一人で自問自答してるだけだからほっとけ。

>>603
はいはいおもしろいですね。
605603:2006/08/15(火) 15:17:54
質問者と勘違いしてる?


606デフォルトの名無しさん:2006/08/15(火) 16:06:55
エジソンの言いたかったことは、1%のひらめきもない凡人が努力をしてもムダということだよね。
努力じゃなくて、1%のひらめきを持っていることが大切と。
607デフォルトの名無しさん:2006/08/15(火) 16:08:29
>>605
/.君うざいよ。
608603:2006/08/15(火) 16:39:16
妄想の激しい子だね
609デフォルトの名無しさん:2006/08/15(火) 17:02:20 BE:212256364-BRZ(1002)
  /'           !   ━━┓┃┃
-‐'―ニ二二二二ニ>ヽ、    ┃   ━━━━━━━━
ァ   /,,ィ=-;;,,, , ,,_ ト-、 )    ┃               ┃┃┃
'   Y  ー==j 〈,,二,゙ !  )    。                  ┛
ゝ.  {、  - ,. ヾ "^ }  } ゚ 。
   )  ,. ‘-,,'   ≦ 三
ゞ, ∧ヾ  ゝ'゚       ≦ 三 ゚。 ゚
'=-/ ヽ゚ 。≧         三 ==-
/ |ヽ  \-ァ,          ≧=- 。
  ! \  イレ,、         >三  。゚ ・ ゚
  |   >≦`Vヾ        ヾ ≧
  〉 ,く 。゚ /。・イハ 、、     `ミ 。 ゚ 。 ・
610デフォルトの名無しさん:2006/08/15(火) 18:41:55
これは酷いな……。
611デフォルトの名無しさん:2006/08/15(火) 19:34:40
次スレからはPerlについてでもそうでなくてもいいアホな質問箱、でよろ
612デフォルトの名無しさん:2006/08/15(火) 20:15:44
perl でCGI.pmをつかってCGIを作っていますが、
tableの行をforeach文で増やしたい場合は、どのようにするのが適切でしょうか?
.
.

foreach (@abc){
$q->Tr(
$q->td($q->b("xxx")),
$q->td($q->b("yyy"))
)
}
.
.

のようなカタチでやってみると、うまく表示が出ません。
この描き方は間違っているのでしょうか?
ご教授お願いします。
613デフォルトの名無しさん:2006/08/15(火) 20:35:02
CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
(WEBプログラミング板 http://pc8.2ch.net/php/ )
614612:2006/08/15(火) 20:58:44
>>613
誘導ありがとうございます。
615デフォルトの名無しさん:2006/08/15(火) 21:19:14
616デフォルトの名無しさん:2006/08/15(火) 21:21:11
誘導されて向こうに行っただけだろうが…
617デフォルトの名無しさん:2006/08/15(火) 21:25:38
向こうでもマルチとレスをすれば完璧
618デフォルトの名無しさん:2006/08/16(水) 01:45:43
もーお手上げなんですが、
ひとつも\(バックスラッシュ)が含まれていないものにのみマッチする
正規表現ってありますか?

$test = "\\engo\\";

#\のマッチ回数が0回のもの
if ($test =~ /[\\]{0}/){
print "matched\n";
}
これだと
$test = "engo\\";
にしてもマッチします。
$test !~ /[^\\]/;
とするのがよさそうですが、
それ以外でする方法があればぜひ・・
619デフォルトの名無しさん:2006/08/16(水) 01:56:37
/^[^\\]*$/
620デフォルトの名無しさん:2006/08/16(水) 01:57:56
$test !~ /\\/; で十分では。
621デフォルトの名無しさん:2006/08/16(水) 02:06:55
>>619
なるほど!ありがとうございます!!

>>620
そうしたいところなんですが、
どうしても!~が使えないところでして・・・
助かりました。
ありがとうございますー
622デフォルトの名無しさん:2006/08/16(水) 11:00:47
pugsはhaskellによるperl6の実装とのことですが、
parrot上で走るhaskellコンパイラは登場するのでしょうか。
623デフォルトの名無しさん:2006/08/16(水) 11:46:06
   |                     |_
  ̄|  / ̄\  ___     |
   |/  .___|         ___|    l .∧ /
 /|   \ノ\        \ノ\   ∨ ∨
624デフォルトの名無しさん:2006/08/16(水) 15:32:26
99%の努力と1%のひらめき ってのは本人に聞いたときは
何かひらめいたところで、普段から努力してねーやつには
実現は不可能だぜざまーみろ愚民め という意味だと言ってた。
625デフォルトの名無しさん:2006/08/16(水) 17:14:15
あの世からのカキコですか?
626デフォルトの名無しさん:2006/08/16(水) 18:57:22
2chとは99%の駄レスと1%のひろゆきである
627デフォルトの名無しさん:2006/08/16(水) 19:07:20
上の方で、/.から来たとか./からどうたら言ってますが、
いくら考えても分かりません。解答よろ。
628デフォルトの名無しさん:2006/08/16(水) 19:14:43
txt読み込み → 処理 → 次のtxt読み込み → 処理 → 次の次・・・

このような流れを一回の実行(一つの処理)としてやりたいのですが、可能でしょうか?
629デフォルトの名無しさん:2006/08/16(水) 19:15:47
/. は、スラッシュドット(slash dot) と読みます。
ニュース・雑談サイトの名前です。
See also
ttp://slashdot.jp/
630デフォルトの名無しさん:2006/08/16(水) 19:20:06
>>628
可能です
631デフォルトの名無しさん:2006/08/16(水) 19:23:26
>>630
可能ですか!
よろしければやり方を教えてもらえないでしょうか?
632デフォルトの名無しさん:2006/08/16(水) 19:41:49
>>628

perl -e 'undef $/; while (<>) { /(?#好きな処理)/ }' *.txt
633631:2006/08/16(水) 20:33:18
自分でできました。
634627:2006/08/16(水) 21:22:16
>>629ありがとござますた。常識なくてすませんm--m
635デフォルトの名無しさん:2006/08/16(水) 22:39:03
>>622
http://www.parrotcode.org/languages/
今のところないみたいだけど、そのうち出るかもしれないですね。
つーか.NETは遅気味だけど、parrotはまともなスピードで動くのか不安だ・・・
636デフォルトの名無しさん:2006/08/17(木) 03:17:40
リャマ本読み終わって続読み途中です
もっと「練習問題」を解きたいのですが、どこかに問題ないでしょうか?
637デフォルトの名無しさん:2006/08/17(木) 03:37:00
>>636
っ[現実世界]
638デフォルトの名無しさん:2006/08/17(木) 08:32:20
>>637
一生かかっても解けない奴が多い問題が練習問題かぁ

貴方は神ですか?
639デフォルトの名無しさん:2006/08/17(木) 08:36:52
おまんこサンチェスすぽぽぽぽーん!
640デフォルトの名無しさん:2006/08/17(木) 10:48:57
サンチェと井沢の再会シーンは、グッと来た。
ちょっと涙ぐんでしまった。
641デフォルトの名無しさん:2006/08/17(木) 11:03:22
>635

Common Lisp と Scheme は実装予定なんですね。
642デフォルトの名無しさん:2006/08/17(木) 13:33:25
>>636
練習問題をさがすよりは・・・
CPANモジュールのインストールと使用方法に習熟するのを薦める。
今だったらCGI::ApplicationとCatalyst関係が
いいかな。
mod_perlなどもおすすめ
ただし、英語がわからないとつらいかも
643デフォルトの名無しさん:2006/08/17(木) 13:43:02
>>642
今Catalystが熱い!ってどこかで聞いたので頑張ってインストールしてみたものの
そこからどうしていいのやら・・・情報が英語ばかりですね
とりあえず基本的なCPANモジュールから使っていこうかと思います。
644デフォルトの名無しさん:2006/08/17(木) 14:36:50
おー
がんばれー
645デフォルトの名無しさん:2006/08/17(木) 22:29:58
catalyst思いっきり上級者向けだわな
今まで上から順番に実行されてくようなスクリプトしか見てこなかった俺は
これがほんとにperlかと疑った
646デフォルトの名無しさん:2006/08/17(木) 23:44:55
>>645
> catalyst思いっきり上級者向けだわな

別に。
647デフォルトの名無しさん:2006/08/18(金) 11:35:44
>>643
Web+DB PRESS vol. 32 の Recent Perl World で Catalyst の入門特集組んでましたよ。
執筆は確かハテナオヤ氏。
648デフォルトの名無しさん:2006/08/19(土) 00:56:35
( ゚д゚) < Catalystが上級者向け?

(つд⊂)ゴシゴシ

(;゚д゚)

(つд⊂)ゴシゴシ
  _, ._
(;゚ Д゚) …?!

Catalystを作った奴は上級だけど使うのはそんなに難しくねぇだろ。
649デフォルトの名無しさん:2006/08/19(土) 02:04:54
その Catalyst っての使うと何が楽になるのー?
650デフォルトの名無しさん:2006/08/19(土) 03:07:48
>>649 WEB検索使って調べることも出来ない奴はROMってろ。目障りなんだよボケ。
651デフォルトの名無しさん:2006/08/19(土) 03:33:30
次の質問どうぞ。
652デフォルトの名無しさん:2006/08/19(土) 07:08:49
rename($oldname,$newname);
$newnameのファイルが既に存在していると、
勝手に上書きされてしまうんですが、
連番などを付けて上書きしないようにすることはできますか?
653デフォルトの名無しさん:2006/08/19(土) 07:56:20
$ren_value = 0;

for (@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);
}

なんだかスマートではない気がしますが自己解決しました、
拡張子とファイル名を分けていなかったのでそちらが問題となりましたが
こちらはすぐ解決しそうです
654デフォルトの名無しさん:2006/08/19(土) 15:38:02
$new =~s/\[(\d+)\]$/"[@{[$1+1]}]"/e or $new .= "[1]" while -f $new;
655デフォルトの名無しさん:2006/08/19(土) 16:49:52
PerlでパスワードつきZIPを作りたいんだけど、どうすれば良い?
656655:2006/08/19(土) 16:52:26
Windowsです。すいません。
657デフォルトの名無しさん:2006/08/19(土) 17:49:50
>>655
甚だしく意味不明瞭な質問だが……

段階1: CPANでパスワードつきZIPを作るモジュールを探してそれを使う
段階2: CPANになかったら、ZIPの仕様を調べてパスワードつきZIPを作るプログラムを書く

658あやか:2006/08/20(日) 02:29:14
#both
$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;
}
659デフォルトの名無しさん:2006/08/20(日) 02:55:25
$1
の部分は正規表現ではなく、特殊変数のなので、
上の2つは失敗します。
特殊変数を含まない普通の正規表現なら変数に格納しようが
何の問題も無いです。
660あやか:2006/08/20(日) 03:10:19
>>659
特殊変数を使う場合は直接記述するしかありませんかね?
661デフォルトの名無しさん:2006/08/20(日) 03:40:14
evalとか?
662あやか:2006/08/20(日) 04:42:22
>>661
$name = "[picture415]hogex.jpg";
$v1 = '\[picture(.+)\]';
$v2 = '(picture$1\)';
$exec = '$name'."=~ s/$v1/$v2/g;";
eval $exec;
print "$name\n";

どうやらできたみたいです、どうも\(^o^)/
663ken:2006/08/20(日) 21:53:01
こんばんはperlの事でおききしたいんですが

ほかのファイルの文字をとってきたいんですがどうしたらいいでしょうか?

AAA
BBB="CCC"

このtxtファイルからCCCを取りたいです
文章下手ですみません
よろしくおねがいします
664デフォルトの名無しさん:2006/08/20(日) 22:00:31
open fh,$file;
my@a=<fh>;
close fh;
my$b=substr($a[1],5,3);
665デフォルトの名無しさん:2006/08/20(日) 22:51:49
>>663
my %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";

# 初心者の学習には丁度いいかも。車輪は既にあるけれど。
# でも質問はもうちょっとやりたいことを整理して、伝わるように書いてね。^^;
666ken:2006/08/21(月) 00:16:36
>>665さん>>664さん回答ありあがとうございます
とてもよくわかりました
助かりました、心から感謝します
667デフォルトの名無しさん:2006/08/21(月) 00:55:10
埋め込み(というべきか組み込みというべきか)について質問。
perlembedのMaintaining multiple interpreter instancesの最初のほうの例に
従いつつ、ExtUtil::Embedでperlxsi.c作ってperl_parseにxs_initを渡したんだけど、
二回目のperl_parseで「ハンドルされていない例外が発生しました」ってなってしまう。
なんでだろうか?
668デフォルトの名無しさん:2006/08/21(月) 01:52:28
>>665
こういう要求されても無い汎用性をゴンゴン詰め込んだコード見ると
アホだなぁって思う。
目的と方法のバランスがめちゃくちゃ。

>>667
USENET行け
669デフォルトの名無しさん:2006/08/21(月) 02:12:05
別に 665 くらいのコード書いてもいいんじゃないか。
言うほど凝ったコードでもないだろう。
670665:2006/08/21(月) 02:32:17
>>669
そうだそうだ。むしろもっと書かせろ。w
671デフォルトの名無しさん:2006/08/21(月) 03:32:20
663のやろうとしてる事をちょっと考えてみれば、
BBB="CCC"なんていうデータ構造がそもそも間違ってる事に容易に気付くわけで、
それをスクリプト側で過剰にフォローして、メンテナンス制の低い
コードを量産するような行為は愚かだ、ということ。
672665:2006/08/21(月) 03:47:30
>>671
なるほど、もっともだ。

ただし僕は 663.txt (仮名) を外部リソースだと判断したので as is 扱いにしたのね。
「自前のデータファイルの解析方法を教えてください」はなんぼなんでもないだろう、と。(w
…ここの質問者を甘く見てたってことなのかそうなのか。
673デフォルトの名無しさん:2006/08/21(月) 09:07:16
いわゆるWindowsアプリでよく使われるiniファイル形式だよね?
これって絶対誰か車輪作ってるよね?
674デフォルトの名無しさん:2006/08/21(月) 09:21:15
車輪はいくらでもあるんだろうけど、正式なフォーマットはWindowsを
解析した人しかわかってないからフォーマットにいろんな方言があるよね。
このフォーマット自体はAPIを叩くだけで簡単に使えるけど。
675デフォルトの名無しさん:2006/08/21(月) 09:25:07
>>653
同時に2つ動かすと重なる危険があるよ。そういう使い方は絶対しないのなら
そのぐらいの手抜きでもいいけどね。
676デフォルトの名無しさん:2006/08/21(月) 13:06:30
appconfigとconfig::inifile(どっちもうろ覚え)
677デフォルトの名無しさん:2006/08/21(月) 17:01:40
みなさんはプログラムをperlで作る時、何を使っていますか
VCならVisualC++とかJavaならEclipseなど定番のソフトがありますが、
perlならこれ、といったソフトは聞きません
とりあえず今はサクラエディタを使ってます
みなさんもテキストエディタを使っているのでしょうか

というのも、Catalystを勉強しようと思った時に、コマンドラインで
開発しなきゃいけないような感じがしたので、Perlってそういうもの
なのかなあと疑問に思ったんです
678デフォルトの名無しさん:2006/08/21(月) 17:06:52
そういうもの。
679デフォルトの名無しさん:2006/08/21(月) 17:40:27
EclipseでPerl開発するパターンもあるのでは・・

1.EasyEclipse for LAMP
2.Eclipse ver 3.1 + EPIC[Perlプラグイン] + PadWalker[Win用モジュール]
3.Aptana + EPIC[Perlプラグイン] + PadWalker[Win用モジュール]
680デフォルトの名無しさん:2006/08/21(月) 18:17:05
自分、素人で、勉強のためにこのスレをのぞいているんだけど、

コーディング:PSPad
デバッグ:PerlIDE

みんな何を使っているんだろう。
681デフォルトの名無しさん:2006/08/21(月) 18:21:56
viとprintに決まってる
682デフォルトの名無しさん:2006/08/21(月) 18:30:23
僕は JVim と愛用のコマンド一式。典型的なツールボックスアプローチだけど、ぼちぼち時代遅れかもなあ。
cperl-mode on Emacs って人も結構見かける。

ActiveState の売り物で PDK ってのがあるけど、誰か愛用してる人いたらコメント欲しいな。
見た目は悪くなさそうな感じで興味はあるし。貧乏だから自分では使わないだろうけど。(涙

>>681
cat と ed じゃなくて? ;-)
683デフォルトの名無しさん:2006/08/21(月) 19:01:33
Emacs

Perlのプログラミングにemacsを使うというより、
いつもEmacsの上でゴロゴロしているのでPerlも
Emacsという感じ。
684デフォルトの名無しさん:2006/08/21(月) 19:16:00
おれvimだね!
685デフォルトの名無しさん:2006/08/21(月) 19:24:48
複雑怪奇なGUIアプリ組むわけでもねぇのにIDEってそんなに必要なの?
emacsでコーディングして,
perl -cwでシンタックスチェックして,
perl -dでデバックで十分じゃね?
なにをすればそんなにperlのコーディングにIDEが必要なの?
686デフォルトの名無しさん:2006/08/21(月) 19:30:24
Subversion連携みたいなチーム開発向け機能とか? ごめん、IDE使った事ないけど...
687デフォルトの名無しさん:2006/08/21(月) 19:43:03
>>686
それも別にIDEじゃなきゃできんことでねぇし。。。
普通にコマンドラインからで十分じゃね?
むしろ細かいオプションとかつけたいからおれはそっちでないと困ること多いし。

単純にWindowsユーザが多いから
GUIで見た目の先入観でとっつきやすそうというのと
英語が読めない奴がドキュメント読めなくて
日本語書籍でHowTo情報が扱われているからがそっちに流れてくってことでしょ。
ぶっちゃけJavaもPerlもコーディングは文字コードと改行コードが変更できる
テキストエディタであればemacsでなくても十分。
688デフォルトの名無しさん:2006/08/21(月) 19:47:35
requireについての質問です。


----hoge/test.pl
require "hoge.pl";

----hoge/hoge.pl
print "HelloWorld";

とあったときに、
hogeディレクトリではなく、下のディレクトリから、
> perl hoge/test.pl
とすると、
Can't locateと言われてしまいます。
これは仕様でしょうか・・・。

689デフォルトの名無しさん:2006/08/21(月) 19:52:00
仕様です。
@INCに、自動でhogeディレクトリは入りません。
690デフォルトの名無しさん:2006/08/21(月) 19:52:18
>>685,687
そう力むなよ。
選択可能な別のやり方が常にあるのは幸せなことだ。
There's more than one way to do it. だろ? ;-)

実際業務命令でもない限り、不便な物を我慢して使い続けるような堪え性のある Perl 使いを僕は知らんので、みんなそれぞれの用途で便利に使ってんでしょ。
もし本当に具体例に興味があるなら使ってる人間を問い詰めてくれ。w
691デフォルトの名無しさん:2006/08/21(月) 19:58:29
>>688
use lib とその関連情報を当たりましょう。
書籍なら「続・初めてのPerl」(Learning Perl Objects, References, and Modules) を読めばその辺りの理解が深まるでしょう。
692デフォルトの名無しさん:2006/08/21(月) 20:03:59
プログラムの長さによってエディタ変えてる。

短いものはワンライナー。
1, 2ページならvi。
それ以上はemacs。
693デフォルトの名無しさん:2006/08/21(月) 20:56:52
FYI.

[ANNOUNCE] Emacs modules for Perl programming
http://www.uni-giessen.de/faq/archiv/perl-faq.emacs-lisp-modules/msg00000.html

TinyPerlって使っている人いるけ?

694デフォルトの名無しさん:2006/08/21(月) 21:42:02
使ってないなぁ。
個人的には Devel::PerlySense が気になるんだが、もう止まってるんだな。
695デフォルトの名無しさん:2006/08/21(月) 22:45:49
>>689 >>691
サンクソです。
cd してから、perlに渡すことにします
696デフォルトの名無しさん:2006/08/22(火) 17:39:17
SQL::AbstractのORDER BYの生成方法についての質問です。
ttp://perldoc.jp/docs/modules/SQL-Abstract-1.17/Abstract.podに書いてある
selectのSQLを生成する式の\@orderの記し方がわかりません。(記載されていません。)
SQL::Abstractを使用して select * from hoge order by foo desc というSQLを
生成するには\@orderをどのような内容にすればよいのでしょうか。
697デフォルトの名無しさん: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";
698696:2006/08/22(火) 18:18:13
>>697
迅速に解答していただきありがとうございました。
助かりました。
本当にありがとう。
699デフォルトの名無しさん:2006/08/22(火) 19:17:04
use strict;
↑こいつは何をしているんですか?
myやらlocalとかいうのに関係しているのはわかったのですが
未だに何だかわかりません
700デフォルトの名無しさん:2006/08/22(火) 19:29:37 BE:353760285-BRZ(1002)
                ,-,,,,、                    ,-,,,,_
       ,,,,,,,、    ,,,,,,_゙'-,. "'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 丿        `゙゙゙゙゛
                                              ゙'"`
701デフォルトの名無しさん:2006/08/22(火) 19:45:38
>>700
「ググる」を使うとGoogleの中の人に怒られちゃいますよ><
702デフォルトの名無しさん:2006/08/22(火) 21:02:52
CNET の記事のせいで勘違いしてる奴らが多いな。
Google を使う分には「ググる」で問題なし。

ttp://zarutoro.cocolog-nifty.com/blog/2006/08/google_8490.html
703デフォルトの名無しさん:2006/08/22(火) 21:19:06
>>700は明らかにGoogleがよしとしない「検索サイトで調べろ」という“一般動詞的な用法”で
「ググれ」と書いてると思うが。それにしても、一般動詞化なんて最高の褒め言葉なのになぁ。

ってスレ違いごめん...
704デフォルトの名無しさん:2006/08/22(火) 21:34:25
wakatono居る?
705デフォルトの名無しさん:2006/08/22(火) 21:46:07
ウォークマンの商標の例を見たら、最高の褒め言葉じゃ済まんだろう。
褒め言葉じゃ金にならんし。
706デフォルトの名無しさん:2006/08/22(火) 22:09:50
母ちゃんにかかれば、プレステだろうがゲームボーイだろうが全て「ファミコン」か「ピコピコ」ですよ!
707デフォルトの名無しさん:2006/08/22(火) 22:15:26
いいなぁ。全部ピコピコ。
親クラスって言うんだろうか。
708デフォルトの名無しさん:2006/08/22(火) 22:15:47
>>699
strict プラグマは犯しやすい間違いと、失敗を誘発しやすいいくつかの手段を制限します。
実際には、「完全修飾されないパッケージ変数と未宣言の変数」、「シンボリックリファレンス」、「bareword」 の 3 種を禁じます。my に関係してくるのは最初のやつですね。

このプラグマは、開発の序盤から使うという条件付きながら、プログラミングの効率を高めてくれます。
ありがちな間違いの可能性の多くをコンパイル時に教えてくれるからです。これによって不可解な実行時エラーや、厄介なセマンティクス上の不具合に悩まされる回数が減ります。

お手元の環境に Perl があれば perldoc strict に目を通しましょう。Web でもたくさんの解説が見つかると思います。
また、せっかく興味を持たれたなら warnings プラグマについても調べてみてください。
709デフォルトの名無しさん:2006/08/22(火) 22:17:20
味の素、宅急便、マジックテープ・・・

ついつい他と区別せずにつかってしまうな。
710デフォルトの名無しさん:2006/08/23(水) 05:15:51
>>699
おまえはstrictという英単語の意味も知らないのか?
知らなくても辞書を使って調べるという発想/能力もないのか?
そもそもperlの事なのにperlについてくるドキュメントをなぜ読まない?
perldoc使えないのか?
コマンドラインからperldoc -hさえ出来ない低脳か?
711デフォルトの名無しさん:2006/08/23(水) 08:51:39
use strictは正しい英語じゃないよね、
712デフォルトの名無しさん:2006/08/23(水) 09:04:24
何言ってんだお前
713デフォルトの名無しさん:2006/08/23(水) 09:12:35
>>711
オマエは日本語もできねぇのか!?
710は「use strict」という英語を調べろと書いてねぇぞ
「strict」という英単語を調べろっていってんだろ。
714デフォルトの名無しさん:2006/08/23(水) 09:14:17
perlの文法が英文法だと勘違いしてる馬鹿がこのスレにいるのに絶望した。
>>711 おまえはもう書き込むな。一生ROMってろ
715デフォルトの名無しさん:2006/08/23(水) 12:03:44
>>703
あれってCNETの日本語の記事がアンポンタンな気がするが、
英語だと「グーグル」も「ググれ!」も"google" "google!" と同じであり、
"to google someone!" みたいな使われ方をするのがダメなのであって、
日本語みたいに動詞、命令形が商標とかぶらない場合は問題ないと思うのだが。
716デフォルトの名無しさん:2006/08/23(水) 12:28:01
ってか英語でも google って動詞になってるのかw すごいなー日本だけじゃなかったんだなー
717デフォルトの名無しさん:2006/08/23(水) 12:52:14
>>715
http://guguru.jp
guguru.jpをwhoisしてみ。多分「ググる」も問題視してるのでは
718デフォルトの名無しさん:2006/08/23(水) 15:53:17
ま、グーグルの意向なんてどうだっていいけどな。
719デフォルトの名無しさん:2006/08/23(水) 19:57:53
どうでもいいんだったらくだらねぇ負け犬の遠吠えレスすんな
720デフォルトの名無しさん:2006/08/24(木) 00:41:29
perlの最新版ってどこでダウンロードすれば良いの?
>>1
http://www.perl.org/get.html
からダウンロード出来ないのだが
721デフォルトの名無しさん:2006/08/24(木) 01:12:07
質問です。
通常は、readdirで取得できるファイル名のリストの順番はソートされているのでしょうか?

CentOS4.2 Perl 5.8.5ではバラバラのリストが返ってきますが
coLinuxに入れた CentOS4.3 Perl 5.8.5ではソートされたものが返ってきます。
722デフォルトの名無しさん:2006/08/24(木) 01:45:30
>>721
お試しの通り、まるで保証されません。
特定の環境下での結果は当てになさらないほうが良いでしょう。
723デフォルトの名無しさん:2006/08/24(木) 02:29:43
use strict;は
use strict "vars";
use strict "refs";
use strict "subs";
の略。うえの書き方ならある程度意味の察しがつくだろうね。(英語がわかれば
perlはたいてい可能ならば英文法に似せるように努力してるよ。
それがlarry wallとかperlコミュニティの人たちの趣味だから。(最近はto dwim itという動詞ができてるw
括弧がほとんどの場合省略可能なのとかも、英語"みたい"に書ける
ことがいいことだって言う考え方の表れだと思うし、・・・
その辺のニュアンスが理解できない、あるいは賛成できない人がperlコードは見るだけでキモイ
といってるんだと思うけど・・・
まあ、そういう人のためにはpythonという選択肢があるわけで、世の中ちょうどよくできてる・・・w
つーか>>712>>713>>714は市ね
724721:2006/08/24(木) 02:42:50
>>772
回答ありがとうございました
725721:2006/08/24(木) 02:43:23
ありゃあ>>722でした
ありがとうございました
726デフォルトの名無しさん:2006/08/24(木) 05:26:12
>>723
>>719もじゃない?
たまにこういう面白いのが出てくるからこのスレは好きだ。
…昔はPerlに関する興味深いやりとりがあって好きだったんだけどな。
727デフォルトの名無しさん:2006/08/24(木) 06:00:50
負け犬の遠吠えレスした奴が恥の上塗りか。
醜いんだよ。
ここはperlのスレでgoogleについて語るスレではない。


>…昔はPerlに関する興味深いやりとりがあって好きだったんだけどな。

googleのブランディングの話がperlに関する興味深い話なのか?
雑談なら他所でやれ。
728デフォルトの名無しさん:2006/08/24(木) 06:14:32
なんだかカリカリしてる人がいますね
729デフォルトの名無しさん:2006/08/24(木) 06:32:24
>>710はカルシウム取れ。
730デフォルトの名無しさん:2006/08/24(木) 06:33:40
>>727
英語がどうとか言って日本語がわからなかったのか、きみはw
731デフォルトの名無しさん:2006/08/24(木) 06:41:16
おまいらキチガイ相手にするなよ。
732デフォルトの名無しさん:2006/08/24(木) 06:45:52
IDが表示されないからって
今の時間帯に短時間にレスしてると自作自演がバレバレですよw
自分の気に入らないレスがついたからって710とかに粘着しても貴方の低脳さはかわりませんよ。
関係ない話でperlスレを荒らすくらいなら雑談スレに言ってください。
733デフォルトの名無しさん:2006/08/24(木) 06:49:21
>>732
自分が自演してるからって。
734デフォルトの名無しさん:2006/08/24(木) 06:50:59
>>726,728-731,733自演乙www
735デフォルトの名無しさん:2006/08/24(木) 06:53:48
>>734
お前も十分粘着だ。
736デフォルトの名無しさん:2006/08/24(木) 06:54:38
>>734
IDが表示されないからって
今の時間帯に短時間にレスしてると自作自演がバレバレですよw
737デフォルトの名無しさん:2006/08/24(木) 07:06:47
>>732
おまえこそどこか言ってください

言ってください
738デフォルトの名無しさん:2006/08/24(木) 07:12:34
Perlとperlの区別もつかないようなやつ相手にするなよとまた荒れそうなことを言ってみるか。。。
739デフォルトの名無しさん:2006/08/24(木) 07:32:37

PERLじゃなきゃなんでもいいじゃないか。
ちなみにpearlはまた別の言語。
740732:2006/08/24(木) 07:33:54
どこにも言かねーよ!
741デフォルトの名無しさん:2006/08/24(木) 08:22:50
騙り乙。
742デフォルトの名無しさん:2006/08/24(木) 08:35:58
皆何してるの(;´Д`)
743732:2006/08/24(木) 09:09:29
>>726
読んでて気持ち悪いから自作自演を忠告したら
今度は俺になりすましたりしての粘着かよ
744デフォルトの名無しさん:2006/08/24(木) 09:27:52
おまえら暇人だな
745デフォルトの名無しさん:2006/08/24(木) 09:28:58
>>726の北朝鮮のコラ写真並みの自作自演・成りすまし技術に仰天
746デフォルトの名無しさん:2006/08/24(木) 09:35:02
>>743=>>745
いやさすがにそれはwww
747デフォルトの名無しさん:2006/08/24(木) 09:38:00
劣勢になったら自分の書き込みを人のせいって('A`)...
748732:2006/08/24(木) 09:41:10
正直すまんかった
749デフォルトの名無しさん:2006/08/24(木) 09:57:27
次からは気をつけような。
750デフォルトの名無しさん:2006/08/24(木) 09:59:48
>>749
はあ?
751デフォルトの名無しさん: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-ー ''"´ ̄`ヽ   /   }
  ||. {三二    | │          /   /
  ||.  ヾ=--一'`ーゝ       _,. く   ノ|
752デフォルトの名無しさん:2006/08/24(木) 10:27:38
お前いつ寝てるんだ?
753デフォルトの名無しさん:2006/08/24(木) 10:28:58
>>751
反論できなくなったらAA貼り付けってwww典型的な厨房行為だな。
754726:2006/08/24(木) 10:30:50
ニートだから2chかきこのあいまにネてます
755デフォルトの名無しさん:2006/08/24(木) 10:30:50 BE:397980959-BRZ(1002)
うはwwwwwwwwwwwwwwwwwwwwww
おkwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwっうぇwwwwwwwwwwwwwwwwっうぇええwwwwwwwwwwwwww
756デフォルトの名無しさん:2006/08/24(木) 10:33:12
>>754=>>727
騙り乙。
つーかひとの書き込み曲解しないでくれ。
757デフォルトの名無しさん:2006/08/24(木) 10:36:50
喧嘩・口論はスレッドの内容に反します。
喧嘩・口論板でやりましょう。
758デフォルトの名無しさん:2006/08/24(木) 10:37:21
>>726=>>728-731=>>733-735=>>737=>>756
騙り乙。
つーかひとの書き込み曲解しないでくれ。
759デフォルトの名無しさん:2006/08/24(木) 10:37:30
自分の自演に気付いてるの世の中にせいぜい一人だけ、って思えたら楽しいんだろうなあ
>>710,>>712->>714,>>717,>>719,>>727,>>732,>>734...
760726:2006/08/24(木) 10:38:27
>>757
ぐみーん
761デフォルトの名無しさん:2006/08/24(木) 10:39:01
>>758
734は間違いじゃないの?
762デフォルトの名無しさん:2006/08/24(木) 10:39:39
自分の自演に気付いてるの世の中にせいぜい一人だけ、って思えたら楽しいんだろうなあ
>>726,>>728-731,>>733-735,>>737,>>756,>>759...
763732:2006/08/24(木) 10:39:43
>>757
ごめんね。
764726:2006/08/24(木) 10:40:49
なりすましやめろよ
765726:2006/08/24(木) 10:41:40
俺が本物だって
766デフォルトの名無しさん:2006/08/24(木) 10:43:15
726騙ってるのは多分全部>>719だな、
粘着してるのがどっちかバレる書きこみも出たし、そろそろ終りにしてはどうだ?
767デフォルトの名無しさん:2006/08/24(木) 10:45:24
喧嘩・口論板でやりなさいよ!!!(`へ´)
768726(本物)とか:2006/08/24(木) 10:45:52
>>766
誤解されてるみたいだから言っておく。
>粘着してるのがどっちか
っておれ一人で煽ってたわけじゃないです。
769デフォルトの名無しさん:2006/08/24(木) 10:46:40
>>726 喧嘩・口論板へ行け ヽ(`Д´)ノ
770ひみつの検疫さん:2024/07/06(土) 10:05:54 ID:MarkedRes
汚染を除去しました。
771デフォルトの名無しさん:2006/08/24(木) 10:47:58
>>769
これでやめるけど、最後のほうはほとんど煽ってなかったことを言い訳しとく。
じゃ。
772デフォルトの名無しさん:2006/08/24(木) 10:48:08
>>768

煽ってたなら同罪です
喧嘩・口論板に行ってください
773デフォルトの名無しさん:2006/08/24(木) 10:49:16
>>772
これが>>719か。確かに一目で分かる罠w
774デフォルトの名無しさん:2006/08/24(木) 10:57:23
┐(´ー`)┌
775デフォルトの名無しさん:2006/08/24(木) 11:14:34
>>773
おなじこと言ってるほかの奴もそうじゃない?
しかし何で喧嘩口論板なんだwww
776デフォルトの名無しさん:2006/08/24(木) 11:21:42
>>766
>>756, >>758, >>759, >>762
これか。ワロタやりすぎだな。
777デフォルトの名無しさん:2006/08/24(木) 11:28:12 BE:716364599-BRZ(1002)
"  ,, --''"ニ_―- _  ''-,,_    ゞ    "-
  / ,,-",-'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テ':〃  ( ヽ
778デフォルトの名無しさん:2006/08/24(木) 11:35:29
>>773 >>775 >>776 口論の元が言い訳してやめたんだから荒らしの燃料投下するのやめなよぉ
779デフォルトの名無しさん:2006/08/24(木) 11:50:05
おまえらホント暇人だな。仕事しろよ
780デフォルトの名無しさん:2006/08/24(木) 14:13:04
>>779 やだ
781デフォルトの名無しさん:2006/08/24(木) 15:49:37
このスレ、avast!さんが反応するようになった。
782デフォルトの名無しさん:2006/08/24(木) 18:15:55
avast使ってるけど反応しないな
783デフォルトの名無しさん:2006/08/24(木) 20:38:16
このやり取りを Perlでコード化できるかな?
whileと連想配列でシンプルに行けそうな気も。
784デフォルトの名無しさん:2006/08/24(木) 21:30:45
YAPC::Asia 2006 Tokyo
Perl Best Practice / Damian Conway
効率的で見やすくメンテナンスしやすいコードを書く具体的な指針
# ラベル付き引数を使え。
# $_ は使うな。
とありましたが、ラベル付き引数というのがいまいちわかりません。
どなたか、具体的な例を挙げてくださらないでしょうか。
785デフォルトの名無しさん:2006/08/24(木) 21:51:08
subroutine(
        Name => 'デフォルトの名無しさん',
        .
        .
        .
        )
786デフォルトの名無しさん:2006/08/24(木) 22:51:32
あぁ そういうことか
「関数に複数引数がある場合はSCALARやARRAYじゃなくてHASHにしろ」ってこと
787デフォルトの名無しさん:2006/08/24(木) 23:55:38
アッー!
788ヽ(´ー`)ノ ◆.ogCuANUcE :2006/08/25(金) 01:44:34
誰か「まるごとPerl Vol.1」買った?
週末にでも買おうと思うんだが、感想を聞きたい。
789デフォルトの名無しさん:2006/08/25(金) 03:18:23
perlの手品師まがいでトリッキーな糞文法をどうにかしてください。
790デフォルトの名無しさん:2006/08/25(金) 03:31:51
無理
791デフォルトの名無しさん:2006/08/25(金) 06:13:49
たとえば、どういうのが糞文法なの?
perlって書き方たくさんあるんだから、
キモくないのを選択することはできないの?
それとも自分で書く分には問題ないけど他人のコードが
読みづらいということ?
792デフォルトの名無しさん:2006/08/25(金) 07:43:25
自分の理解外の概念を人は安易に批判するものである。
>>789 バ〜か
793デフォルトの名無しさん:2006/08/25(金) 08:23:29
>>789
> perlの手品師まがいでトリッキーな糞文法をどうにかしてください。

どうにもならないから、別な言語を使うといいよ。
794デフォルトの名無しさん:2006/08/25(金) 09:37:31
Perlを批判する人は大抵UNIXやShell Scriptを知らないことが多い。
795デフォルトの名無しさん:2006/08/25(金) 09:39:58
そういう奴らは.NETいじってろって
796デフォルトの名無しさん:2006/08/25(金) 09:42:21
UNIX系のシステムは、最近Perlを排除しつつあるからな。
797デフォルトの名無しさん:2006/08/25(金) 09:49:02
>>796 具体的にどう排除されつつあるか説明してみ、嘘吐き
798デフォルトの名無しさん:2006/08/25(金) 10:34:53
Perlほど非UNIX的なものもないからなあ。
799デフォルトの名無しさん:2006/08/25(金) 11:08:25
 /l、
(゚、 。 7 ハァ? なにいってんのオマエ
 l、 ~ヽ
 じしf_, )ノ
800デフォルトの名無しさん:2006/08/25(金) 11:22:13 BE:238787993-BRZ(1002)
煽り耐性なさすぎワロタ
801デフォルトの名無しさん:2006/08/25(金) 11:32:52
だまれボケ!おまえのハートに火ぃつけんぞ、コラ!!
802デフォルトの名無しさん:2006/08/25(金) 11:36:39
ツールキットアプローチに反するという件だな。
わたしが知っているのだと、FreeBSDがシステムまわりからPerlのスクリプトを一掃したな。
803デフォルトの名無しさん:2006/08/25(金) 11:41:59
「依存をなくした」と「排除した」を混同してるだけか
804デフォルトの名無しさん:2006/08/25(金) 12:31:08
感想を聞けば誰かが書いてくれる
そう思っていた時期が猫にもありました
805デフォルトの名無しさん:2006/08/25(金) 12:57:33
ここはひどいインターナショナルですね
806デフォルトの名無しさん:2006/08/25(金) 14:28:32
>>802
FreeBSD の base system から perl が外れた一番大きな理由は、
perl とのその標準モジュール群がデカくなり過ぎたからだよ。
http://home.jp.freebsd.org/cgi-bin/showmail/announce-jp/982

perl の代わりに他の Light-weight Language を採用したわけでも
なく、今まで Perl で書かれていたシステム周りのスクリプトは
特に構成を変える事もなく sh や C でそのまま置き換えられてるし。
807デフォルトの名無しさん:2006/08/25(金) 14:36:56
>>771
通報しますた
808デフォルトの名無しさん:2006/08/25(金) 17:54:46
Perlで以下のページにあるようなフォワードの処理をしたいのですが
ttp://www.atmarkit.co.jp/fjava/javatips/062jspservlet029.html
方法がわかりません。どなたか方法を御存じの方がいらっしゃいましたら
教えて下さい。
809デフォルトの名無しさん:2006/08/25(金) 17:56:54
>>808
単なるPerlとJavaServletの違いがわかるか?
810808:2006/08/25(金) 17:59:50
>>809
上からPerlでやるようにいわれているのですが、
Perlではできないのですか?
811808:2006/08/25(金) 18:04:26
>>809
すみません。
あとプログラミング歴が浅いのでJavaServletに関する知識がありません。
もしPerlでできないのなら、その理由を教えていただけるとありがたいのですが。
812デフォルトの名無しさん:2006/08/25(金) 18:08:47
>>811
PerlやServletがどのように動作しているかについては自分で調べて下さい。
分かれば解決します。
813デフォルトの名無しさん:2006/08/25(金) 18:09:53
>>811
「JavaServlet」の意味を調べて、>>1をよんでWEBプログラミング板に行くといいんじゃね?
814808:2006/08/25(金) 18:11:16
>>813
わかったありがと

815デフォルトの名無しさん:2006/08/25(金) 18:28:04
>>808
なんかお前が後輩の気がしてきたぜwwww
816デフォルトの名無しさん:2006/08/25(金) 20:50:06
FedoraCore4でPerlを使っています.
rand()を一度だけ呼ぶのを何回か実行する場合,
その乱数は品質的にどうなのでしょうか?

実際には
randを使うPerl
別のプログラム
randを使うPerl
のように繰り返して実行したいです.
別のプログラムはそれなりに時間がかかります.
こういう場合Seedは何がよいのしょうか?
817ヽ(´ー`)ノ ◆.ogCuANUcE :2006/08/25(金) 21:04:08
>>816
適当なシードの決定については srand() のマニュアルに書いてあるよ。
818デフォルトの名無しさん:2006/08/25(金) 23:25:02
>>816
>品質
どの言語でも標準の乱数生成器はどれも品質は良くないよ。

>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
819デフォルトの名無しさん:2006/08/25(金) 23:33:25
乱数生成にハードウェアの支援は受けていないのかな。あるいは受けてもたいして改善しない?
820デフォルトの名無しさん:2006/08/26(土) 00:56:17
俺用語の「ハードウェア支援」が何を意味するかエスパー解釈になるわけだが、
/dev/random あたりに頼れば飛躍的改善が図れる場合がある。
821デフォルトの名無しさん:2006/08/26(土) 00:57:03
俺用語でもなんでもない。普通に分かるだろ
822デフォルトの名無しさん:2006/08/26(土) 02:18:41
/dev/hwrandom
823デフォルトの名無しさん:2006/08/26(土) 12:51:56
普通に分かっても俺用語は俺用語な罠。
824デフォルトの名無しさん:2006/08/26(土) 14:08:18
Perlで明示的にメモリを確保するにはどうすれば良いのでしょうか?
825デフォルトの名無しさん:2006/08/26(土) 15:39:04
>>824
何のためにperlを選択した?
826デフォルトの名無しさん:2006/08/26(土) 16:50:13
>>824
$buffer=" "x1024;
827デフォルトの名無しさん:2006/08/26(土) 17:01:46
my @arr;
$arr[100000000]=undef;
828824:2006/08/26(土) 17:03:26
喧嘩を売ってるのでしょうか?
829デフォルトの名無しさん:2006/08/26(土) 17:06:25
うんそうだよ。だから何?
830デフォルトの名無しさん:2006/08/26(土) 17:16:05
まあ、もちつけ。>>824みたいのはスルー汁。
ミケネコ研究所でお世話になったこと、思い出しちゃった。
ttp://mikeneko.creator.club.ne.jp/~lab/perl/tuning/
831824:2006/08/26(土) 17:17:45
ここは酷いインターネットですね
二度と来ません
832デフォルトの名無しさん:2006/08/26(土) 17:19:45
>>828
買ってくれます?
833デフォルトの名無しさん:2006/08/26(土) 17:48:59
180円になります
834デフォルトの名無しさん:2006/08/26(土) 18:37:44
>>831
         \  ,, -―――- 、__
          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     ´―― 、.    |
835デフォルトの名無しさん:2006/08/26(土) 18:39:06
2つください
836デフォルトの名無しさん:2006/08/26(土) 20:41:31
"aaa bbb"という文字列をファイルから読み出したとき
aaaは$oneに入って、bbbは$twoに入って、真ん中の空白は捨てるには
どういう風に代入したらいいでしょうか?
837デフォルトの名無しさん:2006/08/26(土) 20:45:52
split
838デフォルトの名無しさん:2006/08/26(土) 21:02:06
ありがと
839デフォルトの名無しさん:2006/08/26(土) 22:48:34
8ビットとか16ビット幅でのビットローテートをしたいんだけど
perlらしいスマートな書き方ってありませんか?
840デフォルトの名無しさん:2006/08/26(土) 23:10:40
どっかの大学生か専門学校生が夏の宿題の答えを探しに来てるのか
841デフォルトの名無しさん:2006/08/26(土) 23:29:54
>>840
いや、そうじゃないよ。
必要に迫られて書いたんだけどどうにもスマートじゃないなと思ってね。
8ビット左方向を今はこういう風に処理してるんだけど、もっといい方法ない?

sub bit_rotate_8L {
  my ($v, $n) = @_;  # 初期値, 移動量
  $v = 128 << $n;
  $v & 255 | ($v & 65280) >> 8;
}
842デフォルトの名無しさん:2006/08/27(日) 00:03:52
use LWP::UserAgent;
#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";
 }
}

ビープ音がビービーなります(;´Д`)たすけてください
843デフォルトの名無しさん:2006/08/27(日) 00:06:11
初めの配列の書き方が間違っていますが読み替えてクダサイ
画像をファイルに保存したいのですが binmode というのを付けたら
ビープ音が酷く鳴ります 外すと 壊れた画像ファイルが出力されます
844マイク ◆yrBrqfF1Ew :2006/08/27(日) 00:11:55
FILE開いたんだから
print FILE $content;
にしろ
845デフォルトの名無しさん:2006/08/27(日) 00:14:11
openしてからbinmode。
今のだとopenする前のファイルハンドルに対してbinmodeしてる。
846デフォルトの名無しさん:2006/08/27(日) 00:21:46
open(FILE, ">$picname" );
binmode FILE;
print FILE $content;
close( FILE );
print"downloaded:$picname\n";

正常に動作しました アリガトウゴザイマシタ。
847デフォルトの名無しさん:2006/08/27(日) 10:04:57
>>841
$v = ( $v <<= $n % 8 ) & 255 | $v >> 8;
848デフォルトの名無しさん:2006/08/27(日) 22:21:46
>>847
ぅぉ、レスあきらめてたんで嬉しいです。
なるほど〜、合理的ですね… 美しいです。
ありがとうございました。
849デフォルトの名無しさん:2006/08/27(日) 23:04:07
2つくださいワロタw
850デフォルトの名無しさん:2006/08/28(月) 01:14:39
perlでファイルシステムの全容量、使用容量、残りの容量を取得することって可能でしょうか?
851デフォルトの名無しさん:2006/08/28(月) 01:25:49
system("df -H");
852デフォルトの名無しさん:2006/08/28(月) 01:29:24
ワロタ
853デフォルトの名無しさん:2006/08/28(月) 01:59:37
`df -h`;
-k でもいいけど
854850:2006/08/28(月) 02:10:55
やっぱそれしかないですかねぇ。
df /filesystemで第2-4フィールドを取得すればいいのかな。
Filesystem名が長い場合は2行になるから1行にしてからだなぁ。
でもdfの表示の仕方ってプラットフォームで違いますよね?
855ヽ(´ー`)ノ ◆.ogCuANUcE :2006/08/28(月) 02:21:30
>>850
Filesys::DfPortable
856デフォルトの名無しさん:2006/08/28(月) 07:12:35
>>855
気違いみたいになんでもあんのな。CPAN て。
857デフォルトの名無しさん:2006/08/28(月) 08:54:40
>>856
どれもこれも中途半端だったりするけどな。
858デフォルトの名無しさん:2006/08/28(月) 09:11:01
中途半端な人間に中途半端といわれる屈辱
859デフォルトの名無しさん:2006/08/28(月) 10:13:50
>>857
同じことをやるモジュールがいくつかあっても、みんな同じところが中途半端だったりするのな。
860デフォルトの名無しさん:2006/08/28(月) 10:15:48
>>850
Filesys::Df
Filesys::DiskFree
Filesys::DiskSpace
Filesys::DiskUsage

861bobo:2006/08/30(水) 00:09:12
PDFlib を使うperlでも質問していいですか?
862デフォルトの名無しさん:2006/08/30(水) 03:07:45
質問です。

HTTP::Daemon と LWP::UserAgent を使ってhttp proxyを作ってますが、シングルタスクで困ってます。
レスポンスの遅いサイトが混じると、すべての読み込みが中断されてしまいます。

マニュアルによると、HTTP::Daemonは5並列での処理が可能。プログラマの権限でforkしなさいと書いてあるので、
マルチスレッド化しようと思っていろいろやってみたけど、HTTP::Daemonが作り出すHTTP::Daemon::ClientConnはThread::Queue::Anyには入れられないようで、入れようとすると怒られます。

何かヒントをいただけないでしょうか。
よろしくお願いいたします。
863デフォルトの名無しさん:2006/08/30(水) 03:29:19
>>862
っ[POE]

っつ〜か、生Socketで200行ないコードでhttp proxyを作って使っていて
存在を忘れるほど安定動作していたことがあるけどな。
LWP::UserAgentの通信路をノンブロッキングにしてSelectることはできんのか?

おや、LWP::UserAgentとHTTP::Daemonを使ったHTTP::Proxyというのがあるぞ

でもって、LWP::Parallelというのもある。



864デフォルトの名無しさん:2006/08/30(水) 03:31:44
>>862
> マニュアルによると、HTTP::Daemonは5並列での処理が可能

ちがう。
865862:2006/08/30(水) 21:37:07
>>863
>LWP::UserAgentの通信路をノンブロッキングにしてSelectることはできんのか?

実験してみたところ、処理が単純ループなので LWP::UserAgent ではなく、 HTTP::Daemon のacceptの発行待ちで引っかかってる模様。
ブラウザとやり取りするHTTP::Daemon側をイベント型に変えてやる必要がありそうです

ActivePerlには HTTP::Proxyと LWP::Parallel が実装されてないみたい。
よって、POEでチャレンジしてみます。

>>864
もいちど勉強しなおします。(エイゴむずかしいデス)

皆さんの愛に感謝です。ありがとうございました。
866デフォルトの名無しさん:2006/08/30(水) 22:10:25
867デフォルトの名無しさん:2006/08/30(水) 22:23:14
POEを知らんのか?
868デフォルトの名無しさん:2006/08/31(木) 00:10:14
$foo = '[foo] [bar][hoge] piyo [fuga]';
上の文字列から下のような配列を作成したいのですが
@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だけしか取得できませんでした。
長くて申し訳ないですが、助けてくださると幸いです。
869デフォルトの名無しさん:2006/08/31(木) 00:26:36
sub getCategory {
  my $f = shift;
  if ($f =~ /^((?:\s*\[.+?\])+)/) {
    return $1 =~ /\[(.+?)\]/g;
  } else {
    return ();
  }
}

とか?
870デフォルトの名無しさん:2006/08/31(木) 00:39:15
push @c, $1 while ($f =~ s/^¥[(.+?)¥] *//);
871デフォルトの名無しさん:2006/08/31(木) 00:39:33
sub getCategory {
my $f = shift;
my @c = ();
while ($f =~ /\G\s*\[(.+?)\]/g) {
push @c, $1;
}
return @c;
}
こう?
872bobo:2006/08/31(木) 00:56:27
pdflibを使って
読み込んだPDFが横だったら縦に変えるプログラムを作ろうと思うんですが
考えがおもいつきません、わかる方よろしくおねがいします
873デフォルトの名無しさん:2006/08/31(木) 01:25:20
>>872
pdflibってどういうのか全く分からないけど、
perl用の追加モジュールをダウンロードして少し見てみた。
PDF_rotate() ってのがあるみたいだから、それを使えば?

その関数があるっていうのが分かっただけ。
肝心の部分はバイナリ配布でマニュアルが無いから、それ以上は分からない。
どうしてもそれを使うなら、配布元の会社に問い合わせた方が良い。
サポートでメール受け付けてるみたいだし。
874デフォルトの名無しさん:2006/08/31(木) 01:37:09
>>868
sub getCategory {
  my $f = shift;
  $f =~ s/^\s*\[(.*)\](?>\s*)[^\[\s].*$/$1/
    ? return split /\]\s*\[/, $f
    : return;
}
875デフォルトの名無しさん:2006/08/31(木) 01:45:26
個人的には、いまんとこ >>869 が気に入ってるかな。
次点で >>870 。破壊的だが。
876デフォルトの名無しさん:2006/08/31(木) 02:03:19
>>875
参照渡しじゃないんだから破壊ってのは違うような。
877デフォルトの名無しさん:2006/08/31(木) 02:03:54
TMTOWTDIで色々な書き方が見れて面白いね。
878デフォルトの名無しさん:2006/08/31(木) 06:32:17
my @c = $foo =~ m/\[([^\]]+)\]/g;

my @c = ();
while( $foo =~ m/\[([^\]]+)\]/g){
push @c, $1;
}
879878:2006/08/31(木) 09:28:50
最後まで読んでなかった。間違い ><
880デフォルトの名無しさん:2006/08/31(木) 10:42:59
push @c, $1 while $foo =~ /\G\[(.+?)\]\s*/g;
881デフォルトの名無しさん:2006/08/31(木) 10:46:00
あ。こっちでいいのに><
my @c = $f =~ /\G\[(.+?)\]\s*/g;
882デフォルトの名無しさん:2006/08/31(木) 12:07:44
### perl 5.6 以降。
my @data ;
my $flag ;
$foo =~ /^(?:\s*\[(.*?)(?{ $data[$flag] = $1 })\](?{ $flag++}))+/ ;

### perl 5.8 以降。
my @data ;
$foo =~ /^(?:\s*\[(.*?)(?{ push @data, $1})\])+/ ;

# いざ使う場合になったらもちろん 881 氏の手を使うw
883878:2006/08/31(木) 12:16:31
$_ = '[foo] [bar][hoge] piyo [fuga]';

my @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";

こんな感じかなぁ
884デフォルトの名無しさん:2006/08/31(木) 20:33:10
\Gとか久しぶりに見たわー
885868:2006/09/01(金) 01:01:13
回答していただいた皆さん、ありがとうございます。
今回は881氏のコードを使わせていただきました。
皆さんのさまざまなコードには、私が普段使っていないので
理解できないコードも多いですが、少しでも理解できるよう努力したいと思います。
もういちど、ありがとうございました。
886デフォルトの名無しさん:2006/09/01(金) 10:06:58
WEB、コンソール、cronのいずれからPerlが実行されたのかプログラム側で知りたいのですが
if (-t) {
  print "コンソール";
} elsif (exists $ENV{REMOTE_ADDR}) {
  print "WEBかも";
} else {
  print "CRONかな";
}
よりももっと正確な判別方法はありませんでしょうか。
887デフォルトの名無しさん:2006/09/01(金) 11:28:53
perlスクリプトの中に、ディレクトリ内のファイル数を数える、という操作を入れたいのですが、どうすればいいでしょうか
ls -l|wc -l の結果を変数に格納、みたいなことができればいいのですが
888デフォルトの名無しさん:2006/09/01(金) 11:52:00
perl -e 'opendir(D,"."); $_ = grep -f, readdir(D); closedir(D); print'
889887:2006/09/01(金) 12:51:31
>>888
漏れへのレスっすかね?
難しくてわかんないっす。でも一応サンクス
普通に$num = `ls -l|wc -l` で事故解決と相成りますた
890デフォルトの名無しさん:2006/09/01(金) 13:39:47
>>889
随分偉そうだなw
891デフォルトの名無しさん:2006/09/01(金) 15:13:47 BE:283008184-BRZ(1002)
          ____
       / \  /\  キリッ
.     / (ー)  (ー)\
    /   ⌒(__人__)⌒ \     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
 ヽ    -一''''''"~~``'ー--、   -一'''''''ー-、
  ヽ ____(⌒)(⌒)⌒) )  (⌒_(⌒)⌒)⌒))
892デフォルトの名無しさん:2006/09/02(土) 01:05:08
>>891
ガキかw
893862:2006/09/02(土) 18:10:20
>>865

いろいろ教えていただいて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クライアントを作成されている諸先輩方は、どのように対処されているのでしょうか。
やはり、ボディサイズ分バイナリで読み込み、再構築するしかないのでしょうか。

よろしくお願いいたします。
894867:2006/09/02(土) 19:58:27
895デフォルトの名無しさん:2006/09/02(土) 20:00:28
>893

すみません、質問に質問で申し訳ありません、
http proxyを作る意味を教えて下さい。

クライアントPC上でproxyも立てるのですよね?
IPアドレスを変更するためなのでしょうか?

すみませんが、宜しくお願いします。

896867:2006/09/02(土) 20:01:40
897デフォルトの名無しさん:2006/09/02(土) 20:14:19
proxy は、いろんなことに使える。
作る目的は、いくらでも見つかる。
例えば自分が今一番欲しい proxy は、XHTML で書かれているページの head 内で定義されている CSS をカットして、ローカルの handheld メディアタイプの CSS に差し替えるコンテンツ変換 proxy。
Nintendo DS ブラウザで見やすいようにって感じで。
898デフォルトの名無しさん:2006/09/02(土) 20:28:26
>897
ありがとうございます。

なるほど、

DS------PC(proxy)-------Internet
として、途中で加工するわけですね。
なるほどです。

私はIPアドレスの偽証くらいしか思いつきません(笑)
899デフォルトの名無しさん:2006/09/02(土) 20:49:21
Proxy には割りと広い意味があり、また用途もいろいろ。
ttp://ja.wikipedia.org/wiki/Proxy
あたりを参照すれば概要はつかめると思う。
ここで紹介されていない用法(>>897等)も。用途はアイデア次第って感じ。
900デフォルトの名無しさん:2006/09/02(土) 21:06:11
>899
ありがとうございます。

陳腐なアイデアですが、、
考えました。

proxyサーバがもしダウンした際に、
暫定のproxyにするということができますね。
クライアントは何の変更なくwebを使えます。
で、復旧したら切り替えると。

アイデア勝負ですね。色々と考えてみます。
901デフォルトの名無しさん:2006/09/02(土) 21:45:41
もうひとつ思い出した。多分、10年前くらいかな。関西弁変換 proxy とか、メディアでちょくちょく採り上げられてた。今あるのかとググってみたら、あった。
ttp://www.yansite.jp/osakaproxy.html
902862:2006/09/02(土) 23:44:41
>>895
proxyを作る理由ですね。

大まかに言うとページに埋まってるFlashやwavなどを取り除くためです。
何度も見たくないものを押し付けられているようなので、取り除いちゃえ!て軽い気持ちで作ってます。
こういった題材があると自分の勉強にもなるし、結果が得られればその後も満足出来て一石二鳥だと思います。

>>896
867さん、情報提供ありがとうございます。
なにぶん不勉強なもので、大変参考になります。

今度はフィルタにチャレンジしてみます。

>>897
DS用proxyってのもいいですね。いろんなタイプのサイトがあるので、一般化するのが難しそうですが。
携帯用i-monaの発想に近いでしょうか。


>>900さんが言うとおり、まさにアイデア次第ですね
903デフォルトの名無しさん:2006/09/03(日) 01:17:49
おみとろん(ry
904デフォルトの名無しさん:2006/09/03(日) 01:21:50
privoxy使えばええのになぁ。正規表現もpcreだし。
905862:2006/09/03(日) 02:32:09
>>903 >>904
こんなソフトがあるのですね。知りませんでした。
今回はperlの勉強もかねているので、もう少しがんばってみようと思います。

ありがとうございます。
906897:2006/09/03(日) 03:23:48
>いろんなタイプのサイトがあるので、一般化するのが難しそうですが。

>>897 で、あえて XHTML と書いたのは、論理マークアップの浸透度合いが高いと思われるからです。
XHTML strict で table エレメントによるレイアウトを行っているサイトを探す方が困難かと思うので、XHTML strict あたりを狙い撃ちにすれば、一般化まで考えずとも CSS 差し替えだけで、とても見やすいサイトになると思います。
907デフォルトの名無しさん:2006/09/03(日) 16:35:53
>>905
プロクシができたらどこかにうpしていただけると非常にありがたい
908デフォルトの名無しさん:2006/09/03(日) 22:02:13
>>907
> プロクシができたらどこかにうpしていただけると非常にありがたい

なんで?
909デフォルトの名無しさん:2006/09/03(日) 23:56:08
dos2unix, unix2dos の代替物として、以下のようなワンライナーを使用しています。

(dos2unix)
perl -pe 'BEGIN { $^I='' if -t } s/\r//'

(unix2dos)
perl -pe 'BEGIN { $^I='' if -t } s/\n/\n\r/'

文字コードのことはよくわからないのですが、このような単純な置換で
UTF-8, EUC, cp932 等で書かれたファイルが破壊されることはないのでしょうか。
910デフォルトの名無しさん:2006/09/04(月) 00:09:10
ない。
というか
>s/¥n/¥n¥r/'
これは s/¥n/¥r¥n/' このほうが正解に近いっていうか、
それ以前に "¥n" は環境依存なので、¥x0A を使っておけば、
確実なヨカン。
911デフォルトの名無しさん:2006/09/04(月) 00:25:46
ありがとうございます。壊すことはないのですね。

\nが環境依存だとは知りませんでした。\x0Aを使うようにします。
912デフォルトの名無しさん:2006/09/04(月) 00:26:32
>>911
\r もな。
913909=911:2006/09/04(月) 00:29:48
>>912
はい、すみません。

# s/''/""/g
914デフォルトの名無しさん:2006/09/04(月) 01:20:44
謝らなくたっていいだろ
915デフォルトの名無しさん:2006/09/04(月) 01:47:38
環境依存ってか、常にbinmodeすれば問題なし。
916デフォルトの名無しさん:2006/09/04(月) 02:13:22
\r\nはbinmodeの問題じゃねぇぞ
917デフォルトの名無しさん:2006/09/04(月) 02:23:02
ごめんなさい
918デフォルトの名無しさん:2006/09/04(月) 16:58:31
謝ってすむと思ってんのか
919デフォルトの名無しさん:2006/09/04(月) 17:22:51
遺憾の意をperlコードで表させていただきます↓
920デフォルトの名無しさん:2006/09/04(月) 17:33:00
m(_ _)m;
921915:2006/09/04(月) 17:49:15
謝って済む問題ならはじめからやらない。
922デフォルトの名無しさん:2006/09/04(月) 17:49:53
それが僕のモットーですが、何か?
923デフォルトの名無しさん:2006/09/04(月) 18:14:07
金で解決することには謝らない
924デフォルトの名無しさん:2006/09/04(月) 18:19:04
謝って誤魔化そうとしている
925デフォルトの名無しさん:2006/09/04(月) 18:21:05
全然おもろない
926デフォルトの名無しさん:2006/09/04(月) 22:02:03
>>908
完全に自分でコントロールできるプロクシはいろいろ使い道があるよ。
英単語を覚えるために、日本語のページの単語に英単語をつけたり。
1000語ぐらいのをProxomitronでやったら遅くて死ねた。
927perl初心者:2006/09/05(火) 01:24:18
すいません、簡単なことを聞きたいんですけど、メールフォームの作り方を
学んだんですけど、その本には、sendmail.iniの設定を変える必要があると
のことですが、ホスティング(ロリポップやさくら)の場合、単に、
$sendmail = '/usr/sbin/sendmail';みたいな感じで設定して終わりでいいんでしょうか?
sendamil.iniをいじるのは、自分でサーバを持っているときとかのみですか?
928perl初心者:2006/09/05(火) 01:26:50
すいません、この質問はWEBプログラミング板でするべきでしたよね。
勘違いしてすいません。
929デフォルトの名無しさん:2006/09/05(火) 01:28:05
>>927
>>1 を読みましょう。板違い、スレ違いです。
930デフォルトの名無しさん:2006/09/05(火) 02:49:45
httpクライアントもどきをつくりたいのですが、サーバから送信の最後に
\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を受信するまでよみこめない
}
931デフォルトの名無しさん:2006/09/05(火) 03:27:10
>>930
「バッファリングされてて吐けてない」に一票。
932デフォルトの名無しさん:2006/09/05(火) 03:30:26
LWPじゃだめなの?
933デフォルトの名無しさん:2006/09/05(火) 09:44:21
相談
2つのperlスクリプト、A、Bがあります。
Aは一つのファイルhhhのデータの読み込みのみ、Bは書き込むだけです。
このような場合、Bはファイルhhhに書き込む時、ファイルロックする仕組み
を実装する必要があるでしょうか。
テストした範囲では問題がないのですが。
アドバイスよろしくお願いします。
934デフォルトの名無しさん:2006/09/05(火) 09:49:36
同時実行される可能性があり、かつ追記でないならロック必須だし
そうでない場合もAが不完全なデータを読み込ませないためにロックした方が良い。
935デフォルトの名無しさん:2006/09/05(火) 10:25:06
>>933
別にいらないと言えばいらないけど
Bが書き込んでる最中に 途中まで書いた分をAが読んで
誤動作されるのもやなので Aはタイムスタンプを監視してて
処理終わった後に時刻が変わってたらやりなおせ
936デフォルトの名無しさん:2006/09/05(火) 10:35:30
たいてい、AとBがわかれてるのは
読み込むAは のんびり処理、 書き込むBは いそいで処理
というのが相場だから

・Aはファイルをロックしない(できない)
・Bがロックしてる最中はAは読めない
・Aの処理中にBがロックしたら Aは(中断して)リトライ

という条件が必要になる
AもBもロックできるようにすると、Bはいらいらして ぶちギレ金剛
937933:2006/09/05(火) 11:11:14
>934-36

ありがとうございます。

Bはappendするのみです。
hhhのファイルの末尾に次々とデータを追加していくのみです。
Aのアクセス頻度は不確定です。
Aが激しくhhhを読むもこともあり、また緩慢な場合もあります。
Bは書き込み頻度の調整がききます。今のところ
Bは30秒に一回程度、ある程度大きなデータを書き込みさせようかなと。
Aにはデータチェックさせる仕組みとリトライさせる仕組みを実装しています。

データを追記するとき等、
何らかの理由でファイルにもともとあったデータが破壊されるかどうか
また、Bがデータを追記しない、
これらが心配の種です。

まっ、きりがないし、いっか。



938デフォルトの名無しさん:2006/09/05(火) 21:40:35
>>937
で、もちろん同時実行の可能性はないんですよね?
939デフォルトの名無しさん:2006/09/05(火) 23:44:58
>>931さん
 それはわかってるんですが、バッファリング解除方法がわかってないんです。。。

>>932さん
ありがとうございます。早速つかってみます。
 調べれば便利なパッケージがあるんですね。。X68000・・・のサイトを参照して
 作っていたので、まったくしりませんでした。。
940デフォルトの名無しさん:2006/09/06(水) 15:13:16
フラッシュ・ゴードンのテーマ
941デフォルトの名無しさん:2006/09/06(水) 15:44:22
PerlのIDEでお勧めありますか?
調べたら結構あるもので迷ってます。
仕事でEclipseを使っているJAVA屋ですので、似たようなのがいいのですけど。
942デフォルトの名無しさん:2006/09/06(水) 15:53:32
久々にでたw
質問者の「それはわかっております」ww
943デフォルトの名無しさん:2006/09/06(水) 18:43:14
>>941
Eclipseに思い入れがあるならEPIC使っちゃえばいいじゃないか。
944デフォルトの名無しさん:2006/09/06(水) 20:57:25
-4の4乗は256だよね。
で、

perl -e "print -4**4"

こうやっても、仕様上4**4の結果に対して-が付くから、結果的に -256ってなってしまう

-4の4乗を計算させるにはどうしたらいいだろう
945デフォルトの名無しさん:2006/09/06(水) 21:12:58
()つければいいのにって言おうとしたけど

perl -e "print (-4)**4"
ってやったら-4って表示された

perl -e "$a=(-4)**4;print $a;"
ならできるんだが・・・
なんで上のはうまくいかないんだろう
946デフォルトの名無しさん:2006/09/06(水) 21:16:10
連投すまん
perl -e "print ((-4)**4)"
だとうまくいったからprintを先に実行してその戻り値に対して**4を実行してたっぽい
947デフォルトの名無しさん:2006/09/06(水) 21:34:23
dir /sみたいなのを再帰で実装したいんですが、再帰するときのファイルハンドルってどう処理すればいいんでしょうか。

sub test {
 my ($dir)=@_;
 opendir(DIR,$dir);
 foreach (readdir(DIR)) {
  if (!index($_,'.')) {next;}
  &test($_);
 }
 closedir(DIR);
}

こんなんでも動いてますが、これでいいんですかね?
948デフォルトの名無しさん:2006/09/06(水) 21:35:05
local *DIR;
949デフォルトの名無しさん:2006/09/06(水) 21:35:47
>>947
ってか、.bashrcが消えないような気がするから糞。
950デフォルトの名無しさん:2006/09/06(水) 21:48:02
>>949
日本語でおk
951デフォルトの名無しさん:2006/09/06(水) 22:10:12 BE:185724937-BRZ(1002)
perl -e "$x=-4;$y=4;print $x**$y"

wwwっうぇww
952デフォルトの名無しさん:2006/09/06(水) 22:36:48 BE:53064623-BRZ(1002)
perl -e "print +(-4)**4"
953931:2006/09/07(木) 00:35:49
>>939
あなたの理解度については私どもにも割と伝わっていると思います。ですから取り繕わなくても大丈夫です。
今回の目的は LWP で果たせるでしょうから、がんばってください。できればモジュールのドキュメントも読んであげてくださいね。
954デフォルトの名無しさん:2006/09/07(木) 00:37:22
>>947
ディレクトリエントリ全部読んでclosedirしてから吟味する。
開きっぱなしヨクナイ
955デフォルトの名無しさん:2006/09/07(木) 00:50:56
開きっぱなしは良くないかもしれないけど再帰処理で
>>ディレクトリエントリ全部読んでclosedirしてから吟味する。
するとメモリ不足も考えられるよね。
956デフォルトの名無しさん:2006/09/07(木) 01:10:37
ファイルディスクリプタ不足 vs. メモリ不足
957デフォルトの名無しさん:2006/09/07(木) 01:47:19
そこで FileCache …かな?
958デフォルトの名無しさん:2006/09/07(木) 02:49:11
fd set size(うろ覚え)とかでデフォルトだと4096個とかだっけ。
ディレクトリの再帰処理だと変数で保持しておくのはディレクトリ名だけ
だからメモリ数百メガはあると考えると保持しておくほうがいいのかな。
lsとかrmもメモリに保持してるね。
959デフォルトの名無しさん:2006/09/07(木) 02:59:53
ディレクトリエントリを全部吟味しながら読んで、
closedirしてから再帰に突入でいいやん。
960デフォルトの名無しさん:2006/09/07(木) 03:14:10
>>947
> dir /sみたいなのを再帰で実装したいんですが、
File::Find
961デフォルトの名無しさん:2006/09/07(木) 21:13:32
すいません質問です。
s/\(?([A-Z])([A-Z])\/)?\/1/
             ~~~~~
の意味がわからなくて困っています。
置換だと思うのですが、特に下線部の働きがよくわかりません。
どなたか教えてください。
ちなみに置換の対象となる文字列は"(A((BC)D)(EF1))"です。
拙い表現ですがよろしくお願いします。
962デフォルトの名無しさん:2006/09/07(木) 21:19:36
>>961
それ正規表現として間違ってる。丸括弧が対応してない。
コピペミス?
963デフォルトの名無しさん:2006/09/07(木) 21:26:18
即レスありがとうございます。
やはりそう思いますか。コピペミスではありません。
個人的には、"\/)?"の/がいらないと思うのですが。

964デフォルトの名無しさん:2006/09/07(木) 21:36:27
質問です!
ログインして10分経過後、再認証を行なうプログラムについて教えて下さい。
学校の課題なんですがさっぱり分りません。。。
965デフォルトの名無しさん:2006/09/07(木) 21:38:38
>>964
time()
966デフォルトの名無しさん:2006/09/07(木) 22:19:21
>>954
こんな感じですか。
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";
}
何でこれが動くのかなかなか理解出来なくて悩みますたが。
実際に使うならこっちなのかな……

って事で解決しました。どうもありがとう。
967デフォルトの名無しさん:2006/09/08(金) 00:10:41
>>961
正規表現が正しくないので下線部の意味は特定できない。
ちゃんと文の終わりの ; まで書くべし。
968デフォルトの名無しさん:2006/09/08(金) 08:20:08
漢数字を半角数字に変換(一→1)、及びその逆(1→一)と、
半角数字を全角数字に変換(1→1)、及びその逆(1→1)がしたいのですが、
何かいい方法はありませんか?
969デフォルトの名無しさん:2006/09/08(金) 09:17:29
>>968
変換テーブルを作る
970デフォルトの名無しさん:2006/09/08(金) 09:26:55
>>968-969
> 漢数字を半角数字に変換(一→1)、及びその逆(1→一)と、
> 半角数字を全角数字に変換(1→1)、及びその逆(1→1)がしたいのですが、
> 何かいい方法はありませんか?
今ならこう書くだろう。

$ perl -MLingua::JA::Numbers -Mutf8 -e 'print ja2num(q{一二三四五})'
12345

http://search.cpan.org/perldoc?Lingua::JA::Numbers
971デフォルトの名無しさん:2006/09/08(金) 09:56:07
>>970
ダウンロードしてみたけど、すごいなCPAN。感心した
972デフォルトの名無しさん:2006/09/08(金) 12:40:47
必要がモジュールがあると、CPANに自然発生するからな。
973デフォルトの名無しさん:2006/09/08(金) 16:14:24
CPANの真髄はAcme::*
974デフォルトの名無しさん:2006/09/08(金) 20:51:59
まずは
Acme::Oppai
から。
975デフォルトの名無しさん:2006/09/08(金) 20:57:33
Acmeは似たようなもの・詰まらないゴミが多すぎ。帰れ
976Mr.Oppai:2006/09/08(金) 21:24:06
とうとう2chにまで…
977デフォルトの名無しさん:2006/09/09(土) 00:28:39
もんたメソッドもAcmeにあったな。
978デフォルトの名無しさん:2006/09/09(土) 06:39:34
最近PPMのコード読んでるんだけど、ものすごく汚い。ActiveStateにはコーディング規約があるのか疑いたくなる。
979デフォルトの名無しさん:2006/09/09(土) 17:02:48
ちゃんと動けばメスを入れるようなものじゃないだろ?
980デフォルトの名無しさん:2006/09/09(土) 18:32:04
実はActivePerl 5.8.8 build818以降についてるPPM4は問題があることがわかってたはず。
981デフォルトの名無しさん:2006/09/09(土) 22:51:34
>>980
気付いたら819になってたもんな。
982デフォルトの名無しさん:2006/09/10(日) 01:05:50
>>962
>>967
コードを書いた本人と連絡がつき、解決いたしました。
ありがとうございました。
s/(?([A-Z])([A-Z]))?/1/
としたかったそうです。
983デフォルトの名無しさん:2006/09/10(日) 03:22:56
^^;
984デフォルトの名無しさん:2006/09/10(日) 04:23:15
Unknown switch condition (?([A in regex; marked by <-- HERE in m/(?( <-- HERE [A-Z])([A-Z]))?/
985デフォルトの名無しさん:2006/09/10(日) 12:58:25
ある変数($hoge)の中に日本語(2バイト文字)が入っているかの判定を行うにはどうしたらいいですか?
986デフォルトの名無しさん:2006/09/10(日) 13:00:47
if ($hoge =~ /[^ -~]/) {
 # 日本語入ってる
}
987985:2006/09/10(日) 13:05:30
>>986
即レスありがとうございました、うまくいきました。
988デフォルトの名無しさん:2006/09/10(日) 13:34:23
>>987
改行とかタブ入る可能性あるなら
$hoge =~ /[^¥x00-¥x7E]/;
こっちの方が良い。
989デフォルトの名無しさん:2006/09/10(日) 13:36:45
CGIでPerlを使って作っています。
具体的には,外部に拒否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",
""

このように外部から読み込もうとしているのですが,動作してくれません。
外部から読み込んだデータについては,まだ何か設定などあるのでしょうか?
990デフォルトの名無しさん:2006/09/10(日) 13:43:59
>>989
まず、denyIP.dat の内容が間違ってる。
*.anonymizer.com
cache*.*.interlog.com

こんな感じでそのまま書く。

このファイルを @deny = <IN>; で読むと
各行の末尾に改行文字が付いたままになるので
それをちゃんと chomp で除去する。
991989:2006/09/10(日) 14:04:41
素早いレスありがとうございます。
確かに@denyの内容が上のソースと下のソースでは違いました。
てっきりそのまま格納されると思っていました。
きちんと両方とも確かめておくべきでした。
アドバイスありがとうございました。
992デフォルトの名無しさん:2006/09/10(日) 14:53:21
perl である複数行の文字列に一致した部分を表示するプログラムを作っているのですがうまくいきません。

aaa
bbb
ccc
に一致する部分を表示する場合、下記の様にするとうまくいきません。
/aaa\nbbb\nccc/m も試してみましたがだめでした。

while(<FH>){
 if(/aaa\nbbb\nccc/){
  print;
 }
}

<FH>で1行ずつ読み込んでるのでこの処理はむりなのでしょうか?
ご教授お願いします。
993デフォルトの名無しさん:2006/09/10(日) 15:01:42
>>992
> <FH>で1行ずつ読み込んでるのでこの処理はむりなのでしょうか?
そう。
994デフォルトの名無しさん:2006/09/10(日) 15:39:47
日テレはルパンにひどいことしたよね(´・ω・`)
995デフォルトの名無しさん:2006/09/10(日) 15:47:32
独習perlで勉強してる。

-----------------------------------------------
$ cat print.pl
print '\\\\';
-----------------------------------------------

上記のたった一行のスクリプトを実行すると、

$ perl print.pl
\\

となってしまう。
独習perlには「シングルクォート間にある文字列はエスケープシーケンスを無視する」
と書いてあるのに、なんでこんな結果になるんだろう。

FreeBSD6.1、Cygwin環境下両方で試したけど同じ。
996デフォルトの名無しさん:2006/09/10(日) 15:55:24
「初めてのperl」を見たら、2.3.1節に、

シングルクォートの間に置かれたすべての文字(ただしシングルクォートと逆スラッシュは除く)が、
そのまま文字列の内容になります。

って書いてあるよ。
997デフォルトの名無しさん:2006/09/10(日) 15:56:07
シングルクォーテーション内では、
\\ -> \
\' -> '
他の文字 -> そのまま
998デフォルトの名無しさん:2006/09/10(日) 16:53:57
次スレ

Perlについての質問箱 27箱目
http://pc8.2ch.net/test/read.cgi/tech/1157874614/
999デフォルトの名無しさん:2006/09/10(日) 16:55:34
padding
1000デフォルトの名無しさん:2006/09/10(日) 16:56:52
1000なんていらない
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。