[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 2chのread.cgiへ]
Update time : 05/09 21:18 / Filesize : 139 KB / Number-of Response : 547
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 16:01:21 BE:176880454-DIA(100004)]

"The duct tape of the Internet" こと、Perlについての質問箱です。
"There's more than one way to do it" ということで、
Perlの奥深さについて皆で語り合い、追求してまいりましょう。

CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
( WEBプログラミング板 pc11.2ch.net/php/ )

CGIの質問は答えが Perlと全然関係ない話に帰着する場合が
多かったりするのでWEBプログラミング板に行って聞いたほうが得ですよ。
このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
スレ違いの質問にはスルーか、速やかな誘導をお願いします。

www.perl.org/get.html
● 2008/04/20 現在の最新版: 5.10.0
● 2008/04/20 現在の開発版: 5.9.5

▼ 前スレ
Perlについての質問箱 34箱目
pc11.2ch.net/test/read.cgi/tech/1199977642/


2 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 16:06:37 BE:238787993-DIA(100004)]

[プログラミング自体の経験が無い奴はまずココを読め]
Perlプログラミング講座: ttp://www.site-cooler.com/kwl/perl/

[本]
リャマ: ttp://www.oreilly.co.jp/books/4873111269/
駱駝: ttp://www.oreilly.co.jp/books/4873110963/
Effective Perl: ttp://www.ascii.co.jp/books/books/detail/4-7561-3057-7.shtml (修正)
クックブック: ttp://www.oreilly.co.jp/books/4873112028/
Perl ベストプラクティス: ttp://www.oreilly.co.jp/books/4873113008/
Perl Hacks: ttp://www.oreilly.co.jp/books/9784873113142/

[オンラインマニュアル]
最新のドキュメント: ttp://search.cpan.org/dist/perl/
perl5.8.xのドキュメント(一部): ttp://www.kt.rim.or.jp/~kbk/perl-5.8/
perl5.005_03 のドキュメント: ttp://www.kt.rim.or.jp/~kbk/perl5.005/
日本語ドキュメント検索: ttp://www.cpan.jp/search.cgi (停止中)
perldoc.jp: ttp://www.perldoc.jp/
perldoc.com: ttp://www.perldoc.com/


3 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 16:09:13 BE:123817027-DIA(100004)]

[モジュール]
CPAN.com: ttp://search.cpan.org/
河馬屋二千年堂: ttp://homepage3.nifty.com/hippo2000/

[テクニック]
Perlメモ: ttp://www.din.or.jp/~ohzaki/perl.htm
Perlのページ: ttp://homepage1.nifty.com/nomenclator/perl/
Perlの小技: ttp://homepage3.nifty.com/hippo2000/perltips/index.htm

[Perl 5.8 Unicodeメモ]
www.rwds.net/kuroita/program/Perl_unicode.html (修正)
ttp://www.namazu.org/~tsuchiya/perl/perl-5.8.html
ttp://www.lr.pi.titech.ac.jp/~abekawa/perl/perl_unicode.html


4 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 16:12:33 BE:636768689-DIA(100004)]

[過去スレ1]
1 ttp://pc.2ch.net/tech/kako/1017/10177/1017736187.html
2 ttp://pc3.2ch.net/tech/kako/1033/10336/1033688230.html
3 ttp://pc2.2ch.net/tech/kako/1041/10412/1041205885.html
4 ttp://pc2.2ch.net/tech/kako/1048/10485/1048519394.html
5 ttp://pc5.2ch.net/tech/kako/1053/10530/1053053082.html
6 ttp://pc5.2ch.net/tech/kako/1060/10606/1060689008.html
7 ttp://pc2.2ch.net/test/read.cgi/tech/1068051036/ (事故により消滅)
8 ttp://pc2.2ch.net/test/read.cgi/tech/1074151549/ (事故により消滅)
9 ttp://pc5.2ch.net/test/read.cgi/tech/1079114157/
10 ttp://pc5.2ch.net/test/read.cgi/tech/1085564875/
11 ttp://pc5.2ch.net/test/read.cgi/tech/1090889189/
12 ttp://pc5.2ch.net/test/read.cgi/tech/1094579428/
13 ttp://pc5.2ch.net/test/read.cgi/tech/1097851764/
14 ttp://pc5.2ch.net/test/read.cgi/tech/1101649274/
15 ttp://pc5.2ch.net/test/read.cgi/tech/1105953092/
16 ttp://pc8.2ch.net/test/read.cgi/tech/1111034732/
17 ttp://pc8.2ch.net/test/read.cgi/tech/1117870308/
18 ttp://pc8.2ch.net/test/read.cgi/tech/1121804136/
19 ttp://pc8.2ch.net/test/read.cgi/tech/1126977805/
20 ttp://pc8.2ch.net/test/read.cgi/tech/1131286411/


5 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 16:13:54 BE:265320656-DIA(100004)]

[過去スレ2]
21 ttp://pc8.2ch.net/test/read.cgi/tech/1134327348/
22 ttp://pc8.2ch.net/test/read.cgi/tech/1138519327/
23 ttp://pc8.2ch.net/test/read.cgi/tech/1141742901/
24 ttp://pc8.2ch.net/test/read.cgi/tech/1146022352/
25 ttp://pc8.2ch.net/test/read.cgi/tech/1149259409/
26 ttp://pc8.2ch.net/test/read.cgi/tech/1153412251/
27 ttp://pc8.2ch.net/test/read.cgi/tech/1157874614/
28 ttp://pc8.2ch.net/test/read.cgi/tech/1162273941/
29 ttp://pc11.2ch.net/test/read.cgi/tech/1166708139/
30 ttp://pc11.2ch.net/test/read.cgi/tech/1173880452/
31 ttp://pc11.2ch.net/test/read.cgi/tech/1181500187/
32 ttp://pc11.2ch.net/test/read.cgi/tech/1186995713/
33 ttp://pc11.2ch.net/test/read.cgi/tech/1192463997/
34 ttp://pc11.2ch.net/test/read.cgi/tech/1199977642/


6 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 16:17:33 BE:636768689-DIA(100004)]
少しミスりました、すみません。
テンプレは以上だと思います。

7 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 17:37:30 ]
>>1おつ

8 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 21:59:21 ]
柚縁故とかの説明は無しにしたのね

9 名前:デフォルトの名無しさん mailto:sage [2008/04/20(日) 22:05:44 ]
だいぶまえからないよ

10 名前:デフォルトの名無しさん [2008/04/20(日) 23:21:25 ]
エロ画像収集言語 perl



11 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 00:34:06 ]
sedとawkさえあれば何も困らないことに気が付いた

12 名前:デフォルトの名無しさん [2008/04/21(月) 01:04:51 ]
perlでクライアントの2chブラウザ作ったけど見たい人いますか?
4時間ほどで作りました

13 名前: ◆TWARamEjuA mailto:sage [2008/04/21(月) 01:35:41 BE:3049474-2BP(7082)]
(´-`).。oO(前スレが埋まる前に次ぎスレを立てて案内を入れて欲しいよなぁ。。。)

14 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 07:15:16 ]
お前がやれ

15 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 18:03:48 ]
perlの-MO=オプションってなんなんですか?
perlrunやperlcompile見ても
-MO そのものの説明は全然のってないんですが

16 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 18:08:05 BE:212257038-DIA(100004)]
"O" と言うモジュールがあるんだよ

17 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 18:30:53 ]
perldoc O だけで説明が出ますよ。探し回ってしまうのはなんとなくわかる。

18 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 18:35:21 ]
ところが、perl -MO=Deparse とかの場合
perldoc B::Deparse
なんだなこれが。

19 名前:17 mailto:sage [2008/04/21(月) 18:45:42 ]
そこは perldoc O すれば
「-MO=Hoge すると B::Hoge が、だな」とか書かれてたはずだからいいか、と
思い込んでみました。

20 名前:l15 mailto:sage [2008/04/21(月) 18:48:58 ]
ありがとうございました

perlccで使えるモジュールみたいなもの(B::x)をperlコマンドから参照するアダプタモジュールが
Oっていう名前でそれを-Mオプションでuseしていると理解しました
=...はOモジュールのオプションですね

道理で-MOで幾ら探してもでてこないわけだ…orz



21 名前:18 mailto:sage [2008/04/21(月) 18:51:16 ]
確かにCONVENTIONSとかに書かれてるね。
きちんと読みゃ問題ないんだが、オレはハマったw

22 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 18:52:54 ]
リロードしてから投げりゃよかった。
>>21>>19へのレス。


23 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 16:32:51 BE:238789139-DIA(100004)]
#!/usr/bin/perl

use utf8;

sub スイーツ {
my $argument = shift; utf8::encode($argument);
my($package, $routine) = (caller 0)[0, 3];
{
no utf8;
$routine =~ s/\Q$package\E:://;
printf("%s(%s)", $routine, $argument);
}
}

スイーツ(笑)

__END__

codepad.org/1jJzeCja
スイーツ関数出来たよー

24 名前:デフォルトの名無しさん [2008/04/25(金) 10:46:58 ]
cat a.txt b.txt c.txt > d.txt

と同等のことをする Perl モジュールはあるでしょうか?

なるべく、
while (<FH>){print;}
の繰り返しを避けたいのですが。

それとも
(open FH, "cat a.txt b.txt c.txt |");

のようにするのでしょうか。



25 名前:デフォルトの名無しさん [2008/04/25(金) 12:35:24 ]
>>24
perl -ne print a.txt b.txt c.txt > d.txt

26 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 12:38:26 ]
これ使えば
ttp://search.cpan.org/~dconway/Perl6-Slurp-0.03/Slurp.pm

print slurp $_ for @files;

とかでできるんじゃね?

ってか何がやりたいの? なんで繰り返しを避けたいの?
質問するときはそれを書くようにしましょう。


27 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 12:39:13 ]
>>25
どうもありがとうございます。
言葉が足りなくて申し訳ありません。
実はコマンドラインでなく、スクリプトの中で実行したいのです。

28 名前:24 mailto:sage [2008/04/25(金) 12:47:18 ]
>>26
どうもありがとうございます。
ご紹介の Slurp.pm を使用してみます。

while (<FH>){print;} の繰り返しを避けたいのは、何度も同じ作業をする予定なので、
while (<FH>){print;} をファイルの数だけループさせる以外にもっといい方法があればと思いまして。

シェルスクリプトでやっていたことを Perl スクリプトで実行したいところなので
発想がシェルからなのです。
他には、 comm や sort に対応するモジュールを使ってみようかと。


29 名前:デフォルトの名無しさん [2008/04/25(金) 12:50:08 ]
いや、だから

cat.pl
---- ここから---
#!/usr/bin/perl -n
print;
---- ここまで---

コマンド行:
cat.pl a.txt b.txt c.txt > d.txt

要するに
while(<>)

while(<STDIN>)
は違いますよって事だな

30 名前:24 mailto:sage [2008/04/25(金) 13:16:10 ]
>>29
たびたびありがとうございます。
本当に言葉が足りなくて、ごめんなさい。

コマンドラインで a.txt b.txt c.txt を指定するのでなく、
スクリプト内で File:Find を駆使して、a.txt 他を探すつもりでした。



31 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 21:43:46 ]
@ARGV = <*.txt>;
print while <ARGV>;

32 名前:デフォルトの名無しさん [2008/04/26(土) 04:06:08 ]
萌え萌えじゃんけんに絶対勝つモジュールはありますか?

33 名前:デフォルトの名無しさん [2008/04/26(土) 23:14:27 ]
お世話になります。お力添えください。

テキストファイル内の特定の文字列を検索して、
1.検索結果の『前』『後』の行に、任意の文字列を『追加』する、
2.検索結果の行を、任意に編集する
ということを行いたいのですが、
openしたファイルを直接書き換えることはできるのでしょうか?

一度、別のファイルを作成して、
元を削除して、
作成したファイルをリネームするのではなく、
直接編集できないのかなと思いました。

あと、上記の『1』について、
ファイル内の先頭から検索して、
はじめにマッチする場所へポインタを移動する関数って標準にはないでしょうか?
今は先頭からゴリ押しで探しているので、格好悪いです…。

34 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 01:04:42 ]
>>33
書き換えは普通にできる。
だが危険だぞ。


35 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 12:55:49 ]
perl ド素人です。
perl の FillInForm というモジュールを使いたいのだけど
利用しているレンタル鯖(さくら)には入ってないようです。
同じ処理が出来るモジュールなどを教えてもらえないでしょうか。

やりたい事は、
「入力画面からの入力値をチェックし、
不足があれば、入力値を保ったまま入力画面を再表示する」
というものです。この「入力値を保ったまま」というのに
FillInForm を使いたいと考えています。
select や radio の値復帰を
FillInForm で出来るという記事を見かけたので
使おうと思いましたが、
別にこれにこだわっているわけではないので、出来ればなんでもいいです。

管理者権限がなく、インストールなどは出来ないので
.pm の 1 ファイルだけ置いて、require して使えるようなモジュールだとより助かります。
(FillInForm も試してみたのですが上手くいかず……)

36 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 12:58:23 ]
依存してるモジュール全部突っ込んで、
use lib '.';
とかでいいだろう。

37 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 13:01:29 ]
CGI::Ex::Fill

38 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 13:11:49 ]
即レスありがとうございます。

>>36
そういう書き方が出来るんですね、なるほど。
今回は残念ながら、FillInFomr のソースを見たところ、
  require 5.005;
なんて記述があり、自分では依存先ファイルの全貌がつかめませんでした…。

>>37
試してみます。

39 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 16:03:15 ]
>>38
そのrequireは単なるバージョン制限だ。5.005未満の環境だと、そこで強制終了。

40 名前:デフォルトの名無しさん [2008/04/27(日) 16:34:19 ]
すいません今日はじめるんですが、perl5.8.8.822インストールして
環境変数設定するんですが、パスこれであってますでしょうか?

c:\ActivePerl-5.8.8.822-MSWIN32-x64-280952\perl\bin\perl.exe



41 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 16:56:43 ]
エクスプローラのアドレスバーに
C:\ActivePerl-5.8.8.822-MSWIN32-x64-280952\perl\bin
と打ってみてその中に perl.exe さんがいるのなら、↑こう。
環境変数 PATH の設定なんだから最後の \perl.exe 要らない。

でも、Windows環境だと C:\Perl\bin 辺りに perl.exe さんがいる
状態にする人のほうが多いので、どこに perl.exe さんがいるのか
きちんと確認してください。

42 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 17:11:18 ]
ほんとにインストールしたのか?!

43 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 21:01:48 ]
>>35です。
すみません、CGI::Ex::Fill を入れようとしたのですが
うまくソースを読み込めていないようで、
関数を呼び出すと
  Undefined subroutine &main::form_fill
となります。

やったことは、サイトから落としたソースを Fill.pm として ./lib にアップ、
  use lib qw(./lib);
でその読み込み、
  form_fill($html, $query);
の呼び出し、の 3 点です。
form_fill の1行をコメントアウトすると、もちろん値は復帰しませんが正常に動きます。
(なので、use lib qw(./lib); も少なくともエラーにはなっていないようです)
問題点の心当たりのある方がいたら教えてください。

44 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 21:17:37 ]
今、パールの勉強始めてます
変数がクソだと思いました

Cをやりたいです
配属先でぱーるなんてやらせるのがイヤです
こんなクソ言語
先の無い言語

rubyやPythonやPHPやSQLみたいなオサレなのをやらせてください
COBOLとかFortlanみたいなもんと同じじゃないんですか?ぱーるって

45 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 21:23:45 ]
>>43 補足
公式サイトの説明での読み込み方が、
  use CGI::Ex::Fill qw(form_fill fill);
となっているので、ひょっとしたら use の読み込みの際、
読み込む関数を指定する必要があるのか考えています。
ただ、use lib qw(./lib) で、読み込み方を指定する方法がわからず試せていません。

全く的外れかもしれませんが、自分で思いつく問題点はそれぐらいです。

46 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 21:42:33 ]
>>43
インストールしてない
読み込んでない

47 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 21:57:54 ]
>>43
CGI::Ex::Fill::form_fill($html, $query);
じゃダメなのか?

48 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 22:05:40 ]
>>46
上にも書いている通り、ファイルを置いて use しているだけなので
インストールしてないというのは、その通りだと思います。
>>43に書いた通りには読み込み処理を書いているので
まさにそれで読み込めない理由が知りたいです。

>>47
ダメでした。同様に
  Undefined subroutine &CGI::Ex::Fill::form_fill
となりました。

49 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 22:13:44 ]
use libはインクルードパスを変えるだけだぞ…

50 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 22:21:09 ]
置いたファイルを use していない、のだ。



51 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 22:42:16 ]
>>49-50
なるほど! わかりました。
use lib でパスを通した後で、
改めて use CGI::Ex::Fill qw(form_fill fill); を行う必要があったんですね。
Fill.pm の置き場所を ./lib/CGI/Ex/Fill.pm に変更し、use したところ
まだ値は復帰しませんが、とにかく form_fill は通るようになりました。
ありがとうございました。

52 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 23:52:55 ]
インストールすりゃいいだろ!!

53 名前:デフォルトの名無しさん [2008/04/28(月) 03:02:57 ]
    ∩___∩   /)
    | ノ      ヽ  ( i )))
   /  ●   ● | / /
   |    ( _●_)  |ノ / コイツ最高のアホ!
  彡、   |∪|    ,/
  /__  ヽノ   /´
 (___)     /

54 名前:デフォルトの名無しさん [2008/05/01(木) 00:19:43 ]
    ∩___∩   /)
    | ノ      ヽ  ( i )))
   /  ● ●   | / /
   |    ( _●_)  |ノ / コイツ最高のアホ!
  彡、   |∪|    ,/
  /__  ヽノ   /´
 (___)     /

55 名前:デフォルトの名無しさん [2008/05/01(木) 02:11:38 ]
Template Toolkit の質問でも良いですか?

Template Toolkit でファイルの存在判定ってできるんでしょうか?
例えばあるテンプレート内で
[% INCLUDE hoge.tt %]
を使って異なるディレクトリにあるファイルを include させたいのですが、
実際に hoge.tt が存在しない時は、"file not found"にて処理が失敗しています。

今作ってる仕組み上、hoge.tt は時と場合に応じて有ったり無かったりするので、
ファイルが無いときは、include させない制御をテンプレートのみで実装したいのです。

お願いします。

56 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 07:35:17 ]
>>55
ここの「例外処理、フロー制御」の項読めば?
ttp://www.hakoniwa.net/tt/

57 名前:デフォルトの名無しさん [2008/05/01(木) 13:12:30 ]
>56
ありがとうございます。
まさにそのままでしたね。

どんだけ視野狭いんだ俺。

58 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 03:25:33 ]
perlからvb.net で作成したクラスライブラリにアクセスはできないのでしょうか?
例えばperlから、
homepage1.nifty.com/rucio/main/dotnet/shokyu/standard51.htm
のサンプルで作成したMyLibrary.dllの関数の"Add","Total"等を
使用する場合、次のような書き方では、Died となってしまいます。
どなたかご教授お願いします。

use Win32::API;
$Add = new Win32::API( "MyLibrary.dll", "Add", [N], "N") || die;
$Total = new Win32::API( "MyLibrary.dll", "Total", [], "N") || die;

<結果>
Died at D:\work\DLL_Access.pl line 27, <DATA> line 164.



59 名前:デフォルトの名無しさん [2008/05/02(金) 14:16:23 ]
Perl で LWPを使用したとき(activePerl) HTTP/1.1 を使用しちゃうんですが
HTTP/1.0 で通信したい場合どう指定すればいいか分かりますか?

60 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 19:07:41 ]
>>59
環境変数PERL_LWP_USE_HTTP_10をセットする。



61 名前:デフォルトの名無しさん [2008/05/05(月) 12:28:42 ]
CGI掲示板を自作していますが、書き込み送信メールのSendmailによる送信処理でつまづきました。

以下のように記述すると、管理人である自分には登録メールが送られますが、
管理人以外に、書き込みした人にも登録確認メールが送られるようにしたいんです。

#Sendmailによる送信処理
if (open(MAIL,"| $sendmail -t")){
print MAIL "X-Mailer:legend2\n";
print MAIL "To: $administrator\n";
print MAIL "Errors-To: $administrator\n";
print MAIL "From: $administrator\n";
print MAIL "Subject: $subject\n";
print MAIL "MIME-Version: 1.0\n";
print MAIL "Content-type: text/plain; charset=ISO-2022-JP\n";
print MAIL "Content-Transfer-Encoding: 7bit\n";
print MAIL "$mail_comment\n";
print MAIL "\n";
close(MAIL);
}
}

以下のどれかを使うのでしょうか?

print SENDMAIL "From: $sender <$from>\n";
print SENDMAIL "To: $to\n";
print SENDMAIL "Cc: $cc\n";
print SENDMAIL "Bcc: $bcc\n";


どうすれば良いか御教授下さい。宜しくお願いします。


62 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 13:30:13 ]
>>61
>>1

63 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 12:23:32 ]
>>62
知らないなら出しゃばるなよ

64 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 13:31:21 ]
>>63
>>1

65 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 13:36:14 BE:212257038-DIA(100004)]
sendmail のスレ行けよ
純粋な Perl の質問なら
標準モジュールの
Net::SMTP 使って質問しろ

66 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 13:49:56 ]
既にwebprogに移動したようですよ。

67 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 14:41:58 ]
こういう赤ん坊のムニャムニャみたいな質問に良く答えられるなあ。
webprogはエスパーが多いのか。

68 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 15:51:47 ]
あっちは隔離施設なので訓練をつんだ回答官が配備されてます

69 名前:デフォルトの名無しさん [2008/05/06(火) 16:00:05 ]
こっちのスレは素人なので、答えられない質問が来ると他所へ追いやります。

70 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 16:01:24 ]
>>69
> こっちのスレは素人なので、答えられない質問が来ると他所へ追いやります。

その通りなので、最初からあちらへ行ってください。



71 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 16:29:08 ]
訓練を積んだ回答官が配備されてるんじゃなくて

「&jcode'convert(*value, 'sjis', 'euc') の *value って何ですか?」
「&ReadParse(*in) の *in って何ですか?」
「open() or &error("読み込みエラー") で読み込みエラーが表示されて困っています」
「エラーメッセージは 500 Internal Server Error です」

任務が厳しくて鍛えられてしまうんです。

72 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 18:18:54 ]
激務だな。

それはそうと、未だにjcode.plつかってるのが出回ってるのかね。

73 名前:デフォルトの名無しさん [2008/05/06(火) 18:28:12 ]
use Jcode や use utf8 がクソだから jcode.pl から乗り換える気にもなれない。
わざわざ労力をかけてコードを書き直す価値が無いんだよ。
過去の古い資産をそのまま使うのでじゅうぶん。

74 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 19:26:17 ]
最近グロブ使って書かれてるスクリプトに触ってないから
グロブはあまり使わなくなっちまったなあ。

75 名前:デフォルトの名無しさん [2008/05/06(火) 22:59:14 ]
しょこたんブログも飽きたな

76 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 11:44:34 ]
Perl/tkで書いたものをWin32exe形式にするにはどうしたらいいんでしょうか?


77 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 20:09:07 ]
perl2exe

78 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 06:57:50 ]
UNIX環境でコマンドラインからスクリプト動かしたとき、
動かしたユーザーのidを取得するにはどうしたらいい?
スクリプトの使用制限をはかりたい。

79 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 08:26:58 ]
>>78
$<
manくらい嫁。

80 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 13:05:01 ]
>>78
コピーされて無効化されるぞ。




81 名前:デフォルトの名無しさん [2008/05/08(木) 20:53:48 ]
教えてください。

テキストファイルの中から、
hoge
を含む行を検索して、
その行をprintしたいのですけど、
一行一行読み込んで、パターンマッチして、真であれば、printする、
という方法以外に、何か方法ありますか?
(perlはテキスト処理が得意と訊いたのですが、『一行一行読み込んで』のステップがプログラムで必要か気になりました。)

ところで、cygwinでperlをはじめたのですが、何か気をつけることはありますか?

82 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 20:54:34 ]
hogeを見つけたら前後の改行を探し出すとか。
全く意味ないけど。

83 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 21:51:51 ]
>>81
perl -ne '/パターン/ && print' <file

84 名前:81 mailto:sage [2008/05/08(木) 22:37:56 ]
レスありがとうございます。
さっぱりわからないので、教わったことをキーワードに調べてみます。

また、御願いします。

85 名前:デフォルトの名無しさん [2008/05/09(金) 16:18:45 ]
>>81
そういう事のためにあるのが、grep

86 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 18:25:10 ]
まあ正規表現なんだけどな !

87 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 18:32:04 ]
grepやsedを素っ飛ばしてperlから始めたのかな。一行野郎
なんて知らないんじゃないのかな。

88 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 14:33:02 ]
目的:perlTk で GUI のテキスト検索ツールを作成しています。

状況:ユーザから入力された検索文字列の正規表現が不正であると、プログラムが
終了してします。 (invalid regular expression at * )

$search_string に格納された文字列が正規表現として有効であるかを、
eval を使って事前に評価したいのですが、どうしたら良いのでしょう?

if (eval (m/$search_string/)) ?  これだと常に true が帰ってしまいます。
エロい人、教えてください。

89 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 14:49:04 ]
困ったときのクックブック
6.11 パターンが有効かどうか検証する

90 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 15:12:19 ]
qx



91 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 15:52:18 ]
>>88
エロイ人への質問はvenus.bbspink.com/hneta/でしなさい。

92 名前:88 mailto:sage [2008/05/10(土) 16:16:44 ]
>>89
ありがとう。正規表現の箇所は全部呼んだつもりだったのに。。。

解法(p.254):

eval { ""=~ /$search_string/ };
warn "パターンが無効 $@" if $@;

>>91
性器表現に困ったときはそうします。ありがとうございました。

93 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 19:00:21 ]
Win32::OLEを使って wordドキュメントの編集をしようとしています。
読み出しはできるのですが、テキスト編集を受け付けてくれません。

下記のようなソースで、「ABC」→「abc」としたいのですが、元の「abc」のまま出力されてしまいます。
どのようにしたらよいでしょうか?
WindowsXP SP2上で、ActivePerl 5.10と、5.8.8で試してみました。

-------------------
use Win32::OLE qw(in with);
use Win32::OLE::Const 'Microsoft Word';

$word = Win32::OLE->GetActiveObject('Word.Application') || Win32::OLE->new('Word.Application', 'Quit') || die;
$doc = $word->Documents->Open( 'test.doc' ) || die;
$paras = $doc->Paragraphs;

foreach (in $paras){
 $_->Range->{'Text'} =~ tr/A-Z/a-z/;
 print $_->Range->{'Text'}."\n";
}

$doc->Close( 0 );
-------------------


94 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 22:36:57 ]
URL転送なんだけど今こうしてます↓

#!/usr/bin/perl
print "Location: *****\n\n";

これに転送するまでHTMLの<meta content="x">みたいに
一定時間ウェイトかける事って出来るのでしょうか?







95 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 22:55:03 ]
いいえ

96 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 23:04:42 ]
>>94
>>1

97 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 02:50:29 ]
>>94
できなくはないがやるな。
それと>>1

98 名前:デフォルトの名無しさん [2008/05/11(日) 12:59:18 ]
教えて先生!
01 や 11 などの文字列を数値に変換するにはどうすればいいの?

99 名前:98 mailto:sage [2008/05/11(日) 13:26:41 ]
自己解決っす
他のスクリプト同様 -0 でよかったのかw

100 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 14:17:20 ]
intでいいよ



101 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 21:23:54 ]
モジュールでモジュールのファイル位置を知るにはどうしたらいいでしょうか?
|-foo.pm
|-data/data1
こんな感じのフォルダ構造になってて、foo.pmの中からdata1を相対参照したいのです。


102 名前:デフォルトの名無しさん [2008/05/12(月) 21:31:33 ]
あとcgiとして使う場合。cgiが呼ばれる度毎回dataファイルを読み込むのは処理が重くなると思うんですよ。
最初の一回だけ読み込む方法とかありませんか?

103 名前:デフォルトの名無しさん [2008/05/12(月) 22:57:05 ]
mod_perl

104 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 23:35:05 ]
fastcgi

105 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 00:00:09 ]
>>103 >>104
有難うございました。fastcgiを調べてみます。

106 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 00:14:04 ]
>>105
Speedy-CGI

107 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 00:18:38 ]
perlはインタプリタだから、見下すべき言語なんだろ?

108 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 00:36:37 ]
perlはコンパイラつんでます。

109 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 00:37:57 ]
所詮JIT

110 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 13:52:10 ]
質問です。

package number;
sub get_codeNumber(){
my $number = 1;
if ($number > 0){
print "0より大です。";
}else{
print "0以下です。";
}
}
このplをローカルで実行しても何もコンソールに表示されません。
これをコンソールに表示するには、どうしたらよいのでしょうか。教えて下さい。



111 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 13:56:45 ]
>>110
そんな断片だけ書かれていては釣りだとしか思えない

112 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 14:03:43 ]
>>111
サブルーチンの中身をデバッグしたいのです。

113 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 14:13:19 ]
>>112
問題がサブルーチン内にあるとわかっているのですか?

114 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 14:20:44 ]
>>113
いいえ。perlの仕事がはじめてなのですが、
渡されたサブルーチンが仕様通りに動いているかを自分で確認したくて書き込みました。

Javaでいうと、
public class hoge1{
System.out.println("0より大です。");
}
public class hoge2{
System.out.println("0以下です。");
}
のような確認をしたかったのですが、おかしいでしょうか。


115 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 14:24:25 ]
呼べ

116 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 14:30:44 ]
>>114
ごめん,俺に理解力がないせいか何をしたいのかがよくわからない.
もうちょっと詳しく説明してくれたら助かるんだが.

117 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 14:42:28 ]
もうちょっと実際のplに近いものを書いてみます。
お待ち下さい。

118 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 14:42:50 ]
package number;
#sub get_codeNumber(){
my $number = 1;
if ($number > 0){
print "0より大です。";
}else{
print "0以下です。";
}
#}

119 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 14:55:04 ]
>>118
単純に改行が入ってないからとか
stdout が flush されてないからとか
じゃないよね?


120 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 14:58:48 ]
ちゃんと実行されてるかどうかがあやしいような



121 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 15:05:45 ]
#torikomi.pl

package torikomi;

#戻り値:String(分類コード)

sub get_code(){
    ($organizationcode,$sectioncode,$itemcode) = @_;
    
    $itemcode = "999999";
    
    my $i1cd       ="";
    my $i2cd       ="";
    my $i4cd       ="";
    
    $i1cd=substr($itemcode,0,1);
    $i2cd=substr($itemcode,0,2);
    $i4cd=substr($itemcode,0,4);
    
    
    if($itemcode eq "000000"){ 
        return "A00";
    }
    if( $itemcode eq "999999" ){
        return "Z00";
    }
}

このperlが、きちんとA00やZ00を返しているかを確認したいのです。

122 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 15:11:54 ]
「サブルーチンの中」を詳細に書けっていうんじゃなくて、
それを呼び出す側とか、実行している環境とかの詳細を書けって話だと思うよ。

123 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 15:37:02 ]
あー、呼び出す側や実行環境のソースはもらっていません。

124 名前:デフォルトの名無しさん [2008/05/13(火) 17:03:19 ]
質問です。
1つのデータを複数に分割して、それぞれをgnuplotで
表示しようとしているのですが、実行すると

gnuplot> 'plot './X1.txt' using 1:2 w l 1'
      ^
line 0: invalid command

という風なエラーが分割したデータ全てに対して出ます。
(X1.txtというのが分割したデータの1つです。)
分割まではうまくいっているので、gnuplotの部分で問題があると思うのですが、
わかる方がいましたらよろしくお願いします。
gnuplotの部分のプログラムは以下のような感じです。

for( $j = 0 ; $j < 10 ; $j++ ){
open ( GP "| gnuplot -persist" )
or die "no gnuplot";
print GP "set term postscript color 20\n" ;
print GP "set output './X1.eps\n'" ;
print GP "plot './X1.txt' using 1:2 w l 1\n" ;
close GP;
}

125 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 17:08:42 ]
>>124
スレ違いだが、、、
w l 1 の「1」って何だ? そんなのあったっけ?



126 名前:124 [2008/05/13(火) 17:14:59 ]
>>125
スレ違いで申し訳ありません。
perlでプログラム書いてたんで、perlのスレで質問した方がいいかなと・・・

「1」はlineの色ですのであまり気にされなくても大丈夫です。


127 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 17:20:15 ]
>>125
色だか線種だかを1に指定ってことだったはず.

>>124
gnuplotに流してるコマンドの最初と最後にいらないシングルクオートが入ってるせいじゃないかな?
このコピーでは問題なさそうだけど,ソースのprint文を確認してみたらいいと思う.

128 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 19:57:39 ]
' なんてコマンドはねえよ、って言ってるだけじゃねえの?

129 名前:124 [2008/05/13(火) 23:28:23 ]
124です。
124で書いたプログラムの間違いに気づきました。
プログラム中の「X1」は「X${j}」でした。
じゃないと、for文の意味ないですもんね。。。
あと、今自分で間違いに気づきました。
print GP "set output './X1.eps\n'"
じゃなくて、
print GP "set output './X1.eps'\n"
でしたorz
こんな簡単なミスに気づかないとは。。。
大変ご迷惑おかけしました。


130 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 00:54:44 ]
>>121
>このperlが、きちんとA00やZ00を返しているかを確認したいのです。
Test::Base使えば良いじゃん。



131 名前:デフォルトの名無しさん [2008/05/14(水) 02:52:29 ]
asciiコードを16進数に変換するにはどうしたらいいでしょうか?
printf "%x","a"
こんなことやっても上手くいきません
61と表示させたいです

132 名前:デフォルトの名無しさん [2008/05/14(水) 03:04:43 ]
www2u.biglobe.ne.jp/~MAS/perl/waza/asc2chr.html
これみたら分かりました

133 名前:デフォルトの名無しさん [2008/05/14(水) 03:21:56 ]
grepでデータ中から目的の行を検索したいのですが
grep(/$foo/i, @ary);
・ignore caseは使いたい
・$fooは「+」などのデータが含まれており、そのままgrepすると正規表現と解釈されてエラーになる
・正規表現はつかわない
何かよい方法はないでしょうか?


134 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 03:32:47 ]
>>133
quote (disable) pattern metacharactersの出番

135 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 03:35:23 ]
ありゃッ、先頭が抜けた。

>>133
\Q quote (disable) pattern metacharactersの出番

136 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 04:14:43 ]
>>134
grep(/\Q$foo\E/i, @ary);
でいけました。ありがとうございます

137 名前:110 mailto:sage [2008/05/14(水) 15:58:33 ]
メインルーチンとの結合でうまくいきました。
相談に乗ってくれた方、ありがとうございました。

138 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 23:04:47 ]
Windows環境で、ディレクトリ一覧を取得、正規化してリネームしたくて
いろいろやってるんだが、shift-jisの文字の扱いに苦労してる
ひょっとしてPerlでやるのあんま向いてなかったりする?

139 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 23:14:21 ]
Unicodeであつかえばいいだろ。

140 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 19:33:10 ]
あまりPERLの構文詳しくないので誰か教えてください
こんなのを作ってみたのですが
sub cont{print "contents\n";}
sub html{print "<html>\n"; $_[0](); print "</html>\n";}
sub body{print "<body>\n"; $_[0](); print "</body>\n";}
body(\&cont);
html(\&cont);
これを、出力が<html><body>cont</body></html>となるように
呼び出したいのですが可能でしょうか
↓動かないですが、こんな感じのことがやりたいです
1. html(\(body(\&cont));
2. sub f{html(\&&_[0]);} f(\&html);
3. sub g{$f=shift; html(\&f);} g(\&html);



141 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 19:43:23 ]
>>140
こういうことか?

sub cont { print "contents\n"; }
sub html { print "<html>\n"; shift->(); print "</html>\n";}
sub body { print "<body>\n"; shift->(); print "</body>\n";}
html(sub { body(\&cont) } );

142 名前:140 mailto:sage [2008/05/15(木) 19:58:14 ]
おお、想定通り動きました。ありがとう。

143 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 20:19:38 ]
use strict;
use warnings;
sub binding{ my($F,@P)=@_;sub{$F->(@P)} }
sub cont {print "contents\n";}
sub html {print "<html>\n"; shift->(); print "</html>\n";}
sub body {print "<body>\n"; shift->(); print "</body>\n";}
sub cont2 {return "contents\n";}
sub html2 {return "<html>\n",shift->(),"</html>\n";}
sub body2 {return "<body>\n",shift->(),"</body>\n";}


html( binding( \&body => \&cont ) );
print html2( binding( \&body2 => \&cont2 ) );


144 名前:デフォルトの名無しさん [2008/05/15(木) 20:21:07 ]
windows上のperlのGDモジュールで、
日本語フォントをjpg画像で出すサンプルってありませんか。
下のサンプルをmsgothic.ttcに変えて実行したら、
どうやっても・という文字になってしまいます。
x68000.q-e-d.net/~68user/webcgi/image-1.html


145 名前:140 mailto:sage [2008/05/15(木) 20:41:48 ]
>>143
このbindingってやつナイスですね
これ参考に、1タグ多要素に拡張してみます


146 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 21:51:34 ]
>>144
PerlMagickでできるかも。
まー、内部はGDかもしれないから、同じ結果かも知れない。


147 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 22:05:34 ]
>>144
よくわからんが、文字コードの問題とか?

148 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 22:32:06 ]
>>144
utf8か、フォントファイルを絶対パスで指定かな。
Imagerも良いよ。

149 名前:プヨー [2008/05/16(金) 18:03:07 ]
Perl で Lisp のマクロのようなものを使うことはできないの?
遅延評価する仕組みがほしい。

Func1( ...exp1..., ...exp2....);
という呼び出しがある場合、状況に応じて exp1, exp2 の
いずれか一方だけを評価したい。

Func1( sub { ...exp1...}, sub {...exp2...} );
のように無名関数を渡す方法は思いついたが、
記法が簡単でないので、もっと簡単に記述できる方法がいい。

150 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 19:09:34 ]
>>149
Lispは名前しか知らないけど、「状況に応じて」の部分を条件文にすればいいんじゃない?
関数を呼んだ時点では、引数の値が決定してないってこと?
そうだとしても、値が決定するまで待つとかすればいいような気がする。
Lispがわからない人でもわかる説明で。




151 名前:プヨー [2008/05/16(金) 19:31:07 ]

> Lispは名前しか知らないけど、「状況に応じて」の部分を条件文にすればいいんじゃない?

そうなんだけど、
if (,,,) { ... } else {...}
のような定型化した条件文が大量にあるから、きれいじゃないんだよね。
それよりも、単に
Func1( ...exp1..., ...exp2....);
のように書けば一行ですむから、保守性が高くてクールだよね。

> 関数を呼んだ時点では、引数の値が決定してないってこと?
そう。Lisp のマクロというのは、必要に応じて引数を eval するみたいなものだよ。

Lisp のマクロはコードを簡単化するために使われることが多い。

152 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 20:02:14 ]
>>151
sub exp1{ .... }
sub exp2{ .... }

Func1(\&exp1, \&exp2)

でいいんでないの?

153 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 20:02:34 ]
>>151
質問が漠然すぎるんだが、、、
my %hash = (
 foo => sub { print "foo\n" ; },
 bar => sub { print "bar\n" ; },
);
$hash{foo}->() ;

こう言うこととかしたいのか?
それともif文を三項演算子?

154 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 20:04:34 ]
常に先行評価のPerlで急に遅延評価になったら保守性が著しく低下するだろ
sub { } で我慢しろ。どうしても黒魔術を発明したいならソースフィルタを使って何とかすればいい

155 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 20:30:18 ]
exp1,exp2が長い場合、保守性がいいとは思えないし
>>149が考えたコードも改行位置ちょっと変えてあげれば複雑にはみえないし
関数を読んだ時点で引数の値が決まってないのは
コードがタコなだけな気がしてならないので
せめて、もう少し具体的に書いてもらえないかな

とりあえずFunc1の中でevalしたいならそうすればいいんじゃ?
Func1(
 q(...exp1...),
 q(...exp2...)
);
sub Func1 {
my($exp1,$exp2) = @_;
#なんかいろいろ
my $exp = $COND ? $exp1 : $exp2;
eval "$exp";
}



156 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 21:45:27 ]
初歩的な質問で申し訳ないのですが

クッキーにデータを入れるときエスケープなどの処理をしてから入れたほうがいいのでしょうか?
よろしくお願いします。

157 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 23:13:35 ]
>>156
URLエンコードと同じエスケープがいるよ。
日本語化されたRFCもあるから、読んでみれば?
もっと簡単にやるなら、CGIモジュールに全部任せる。


158 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 23:57:48 ]
>>157
なるほど。クッキーはURLエンコードですか。勉強になりました。

159 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 01:38:05 ]
最終的に決められた文字だけになるなら、任意のエスケープ方式でいい

160 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 13:25:57 ]
要素数が同じlistとvalueがあるときに、同じ添え字の処理ってどうやって書きますか?
#こんなのがほしい・・
for $i $j(@list @value){print "$i=$j";}

タプルみたいなのがあれば使いたいんですが
やっぱり添え字をインデックスにしてループするしかないんですかね



161 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 13:35:43 ]
どういうときに便利になる?
その例でもwhile shiftで事足りるし。


162 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 13:40:01 ]
use List::MoreUtils qw(each_array);

163 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 13:54:11 ]
zipWithを書けばおk

164 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 13:55:32 ]
単に短く書きたかっただけなんですが、あまりPERL使いこなせてはないので・・
shiftだとこんな感じでしょうか。
while(@list){print shift @list;print "=";print shift @value;}
これはこれで、短くていいですね。


165 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 13:57:38 ]
while($i=shift@list and $j=shift@value){print "$i=$j";}

166 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 14:04:10 ]
>>162
 オブジェクト指向部分はあまりわかってないので後ほど調べてみます。
>>163
 sub zipwith{shift->(shift,shift);}こんな感じですかねw
 ちゃんと動くかはこれから試してみますが・・
>>164
 こっちのが全体的にいいですね、トン






167 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 14:38:21 ]
練習がてら作ってみました
@a=qw(a b c);
sub zipwith{($f,$l,$r)=@_;while($i=shift @$l and $j=shift @$r){$f->($i,$j)}}
zipwith(sub{($a,$b)=@_;print "$a=$b\n";},\@a,[1,2,3]);

関数へ複数の配列を渡す際にはリファレンスにしないとだめってのは少し不便ですね

168 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 17:31:48 ]
perlの勉強中で
カメラ 785円
お菓子 98円

という文字列がファイルであるのですが

if(円という文字を含んでいたら)
$temp = "円より前の数字";

という風に文字の抽出を行いたいのですが
正規表現の部分と、抽出の部分がわかりません
ファイルの読み込みから1行だけを取り込むのは出来たのですが

ご指導お願いいたします。

169 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 17:55:32 ]
/円/ and $temp = $`;

170 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 18:12:27 ]
すいません、上手く動かないみたいです



171 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 18:23:41 ]
ちょっとかんべん

172 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 22:31:48 ]
perlっていうかsendmailについてなんですが…
open(MAIL, "| /usr/sbin/sendmail -t env_addr") or die $!;
# 中略
close(MAIL) or die $!;
のように、パイプ渡しでopenするとき、closeに失敗するときがあるんですが、このとき
エラーメッセージを捕捉する方法どなたかご存じですか? $!には入ってこないのです。

173 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 22:34:32 ]
>>172
エラーメッセージは何処に出るの? 標準出力ならIPC::Open2, 標準エラー出力ならIPC::Open3参照。

174 名前:デフォルトの名無しさん [2008/05/19(月) 11:53:11 ]
#!/usr/bin/perl

$inputfile="test.txt";
open (FILE1, ">>$inputfile") or die "$!";

for ($hoge=0;$hoge<10;$hoge++) {
print FILE1 "$hoge";
  sleep(1);
}
close (FILE1);

このプログラムを同時に2つ実行すると、私の予想ではtest.txtの中身は
00112233445566778899
となると思うのですが、なぜかファイルの中身には
01234567890123456789
と出力されます。
perlは排他制御が勝手に行われたりするんでしょうか?

175 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 11:54:52 ]
バッファリングされてるから

176 名前:デフォルトの名無しさん [2008/05/19(月) 11:56:39 ]
>>175
どういうことでしょうか?
もし正しくバッファリングされるのならflockなどの排他制御は不要な気が…。

すいませんがもう少し詳しくお願いします。

177 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 12:05:50 ]
どのタイミングでflush()されるかわからないのに、それに依存しちゃダメでしょ
ちゃんと排他制御しなよ


178 名前:デフォルトの名無しさん [2008/05/19(月) 12:27:50 ]
なんとなーく分かりました。ありがとうございました

179 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 19:30:53 ]
cryptの返り値はsaltと同じ半角英数字、半角スラッシュ、半角ピリオドの範囲で
salt2文字と残り11文字ってことでってますでしょうか。

180 名前:デフォルトの名無しさん [2008/05/20(火) 19:31:58 ]
あってますでしょうか、の誤字でした。あとあげます。



181 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 20:50:16 ]
いいえ。ホストのcrypt(3)に依存です。

182 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 20:53:22 ]
マニュアルを読むのは身分の低い下賎の民の仕事なので、
高貴な方々は、他人にマニュアルを読ませます。

183 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 21:02:57 ]
だからいつまでたっても

184 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 23:59:36 ]
これだからゆと(ry

185 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 01:05:07 ]
言っても無駄だから、適当にヒントなり与えてスルーしようよ。

186 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 01:13:28 ]
>>182 職業に貴賎なし。

だが、海外にも目を向けるとインプリする人はいっぱいいるから、
そういう志向はありだと思う。


187 名前:デフォルトの名無しさん [2008/05/21(水) 18:46:46 ]
ファイルテスト演算子を再定義することって可能でしょうか?

188 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 20:52:09 ]
むり

189 名前:デフォルトの名無しさん [2008/05/22(木) 01:15:29 ]
「独習 perl」を一冊
やり通したのですが、次は何をすべきでしょうか?
perlの機能を覚えただけで実用的な使い方は学べていません。
次は何をしたらいいでしょうか?

190 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 01:28:32 ]
何かを作る。
ファイルの一括処理プログラムとか、板違いではあるがCGIなんかでもいい。



191 名前:デフォルトの名無しさん [2008/05/22(木) 03:09:43 ]
自分が何をしたいのか、わかりません。

てか?

192 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 03:15:25 ]
そもそも何で perl をやろうとしたのかって話だ

193 名前:デフォルトの名無しさん [2008/05/22(木) 03:50:29 ]
プログラムって何かを作るためにある道具であって
何を作るかは作り手が考えなきゃどうしようもなかろう。

194 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 04:11:01 ]
>>189
適当なフリーのCGI等をダウンロードして
辞書的に使える本(Google先生でもOK)で調べながら
ソースを読んでみる。

ある程度理解できるようになったら、それを少しだけ改造してみる。

これを繰り返すだけでも相当勉強になると思うよ。

195 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 09:02:43 ]
ネットに転がってるperlで書かれたCGIやCGI解説本のソースはほぼ100%クズなので
初心者はそんなものを見てはいけない。

196 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 09:14:39 ]
言いますね…

197 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 10:03:26 ]
まあ、メジャーな掲示板のcgiコードもひどいもんだ。
一番良い例が、しばらく前までの2ch。

今動いているのはプロが書いたはずだから、ちゃんとしているはずだけど、
公開されてんのかね。

198 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 10:13:12 ]
フリーGGIはオススメできない
書き方が古いから。

199 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 10:41:17 ]
>>191
自分がやって「楽しい」と思うものでなければ、長続きしない。
例えば、任意の文字列を入力すると、
                         ▄         ▄▄▄▄▄▄▄▄
  ▄▄▄▄▄▄▄      ▄▀      ▄▄█▄▄  ▄▄   █▄▄▄▀  █
              ▄▀        ▄▀    ▄ ▀  █▄▄█▄▄ █
             ▄█▄▄       █     █    █▄▄█▄█ █
 █          ▄▀   █   █ █  ▄▀▀▀█▄   █  █ ▄ █ ▄
 ▀▄▄▄▄▄▄▄▄ ▄▀    ▀▄▄▀     ▀▄▄▄▀ ▀ █ ▀▀▀▀ ▀ ▀█
に変換するスクリプトを作ってスレを荒らすというのはどうだ?


200 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 11:22:02 ]
>>199
それくれw



201 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 12:34:25 ]
>>197-198
同じ事をするにも何通りも書き方がある,

というのとは違うのかい?正直わからん。

202 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 12:37:30 ]
>>197
2chのbbs.cgiは8年ぐらい前に流出した以外に表に出てないと思うのだが。

203 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 16:25:48 ]
>>201
perlのCGIがブームだった頃に作られた遺産がたくさん残ってる。
それらは大抵perl4時代のコードのままメンテナンスされてない。

204 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 17:32:22 ]
元々の>189からの話の流れからすると、特定のものを批判するより
これ読めってのを挙げた方がいいと思うが、定番といえそうなものがないな。

205 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 17:34:57 ]
普通に推奨本のコードを真似れば良いよ。

206 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 18:19:24 ]
ラマですね、わかります。

207 名前: ◆TWARamEjuA mailto:sage [2008/05/22(木) 20:21:28 BE:1961429-2BP(7088)]
おいちゃん=プロですね。わかるます。

208 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 20:32:50 ]
やっぱある程度面白くないとね。
mailあたりをいじってみたらどうかな

209 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 20:44:22 ]
>>189
2-gramの全文検索エンジンの試作オススメ。
リスト処理や文字列処理などまんべんなく入ってる。

210 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 20:59:36 ]
モチベーション最強は、やっぱエロだろ。



211 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 21:12:29 ]
・出版ブームが終了してまともな本が出てない
・Apache + mod_perlでも面倒なのにモジュールとか考えたくない
・webで探すとまともにメンテされてない糞ページがヒットしまくる
・Perl自体の記法が自由すぎるせいでそのページのコードが古いのかこっちの設定ミスなのでエラー出してるのか区別ができない

参入障壁高すぎ


212 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 21:37:14 ]
>・出版ブームが終了してまともな本が出てない
>>2以外の本はビブリオマニアでなければ必要ないよ。

>・Apache + mod_perlでも面倒なのにモジュールとか考えたくない
文の前後が繋がってないよ。

>・webで探すとまともにメンテされてない糞ページがヒットしまくる
Perlの疑問はググる前にperldocだよ。

>・Perl自体の記法が自由すぎるせいでそのページのコードが古いのか
>こっちの設定ミスなのでエラー出してるのか区別ができない
最新のperl(1)でもPerl4時代のコードが問題なく動くよ。
混ぜておかしくなるのは「新旧」でなく「お作法」だよ。

213 名前:デフォルトの名無しさん [2008/05/22(木) 23:42:33 ]
Perlでクロスワードパズルつくってみたいんだ
まずは その準備として単語(表記はカタカナで)とその対応説明が
登録されているデータベース(Excelでもテキストでもなんでもいい)
が必要です。どなたか知ってたら教えてください。それではおやすみ。


214 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 23:46:34 ]
>>213
っ[Wikipedia]

215 名前:デフォルトの名無しさん [2008/05/23(金) 00:01:31 ]
クロスワードパズルは数理パズルじゃなくて、おちゃらけクイズごっこだから得る物ないよ

216 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 01:46:17 ]
chasenの辞書からも取り出せるんじゃないかな。


217 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 01:51:48 ]
茶筅の辞書に言葉の意味なんて入ってないだろ

218 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 07:32:37 ]
>>213
クロスワード作るのとPerlは無関係
まず紙に書いて作ってPerlで起こす時に分からないことあったらまた質問しな


219 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 23:40:22 ]
\xe3\x80\x9cは変換できるのに、\xc2\xa2は変換できん。何故?
$PTNの内容をs///にべた書きすると変換できるようになる。何故?tr///が高速ならこんなことせんでもええのに。何故?
(ver. 5.8.5)


use encoding "utf8";use Encode;
binmode STDIN, ":utf8";
binmode STDOUT, ":utf8";

$PTN="(\xe3\x80\x9c|\xc2\xa2)";
%HASH=("\xe3\x80\x9c"=>"\xef\xbd\x9e","\xc2\xa2"=>"\xef\xbf\xa0");

while(<STDIN>)
{
s/$PTN/$HASH{$1}/geo;
print;
}


220 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 02:10:23 ]
w8ac6nxs.hp.infoseek.co.jp/cgi-bin/soldout/index.cgi

perlで書かれたCGIゲームです。
パーラーのみなさん、ユーザーとして
どうぞ登録してください。

まだプレイヤー4人くらいしかいません。

ユーザーの50%をパーラーにしたいという
計画です。



221 名前:デフォルトの名無しさん [2008/05/24(土) 03:24:15 ]
>>219
$PTN="(\x{301C}|\x{00A2})";


222 名前:デフォルトの名無しさん [2008/05/24(土) 03:26:18 ]
>>219
pc11.2ch.net/test/read.cgi/tech/1177930957/

223 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 11:07:24 ]
>>221
ダメでした。
\x{00a2}が\xc2\xa2じゃないものになってしまいます……。

224 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 11:51:07 ]
>>前スレ928の方
utf8を扱う tr/// で再帰時に落ちる件、ActivePerl 5.10.0.1003 では正常になっていました。
詳細は未確認だけど、33747 のmg.cへの修正が効いている感じ。


225 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 13:24:03 ]
>>215

英会話の勉強とか。。。perlのコマンド、モジュール名だけでできたクロスワードだったら
といてみたいかも。

226 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 13:25:32 ]
>>225
「Head First Java 第2版―頭とからだで覚えるJavaの基本 (単行本) 」
ではJavaに関連した単語でクロスワードパズルがあった。

227 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 17:26:41 ]
>>219
ソースコード中に「use utf8」の宣言が無いから、全ての文字列は、
UT8フラグの無い、シングルバイトの文字から構成されていることになる。
ネット上の情報からすると、Perl では、UTF8 フラグ
なし文字列を Latin-1 文字列とみなしている(らしい)。次に、
binmode STDOUT, ":utf8";
の宣言があるから、print 文等において文字列が出力される際には、
シングルバイトのLatin-1 文字列が、utf8に変換される。その結果、
このような現象が起きる.....ということでいいのかな?

間違っていたら、エロイ人、修正して下さい。


228 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 19:50:41 ]
だから猿用のテンプレを何で貼らんのよ?

229 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 19:58:46 ]
>>227
>>3
#!/usr/bin/perl -w
require 5.008001;
use encoding 'utf8';
print utf8::is_utf8('binary?') ? 'with utf8 flag' : 'binary';
__END__

>>228
utf8 プラグマも encoding プラグマも使わないに越した事ないし。
フラグの有無で悩むより、マルチバイト文字処理が本当に
必要な箇所でだけフラグ付け外しする方がよっぽど楽。

230 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 20:02:05 ]
つーかおまえら。
shは使わない方がいい、Perl使うべきだ。
とかいって、perlで

$test = `cat /home/test/test.txt`

とか多様してるやつってなんなの?



231 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 20:02:50 ]
Missing ;

232 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 20:22:26 ]
使うななどとどこのどいつが言ってるんだ?

ものぐさ番長=パーラーだ。

233 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 20:34:51 ]
猿用のテンプレってこれだっけ?
次スレからは入れような。

---------------------------------------------------------
#  【Perl 日本語処理の基礎の基礎】
# このレスは、Windows の ActivePerl で日本語処理を行う場合のテンプレートです。
# このレスの内容をそのまま、UTF8 形式のソースファイルに保存して下さい。
# 入出力ともシフトJIS形式のファイルまたはDOS窓を想定しています。
# まず、以下の行を先頭に入れて下さい。
use utf8;
use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)";
# 次に、あなたが実行したい処理の内容を入れて下さい。
print "SJISには、「十表貼申予暴」のようなダメ文字がある。\n";
sleep(1);
# 以上の内容は、日本語処理が解らない人でも、とりあえず日本語処理ができてしまう
# おまじないです。条件が異なる場合の対処方法は、ご自分で勉強して下さい。



234 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 02:05:50 ]
>>230

if( `[ -f /home/test/test.txt ]` ) {
 $test = `cat /home/test/test.txt`;


235 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 21:58:51 ]
>>219です。
結局、\xc2\xa2の置換は諦め、別ツールで提供することになりました。
別のバージョンとか調べている時間がない……。

236 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 22:16:31 ]
>>234
if( -f /home/test/test.txt ] )
{
$test = `cat /home/test/test.txt`;
}

237 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 22:17:11 ]
>>234
if( -f /home/test/test.txt)
{
   $test = `cat /home/test/test.txt`;
}

238 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 22:57:43 ]
普通

my $test = `cat /home/test/test.txt` if(-f /home/test/test.txt);

だろ

239 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 01:22:49 ]
>>238
>>230


240 名前:デフォルトの名無しさん [2008/05/27(火) 22:41:24 ]
C言語のプラグラミングできたお。

void main(int argc, char**argv)
{
 system("cat /home/test/test.txt");
}



241 名前:デフォルトの名無しさん [2008/05/27(火) 22:48:04 ]
www.amazon.co.jp/dp/4871483517

これが書かれた頃は perl など無かったが
まさに、system() 関数使いまくろう!的な内容。

242 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 00:33:29 ]
cでやるとすごく損した気になるんだよなあ


243 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 18:50:42 ]
perlでやっても損でしょ。
perlでできる処理はperlでできるだけやるべき。

catとか。

244 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 19:08:58 ]
>>243
確かにそうなんだけど、catについてはそうかな〜。

perl だったら、open,while,colose (またはread)とかで三段処理踏まないといけないから、
cat なんかは $test = `cat file.txt` なんかはよく使う。
実際どっちが早いとかBenchとったことはないけど・・・。

245 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 19:09:46 ]
失敬、close間違い

246 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 19:12:39 ]
かなり遅いよ、perlで外部コマンド実行したら。

相当な差がある。
コード的には段階踏んでるが。

247 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 19:20:10 ]
一つ関数を書くか、CPANから探してきて使うだけでしょ

248 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 19:36:06 ]
qxはforkしてshell起動して実行して・・・って感じなので
perlだけで終わらせたほうが圧倒的に早い

File::Slurp使うか、入れるのめんどくさかったら
sub slurp {open my $fh , $_[0] || die("$_[0]:$!");local $/;<$fh>}
って書いとけばOK


249 名前:244 mailto:sage [2008/05/28(水) 20:06:16 ]
いやいや、そりゃあ自分も本格的な(?)スクリプト書く時や、
複数のファイルにループ処理する時はサブルーチンで書いたりするよ。

そうでなくて、ちょっとした確認とかで数行のスクリプトとか、
コマンドラインからのワンライナーみたいな感じで書く時には便利かな ってゆうぐらい。

そんな時にまで、いちいち、useやrequireやsub{}なんて書きたくないじゃん。

250 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 20:21:38 ]
>>244
数行だとか、処理速度とか処理効率を考えなくていいなら便利。
あくまでコマンドレベルの用途ね。

ただ不明なのが、
>サブルーチンで書いたりする
ってとこ。

関係が不明なんだけど。



251 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 20:50:01 ]
むっか〜しは、sortは外部コマンドでやってたりしたもんだ。

環境やバージョンが変わったら、こまめにベンチマーク取って
最適の方法を探らないとね。

252 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 21:09:03 ]
「cat を使う」
…ねえ。知ってると思うけど
$ cat > foo.pl
#!/usr/bin/env perl -n
print ;
}
{
print "foo\n" ;
# control + D をタイプ
$ perl foo.pl foo.pl foo.pl
$ perl -lne '}{ print $. ;' foo.pl



253 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 21:25:17 ]
そいつは初耳だ
解説よろしく

254 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 21:46:36 ]
>>253
optionに関しては perl -h するなりで
-n assume "while (<>) { ... }" loop around program
-p assume loop like -n but print line also, like sed
で実際の挙動を見るには
perl -MO=Deparse -ne 'print;'
この結果を見ると while ループで単純にかこってあるだけだから
ループの終りの「}」と無名ブロックの始まりの「{」を入れて
好きな様に処理させる。
応用すれば、「tsvの第二カラムの積算」なんてのは
perl -lane '$t += $F[1] ; }{ print $t ;' FILE

スクリプトファイルにしたときも同じ事。B::Deparse にて確認して。
perl -MO=Deparse foo.pl
あとはお好みに。これで手に負えない時とかstrict適用したい時は
普通に書きゃいいだけだし。


255 名前:244 mailto:sage [2008/05/28(水) 22:41:30 ]
>>250
それは、>>247>>248に対するレスで、例えばopen();while(){うんたらかんたら・・・}close();を
一まとめにしたサブルーチンなんかに投げるってこと。

いや、スマン。244で速度のこととか言い出したんだけど、
自分が言いたかったことは、>>240-243までの流れで、ちょっとした処理(>>240とかw)を
わざわざCで書いたんなら、かなり損した気分になるのは大いに理解できるけど、
それをperlでやるのは、そんなに損した気にはならない、
ってゆうか、perlだからこそ、$nakami = `cat file.txt`;や@files = `find ・・・`;
みたいな事が手軽に出来る、ってのが、perlの大きな魅力の1つではないかと自分は思ってる。
ってことを言いたかった。

>>252
それはオレも初耳。
完全に理解しきれてないけど、色々応用が効きそうだ。

256 名前:デフォルトの名無しさん [2008/05/28(水) 23:31:00 ]
>>246
>>248
「かなり」 とか 「圧倒的に」 とか、ずいぶんアバウトだな。
そんなんじゃ全然説得力が無い。

たとえば、$a = `cat unko.txt` すると 0.1秒かかるとしよう。
open・read・close すると0.01秒しかかからないとしよう。
で?それが何なの?どうなのよ、って事だ。
えっ?10倍早いだって?
おいおい、0.1−0.01=0.09秒しか違わないんだよ。
たったの0.09秒の差を人間が感じ取れるとでも思うの?
アフォくさ。

257 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 23:34:30 ]
>>256
whileかけるようになったらまたおいで。

258 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 00:09:41 ]
>>256
一回だけ処理するならその程度で済むかもね。

259 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 00:29:53 ]
svn より、cvs のほうがインストールの敷居は低いんじゃないかなぁ。
cvs のほうが依存するライブラリ少いし、FreeBSD なら最初から入ってるし。

260 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 00:42:12 ]
俺はsubversion派だわ

って誤爆か



261 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 13:56:47 ]
誤爆じゃないだろ。perldoc.jpの話じゃね?

262 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 15:29:41 ]
my $message = "He is 5 years old\n";
$message =~ s/(\d+)/{ twice($1) }/e; #数字を検索して、2倍して置換
print $message;

これなのだけど
my $message = "He is 5 years old\n";
$message =~ s/(\d*)/{ twice($1) }/e; #数字を検索して、2倍して置換
print $message;

これじゃダメなのはなんで?

263 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 15:35:34 ]
* は0回以上の繰り返しだから、先頭でマッチする。

264 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 18:45:13 ]
(\d*)

全てが任意なので、全ての行で置換が行われることに

265 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 18:47:59 ]
先頭つーか、全ての文字の間にマッチする。

266 名前:265 mailto:sage [2008/05/29(木) 18:48:46 ]
\d\d*

でやってみ。

267 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 19:34:03 ]
>>265
egじゃなくてeだから、この場合は先頭だけだろう。

268 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 21:48:26 ]
お、eをgと見間違えたわ。

269 名前:デフォルトの名無しさん [2008/05/29(木) 21:59:34 ]
いーじーさんにつーれられーてー・・・
いや何でもない

270 名前:デフォルトの名無しさん [2008/05/29(木) 22:23:27 ]
逝っちゃった



271 名前:デフォルトの名無しさん mailto:sage [2008/05/29(木) 23:56:31 ]
横浜港 乙

272 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 03:29:45 ]
港のヨ〜(ry

273 名前:デフォルトの名無しさん [2008/05/31(土) 19:56:52 ]
cpan起動出来なくなりました。

#cpan
Unable to get Terminal Size. The TIOCGWINSZ ioctl didn't work.
The COLUMNS and LINES environment variables didn't work. The resize program didn't work.
at /usr/local/lib/perl5/site_perl/5.8.3/i386-freebsd/Term/ReadKey.pm line 362.
Compilation failed in require at /usr/local/lib/perl5/site_perl/5.8.3/Term/ReadLine/Perl.pm line 63.

とエラーが出ます。
恐らく、perlのバージョンアップした際に不具合が生じているのかと思うのですが・・・。
ネットで解決法を探すも情報がほとんどなく手がかりもつかめません。

perl v5.8.3
OS FreeBSD 4.2-R

助けて下さい。お願いします。

274 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 20:09:04 ]
もっかいCPANインスコしなおせばいいじゃん

275 名前:273 [2008/05/31(土) 21:57:38 ]

インストールしなおしてみましたが、ダメでした。
同じ症状です・・・。トホホ。

276 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 21:58:41 ]
12 May 2008 20:15:40

2008/05/12 20:15:40
という風に返すモジュールないですか?



277 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 22:02:33 ]
>>273
どこでおかしくなっているか明示されているんだから、
見てみればいいだけ。

278 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 22:19:44 ]
>>276
use HTTP::Date qw(str2time time2iso)
print time2iso( str2time("12 May 2008 20:15:40") );

279 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 22:22:11 ]
ああスラッシュ(/)か >>278 なし

280 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 22:27:06 ]
>>276
Date::Manipかな。日付を扱うならDate::Calcとともに定番。

perl -MDate::Manip -e 'print UnixDate("12 May 2008 20:15:40", "%Y/%m/%d %H:%M:%S")'



281 名前:276 mailto:sage [2008/06/01(日) 00:57:56 ]
>>278
>>280
280氏のDate::Manipで解決できました。ありがとうございました。


282 名前:デフォルトの名無しさん [2008/06/01(日) 04:50:03 ]
activeperl v5.10.0 built for MSWin32-x86-multi-thread
において

 GD v2.39
 GD::Graph v1.4308
 GD::Text v0.86





use GD;
use GD::Text;

use GD::Graph::bars;
my $graph = GD::Graph::bars->new( 800, 800 );
my $gd_text = GD::Text->new();
GD::Text->font_path( _______DIR______);
$gd_text->set_font(_______FONT______, 178) ;#or die $gd_text->error;
$graph->set_title_font(_______FONT______, 178 );


_______DIR______ = undef | '' | 何か意味のある値
_______FONT______ = undef | '' | 何か意味のある値

をWindowsXP SP2あるいはWindows2k SP1で実行したとき
どうもシステムのフォントを破壊?するようです


283 名前:232 [2008/06/01(日) 04:57:25 ]
以下windows板に書いた物。

windows XP

起動してみると ”ようこそ”が明朝体になってて
ファイル名の全角空白までも文字化けしている状態になりました。

標準で恐らく第1水準漢字が表示できたりできなかったりするフォントが選択されているようです。
検索 -> 索 が表示できない
削除 -> 削 が表示できない
書き込む −> 込 が表示できない

またcmdで日本語が返ってくるような状態
>> c:\hoge\foo.bar (実際には存在しないファイル)
とかタイプすると ■■■■■ ■■■■と文字化けして
(ファイルが見つかりませんとかそんな感じのメッセージ)と返ってきます。

support.microsoft.com/kb/880991/ja
に従ってフォントキャッシュを消して再起動しても改善されませんでした。


Windows 2000 SP1では IE6の検索ウインドウに英字を入れるとイタリックに化ける
という共通してんだか共通してないんだかな現象が発生します。


232に書いたコードを実行したときに即に破壊するわけではなく、次回起動時から影響が出始めるので
何がどうなってるのかまったく分からない上に妙な分野にまたがった問題のために、
5時間戦って何にも戦果が上がらずもう疲れたのでとりあえずよし牛でも行ってからOS入れなおすことにしますた。

GD(GD::Textだと思うんだけど)使うときは気をつけてください。

284 名前:282 mailto:sasge [2008/06/01(日) 05:17:28 ]
すみません、 訂正 283 で s/232/282/g; で読んでください。
再現したくないのでぜんぜん検証ができないのですが
これはCPANの作者さんにも報告したほうがいいのでしょうか?

285 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 17:00:58 ]
ヤフオクの管理をしようと思います

とりあえず出品リストを作ろうと思って、
openuser.auctions.yahoo.co.jp/jp/user/my46giga
の内容の取得をしようと思っても、アダルト商品なので表示されません
クッキー周りだと思うのですが、うまくいきません
書いてみたのは下のようなもので、
yahoo_cookieにはadministrator@auctions.yahoo.co[2].txtの内容を
#LWP-Cookies-1.0
Set-Cookie3: YAUC_AV=.....
みたいな感じでコピーしてあります
どこが間違っているのでしょう

use LWP::UserAgent;
use HTTP::Request::Common;
use HTTP::Cookies;
use Encode;
$cookie_file = 'yahoo_cookie';
my $cookie_jar = HTTP::Cookies->new(file => $cookie_file, autosave => 1);
$ua = LWP::UserAgent->new;
$ua->cookie_jar($cookie_jar);
$req = GET "openuser.auctions.yahoo.co.jp/jp/user/my46giga";
$res = $ua->request($req);
print $res->content;

286 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 17:12:13 ]
どういう風にできないの?

287 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 23:15:25 ]
要素に配列への参照か文字列を含んだ再帰的な配列を出力するプログラムを作ろうとしているのですが
ややこしくてついアイスに手を出してしまいます。
どうすれば幸せになれますか

my @a=(1,2,3);
my @b=qw(a b c);
my $c=[\@a,\@b];
my $aa=[1,2,3];
my $bb=[4,5,6];
my $cc=[\$aa,\$bb];
sub pr{
    my($depth,$ary_ref)=@_;
    if((ref $ary_ref) eq "ARRAY"){
        foreach (@$ary_ref){
            pr(($depth+1),$_)
        }
    }elsif(defined $$ary_ref){
        print $depth,":",$$ary_ref,"do something\n";
    }else{
        print "do nothing\n";
    }
}
pr $cc;
pr $c;


288 名前:287 mailto:sage [2008/06/02(月) 08:56:48 ]
自己解凍しました。

289 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 11:07:13 ]
書きたかっただけだろw

290 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 12:34:14 ]
sendmailで受信したメールを、procmailからperlスクリプトを起動して処理しているのですが処理結果ない場合があります。
どこかでエラーが出て止まっていると思うのですが、エラー内容をファイルに出力できないでしょうか?
.procmailrcを

:0
|perl ./foo.pl 2>&1 > ~/out.txt

としてみましたがout.txtにはなにも出力されませんでした。(空ファイル)



291 名前:デフォルトの名無しさん [2008/06/02(月) 12:44:59 ]
Windows だとその書き方はダメで
perl ./foo.pl > ~/out.txt 2>&1
というふうに 2>&1 を後ろにもっていく必要がある。
Unix 系はどうか知らん。

292 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 12:55:40 ]
2>&1は後ろに持っていくはず。
Unix系でも。

293 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 13:42:21 ]
perl ./foo.pl 2> ~/out.txt

じゃだめだっけ?

294 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 14:45:45 ]
>>290
リダイレクトは左から評価されるんで、順序に注意汁ってこったな

2>&1みたいのはイメージ的には $b = $a みたいな変数のコピー
>~/out.txtみたいなのは $a = "hoge" みたいな代入
と思っておけば、イメージ的にはほぼ間違い無い

$b = $a;
$a = "hoge";
とかやっても、$bは"hoge"にならないでしょ
逆順だと上手くいくけど

295 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 19:03:12 ]
少しそれるが、この右からとか左からとかってのは結局のところ
対象の言語の実装がfastcallとかstdcallとかってことかね

296 名前:290 mailto:sage [2008/06/02(月) 19:33:01 ]
>>291-294
ありがとうございます。解決しました。
perlじゃなくてshellの問題でしたね。すいません。
294氏のイメージは理解しやすかったです。


297 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 21:15:52 ]
binmode(STDOUT);
と指定したものをテキストモードに戻すにはどうしたらよいでしょうか?

298 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 21:40:55 ]
binmode(STDOUT, ":crlf");

perlfunc読めよ糞が

299 名前:デフォルトの名無しさん [2008/06/02(月) 22:59:05 ]
     ↑
キミ、後輩を育てられないタイプだね。

300 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 23:06:24 ]
うん。自分でもそう思う。
でも、いまのところ自営業で後輩いないからなんとかなってる。



301 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 23:11:36 ]
相手に糞とか言う輩は、殆どの場合己がそうだから。

302 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 23:31:02 ]
相手をくそとか言う輩は,ほとんどの場合周囲からくそと言われてるから。

303 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 00:41:30 ]
>>301
> 相手に糞とか言う輩は、殆どの場合己がそうだから。

調査不可能なことを断言する嘘つきの出現です。

304 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 02:06:42 ]
断言してないような

305 名前:デフォルトの名無しさん [2008/06/03(火) 02:30:56 ]
質問してもいいでしょうか?
winxp sp2を使っていて、activeperlを入れています。

パソコンのボリュームの調整をするコードを書きたいのですが、
perlからでもそういうのはいじれるのでしょうか?

メイン音量・WAVE、あと、wmpなど音楽再生ソフトの音量もいじりたいです。
どこか参考になるサイトなどありますでしょうか?

306 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 03:48:25 ]
なんでperlで?
VBでも使った方が良くね?

307 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 07:37:39 ]
>>305
どうしてもPerlでやりたいなら、Win32APIをつかえば?
それ以上は、Perl関係ない。


308 名前:デフォルトの名無しさん [2008/06/03(火) 17:03:21 ]
use utf8;
binmode STDOUT, ':encoding(cp932)';

このコードを他のOS環境で使うためには
:encoding(cp932) を手作業で書き換えてもらってるんですが
自動取得することはできますか?
そのOSのデフォルトのコードページとかエンコードとかを
自動取得することは出来ますか?

309 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 17:32:59 ]
>>308
「そのOSのデフォルトのコードページとかエンコードとか」というのが
そもそも不明。



310 名前:デフォルトの名無しさん [2008/06/03(火) 18:18:44 ]
>>308
OSごとにデフォで使われてる文字コードを完璧に判定することはできない。

同じ記述なら一括で置き換えればいいだけだし
共通する部分なら最初に開発した段階で
定数なり関数なり作ってそこに定義しておくべきだった。



311 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 19:03:49 ]
>>308
OS名や環境変数で、ある程度は判別できるだろうね。


312 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 20:04:39 ]
>>311
> OS名や環境変数で、ある程度は判別できるだろうね。

「そのOSのデフォルトのコードページとかエンコードとか」が存在するかどうか
とか、それを守っているのかとか、そもそも一貫性があるのかとか
はいちいち調べないとね。



313 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 20:21:42 ]
出力の話なんだから環境変数LANGみて空ならCP932にするだけで
ほぼ解決しないかな?


314 名前:デフォルトの名無しさん [2008/06/03(火) 21:48:18 ]
中国とかフランスとかドイツの Windows って、環境変数 LANG に何て設定してあるの?

315 名前:デフォルトの名無しさん [2008/06/03(火) 22:25:52 ]
そもそもUNIX系OSには「OSのデフォルトのコードページとかエンコード」なんて概念自体無いわけだが。
LANGはOSのデフォじゃなくて、「その人が端末に表示したいエンコード」。
端末装置はユーザごとに異なるのが当たり前・・・というUNIXの基本を忘れてるよ。

んで、メンド臭いなら全部 UTF8 にしたら?
今時のWindowsのメモ帳ならUTF8開けるよ。

316 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 22:29:21 ]
Unix環境なら
use open ":locale";
とかでよきに計らってくれるようだが
Win32だと良い方法はないかも

317 名前:デフォルトの名無しさん [2008/06/03(火) 22:32:43 ]
> use open ":locale";

これも駄目。
何故なら、プロセスの実行環境と、その出力を閲覧するユーザのlocaleが一致する保証は無いから。

318 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 22:36:41 ]
>>317
それが「いい」か「だめ」かはケースバイケースでしょ。

それで少なくとも伝統的なUnixのI18N/L10Nプログラムと同じ動作にはなる。
Cでsetlocale(LC_CTYPE, "")するのとほぼ同じだから。

無論、設定ファイルや何かでオーバーライドできるようにすることが
望ましいけどね。

319 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 22:37:25 ]
>>313
他国語版使ったこと無いから知らんけど、cp932が有効なのが
そもそも日本語版Windowsだけなんじゃないかな。

>>314
中国はbig5?(と思ったら、Windowsでは、GB2312(cp936)らしい??)
フランス等ラテン語件はlaten-1(ISO-8859-1)なんじゃね?(cpだと1252)

>>316
VCからなら、locale取得したり、変更したりする関数があったハズ。
Win32APIから叩けそうな気がするけど、どうなんだろ。

まあ、日本語環境のみで使用するってんなら、>>313でええかも。

320 名前:305 [2008/06/03(火) 23:32:11 ]
>>306
CGIでPerlをかじりました。
実行ファイルにしてしまえば(自分のパソコンにはperl入ってるので不要ですが)Perlで問題ないと思いました。
Perlではwindowsを操作するようなプログラムはかけないなんてことはないと思ってたんですが。

特に簡単なのなら言語なんてほとんどなんでもいいのかと。

>>307
win32apiとやらを調べてみます。



321 名前:デフォルトの名無しさん [2008/06/04(水) 01:36:05 ]
>>315
UNIXのメモ帳で端末のエンコードが変更できるんですか?

エンコードの概念が無いなら、いったいどうやって漢字を表示するんでしょう?
テキストファイルをopenするのに、いったい何のコードでデコードすればいいんでしょう?

322 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 02:00:32 ]
>>321
> UNIXのメモ帳で端末のエンコードが変更できるんですか?

「UNIXのメモ帳」という謎の概念が提示されました。



323 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 02:01:13 ]
viとemacsの戦い

324 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 02:02:10 ]
ああ、いるんだよ。別なOSを「別なWindows」だと思ってるやつ。

325 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 02:08:47 ]
しばらく俺の雇用は安泰だな

326 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 04:11:02 ]
まあ、確かにメモ帳ライクな外見&操作を意識したテキストエディタはあるけどな。
それならUNIXのメモ帳と言っても何ら差し支えは……。

327 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 05:04:24 ]
>>322
> > UNIXのメモ帳で端末のエンコードが変更できるんですか?

これ全体が謎なんだな。

328 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 07:03:52 ]
>>320
Perlもモジュールだなんだでいろいろ出来るようにはなったけど
基本はテキスト処理をするための言語だぜ?

ちょっとじかじったくらいなんだったら
それに適した言語をかじり直したほうがたぶん早いよ


329 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 08:25:15 ]
>>320
win32apiをPerlから使うのは結構面倒なので、場合によるだろうけど、>>305をみると、Perlでコーディングする意味はないと思う。
やってで気ないことはないけど、適材適所ってヤツがある。
VBだと金がかかるという場合、もしVista使ってるならサイドバーガジェットという選択肢もあるかな。


330 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 10:48:24 ]
>>319
ちょっとやってみた感じだと、ActivePerlでもPOSIXモジュールのsetlocale()は
機能する模様(実際にはMSVCRTのsetlocale()を呼んでいるのだろう)

use POSIX qw(locale_h)
$old_locale = setlocale(LC_CTYPE, "");
とかやると、Japanese_Japan.932とかいう文字列が帰ってくる。
.の後ろがコードページのはず。

cygwinみたいにロケールが完全に腐ってる環境ではどうしようもないけどな。




331 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 00:25:55 ]
>>323
おーっと、ここで 「ed・はるみ」 が乱入w

332 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 05:42:10 ]
帰れカス

333 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 10:17:09 ]
Kwaliteeってなんですか?

334 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 15:09:00 ]
$ ed
hello, world
?
help
?
quit
?
exit
?
q
?
?
?
--help
?
-help
?
fuck
?


335 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 16:18:29 ]
ワロた

336 名前:デフォルトの名無しさん [2008/06/05(木) 20:11:12 ]
open FILE, '<:utf8', "unko.txt";
read FILE, my $content, (stat FILE)[7];
close FILE;

この (stat FILE)[7] の部分が、見た目が汚く感じるんですが
もっと美しい書き方はありませんか?
read FILE, my $content, 9999999999; とか、死んでもイヤです。
どっかのクソ言語の ReadAll メソッドみたいなのが欲しいです。

337 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 20:13:08 ]
open my $file, '<:utf8', "unko.txt";
my $content = do{local $/; readline $file}
close $file;

338 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 21:12:54 ]
-s FILE

339 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 21:16:32 ]
>>336
っ[File::Slurp]

340 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 00:13:26 ]
my $content = join("",<FILE>);



341 名前:デフォルトの名無しさん [2008/06/06(金) 00:39:53 ]
>>338
そっか、それがあったか。それ使わせてもらいます。感謝感謝。
あとの残りはクズですね。

342 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 00:46:36 ]
全部読むなら$/をクリアするのが常套手段だろ。

343 名前:デフォルトの名無しさん [2008/06/06(金) 00:59:50 ]

OBJS = ${CSRC:.c=r30}

.c.r30:
${CC} $<

Makefile中の$<をPerlを使って置換してCCに渡すことは可能でしょうか?

$<に含まれているスラッシュを\\に置き換えるために
$< =~ s|/|\\\\|g
このような置換を行いたいです。
環境はCygwinPerl5.8.8です。

344 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 01:00:03 ]
>>341
どうやって使うの?

345 名前:デフォルトの名無しさん [2008/06/06(金) 01:11:15 ]
sub write {
 ($fileName, $text) = @_;
 open(FH, "+>$fileName");
 print FH $text;
 close(FH);
}

こんな感じでファイルを出力するコード書いたのですが、
サブルーチン経由だとなぜか動きません
サブルーチンなしだと正しくファイルが書き出されました
なにがおかしいのでしょうか

346 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 01:21:24 ]
writeという標準関数があるから

347 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 01:52:38 ]
>>346
writeという標準関数の存在しりませんでしたが
今回はなぜこのコードが動かないかについてよろしくお願いします

というのも、同じ仕様(関数名,引数,戻り値)を複数の言語で記述してみてるだけなのです


348 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 02:11:42 ]
組み込み関数を再定義するためにはお作法がある。writeが再定義可能かは知らん。
perlsub読むか、親切に解説してくれるおせっかいが通りかかるのをまて。

349 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 02:23:57 ]
あ、なるほど そういう意味でしたか
文法自体はあってるんですね
ありがとうございます

350 名前:デフォルトの名無しさん [2008/06/06(金) 02:35:57 ]
&writeでもだめなのかな。



351 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 08:19:33 ]
>>349
ほかにどういう意味だと思ったんだ?

352 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 08:22:01 ]
>>343
makeのsubstやpatsubst関数じゃだめ?



353 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 08:33:28 ]
perlを始めたばかりなのですが、
foreachやwhile等で、何回目のループかをカウントしているような
変数は無いでしょうか?
自前で用意すればいいだけなのですが、そのような変数が無いかと思い
質問させて頂きます。

354 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 11:20:21 ]
あったとしても、時前で用意した方が他の人も読み易いんじゃないかな。

355 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 11:57:16 ]
そういえば、不精なPerlのハッカーたちは、foreachを使わずに全てforを使う……だなんて
どこかに書かれてたような気がするけど、実際どう?

自分は使い分けてる。

356 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 12:02:27 ]
自分は for かな後ろ見りゃわかるし。
foreach で (;;) とかやらなきゃどっちでも良いとは思う。



357 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 12:08:14 ]
forもforeachも一緒じゃないの?ただのシンタックスシュガーかと思ってたけど

358 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 12:17:35 ]
>>357 それを前提として書いたつもり。

a) for my $n (0..9) {}
b) foreach (my $n=0; $n<10; $n++) {}

a は許容できるが、b は嫌かなってこと。






359 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 12:21:56 ]
for しか使わね。それと、C type の for は使わね。

360 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 12:29:16 ]
俺も同じくforのみ



361 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 13:32:56 ]
どうでもいい。
んで、暗黙のループカウンタなんてあったら言語仕様としてきもい

362 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 15:39:58 ]
C言語の const 変数の様なのは定義できないでしょうか? perl 5.8です。

363 名前:356 mailto:sage [2008/06/06(金) 16:14:23 ]
んー、やっぱforだけとかの人のほうが多いのね。
まさにPerlスタイル。

>362
use constantとかはー?


364 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 17:02:47 ]
use Readonly ;
>>361
$. は?w


365 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 17:07:46 ]
つまりキモイってことですよPerlはw

366 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 17:19:32 ]
柔軟な頭を持ってない奴が負け惜しみを言ってますw

367 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 17:23:44 ]
ゴミを美味いと思う自分の狂った味覚を「柔軟さ」と主張する人生ですかw

368 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 17:31:57 ]
君がゴミだと思って捨てていた部分は実は高値で取引される珍味でした。


369 名前:デフォルトの名無しさん [2008/06/06(金) 17:56:23 ]
>>362
Cライクにやりたいなら
use constant NAME => 'hoge';

ただし Perlでベアワードはメンドくさい。
"my name is NAME"
とやっても展開されないから
"my name is ".NAME
とするしかない。

*NAME = \'hone';
これを使えば
"my name is $NAME"
で展開できる。

*C_STR = \'xxxx'; # 文字列定数。参照は $C_STR
*C_NUM = \100; # 数値定数。参照は $C_NUM
*C_ARRY = [1,2,3]; # 配列定数。参照は @C_ARRY
*C_ASSOC = {k1 => v1,k2 => v2}; # ハッシュ定数。参照は %C_ASSOC

370 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 18:04:39 ]
>>368
まぁ、珍の字はニュアンスぴったりだと思うよ。
Perlの仕様を漢字一字で表せといったら、珍・奇・醜・糞あたりが有力だろうし。



371 名前:デフォルトの名無しさん [2008/06/06(金) 18:44:43 ]
forは数値カウンタのときやCライクな使い方のとき。
配列から読み取るってときはforeachにしてるな。こっちはPHPぽい方で

372 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 18:45:22 ]
>>370
あれ?なんでわざわざこのスレに?

373 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 18:50:29 ]
・上にあがってるから
・Perlを盲目的に全肯定するキチガイだけが住人ではないから

374 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 19:03:32 ]
誰も全肯定なんてしとらんがな・・・

375 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 19:41:58 ]
それを言ったら、誰も負け惜しみなんて言ってないよな。

376 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 20:34:35 ]
>>373
ゲテモノだってのは認識しとる。

377 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 21:41:28 ]
>>352
レスありがとうございます。
substを使ってうまくいきました。
ありがとうございました。

378 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 22:15:29 BE:477576296-DIA(100004)]
まず匿名の臆病者は自分の (好きな|メインの) Lightweight Language を言えよ

379 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 22:52:56 ]
BER圧縮された数値(オフセット値、ID)のビット列に対し、
二分探索法を行なっている実装例ってありませんかね?

380 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 01:02:59 ]
そういうのはCでやった方が



381 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 14:17:18 ]
>>378
できるよ。
以上。
↓次どうぞ

382 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 00:21:35 ]
↑おつかれさまでした

383 名前:デフォルトの名無しさん [2008/06/08(日) 19:02:55 ]
他のファイルに変数を設定したファイルを用意し、
そのファイルを読み込み設定された変数を利用したいのですが、
どのようにすれば実現できますか?

384 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 19:05:01 ]
そのようにすれば

385 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 19:13:01 ]
そういうふうにプログラムすりゃいいでしょ

386 名前:383 mailto:sage [2008/06/08(日) 19:14:47 ]
すみません。
サンプルコードなど頂けませんでしょうか?

387 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 19:16:05 ]
do "configs";

388 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 19:17:30 ]
D'OH !

389 名前:383 mailto:sage [2008/06/08(日) 19:19:09 ]
reqireでできました。

阿呆しか答えてくれないので、聞く手間をかけずに調べれば良かったですね。

390 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 19:26:32 ]
reqireなんてあったか?



391 名前:383 mailto:sage [2008/06/08(日) 19:26:33 ]
>>389は私ではありません。
requireも試してみたのですが、変数の値が継承されないようで
うまくできませんでした。

>>387
ありがとうございます。
試してみたのですが、requireと同じように変数の値が継承されません。
doと言うものを調べたのですが、while文のdoしかなかなか見付からず
使い方が悪いのかも知れません。
すみませんが詳しく教えて頂けるとありがたいです。


392 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 19:28:41 ]
まず自分で調べる手間をかけずにいきなり聞くという方法で何か学ぼうとするのもなんだかなあ…。
何かを知ろう学ぼうとするなら知る学ぶ為の正しい手段を取るべきだと思うけどなあ…。

393 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 19:42:06 ]
>>391
perlfunc嫁

394 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 19:49:07 ]
何ができないと言っているのかがわからない

395 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 19:59:13 ]
1行ずつ読み込んでdoじゃだめなわけ?

396 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 20:18:32 ]
doはファイル名を引数に取るわけだが

397 名前:デフォルトの名無しさん [2008/06/08(日) 22:03:27 ]
open FILE, "unko.pl";
read FILE, my $unko, -s FILE;
close FILE;
eval $unko;

398 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 22:04:06 ]
それならdoでいいだろ。

399 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 22:32:17 ]
関係ないけど do-dai っていい曲だよね

400 名前:デフォルトの名無しさん [2008/06/09(月) 01:10:43 ]
WinXP、perl5.8.8、でPerl/Tkからボタンを押した時にthreadsを使ってバックグラウンド処理をしようと考えています。
バックグラウンド処理そのものは最後まで実行されますが、終了同期を取ろうとjoinを呼び出した時に、クラッシュして更に、Free from wrong pool during global…
となります。

これを回避出来た猛者はいますか?





401 名前:有吉 ◆01z1p9gzeo mailto:sage [2008/06/09(月) 01:43:25 ]
子プロセスから親プロセスのTkウィジェットにアクセスするとactiveperlが落ちてしまいます。
$top = MainWindow->new();
$frame1=$top->Frame(-height=>25)->pack(-side=>top,-fill=>'x',-expand=>'no');
$listbox1 = $frame1->Scrolled('Listbox',-scrollbars=>'osoe')->pack(-fill=>'both',-expand=>'yes');
$listbox1_ref = \$listbox1;
if ($pid = fork()) { MainLoop; }
else { &refresh($listbox1_ref); }
sub refresh {
my $listbox1_ref = shift;
$$listbox1_ref->delete(0,'end');
opendir(DIR,'mail/');
@file = sort readdir(DIR);
@file = grep(!/^\.\.|^\./,@file);
foreach(@file) {
my $time = localtime((stat "mail/$_")[9]);
$$listbox1_ref->insert('end',$time);
}
}
ログには
Free to wrong pool 1ec5020 not 274dc8 at C:/Perl/site/lib/Tk.pm line 250.
と出て終わってるようです。refreshの処理中に落ちてるみたいです。
ググったところ、同じ症状の方もいるようですがこの場合の解決策が見つかりませんでした。
子プロセスから親プロセスのウィジェットにはアクセスできないのでしょうか?ご教授ください。OSはWinXP SP2です。

402 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 01:44:44 ]
改行が多すぎると怒られたので
色々はしょったら読みづらくなりました。
大変申し訳ないです。。

403 名前:デフォルトの名無しさん [2008/06/09(月) 11:00:13 ]
>>398
キミ、シロウトだね。

404 名前: ̄ ̄ ̄ ̄ ̄V ̄ ̄ ̄ ̄ ̄ ̄ ̄ mailto:sage [2008/06/09(月) 11:09:09 ]
        ,. -ー冖'⌒'ー-、
       ,ノ         \
       / ,r‐へへく⌒'¬、  ヽ
       {ノ へ.._、 ,,/~`  〉  }    ,r=-、
      /ク ̄`y'¨Y´ ̄ヽ―}j=く    /,ミ=/
    ノ /ル'>-〈_ュ`ー‐'  リ,イ}    〃 /
   / _勺 ミ;;∵r;==、、∴'∵; シ    〃 /
  ,/ └' ノ \   こ¨`    ノ{ー--、〃__/
  人__/ー┬ 个-、__,,.. ‐'´ 〃`ァーァー\
. /   |/ |::::::|、       〃 /:::::/    ヽ
/   |   |::::::|\、_________/'   /:::::/〃

405 名前:383 mailto:sage [2008/06/09(月) 11:24:22 ]
すみません。私の書き込みが悪いとおもうので、再度書き込ませていただきます。

-- define.pl ------
my $hoge = "hoge";

-- body.pl ------
do "define.pl";
print $hoge;

というファイルがあったとしても、body.plでdefine.plの変数が使えません。
どのようにすれば、他のファイルの変数を使えるようになりますか?

406 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 11:33:56 ]
myしてやがる……

407 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 11:39:48 ]
>>405
なんというオチ

408 名前:デフォルトの名無しさん [2008/06/09(月) 12:31:41 ]
いぢわるしねいで、ちゃんと教えてやれよ。
my じゃなく、 our で宣言しろって事だよ。

409 名前:383 mailto:sage [2008/06/09(月) 13:03:46 ]
そんなのがあったのですね・・。
簡単に本を読んだのですが、myとlocalがあってmyを普通使う。localはあまり使わない。
という説明でした・・。

リャマ本というのを簡単に確認したのですが。ourって載ってます?
見つけられなかったのですが。

410 名前:383 mailto:sage [2008/06/09(月) 13:04:12 ]
お礼を言い忘れました。

お手数をおかけしてすみませんでした。
ありがとうございました。



411 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 13:22:51 ]
最初から405かいときゃ無駄なレスしなくていいのに
jこれだから小出しするやつはうぜぇ

412 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 13:38:55 ]
>>409
アルパカ本に載ってる。

413 名前:273 mailto:sage [2008/06/09(月) 13:41:12 ]
>>273

自己レス
いろいろと遠回りしたけど、ReadKey.pm入れ直しで
スンナリ解決しました。

ハァ・・・、なんですぐにやらなかったのか。
自己嫌悪だわ。
何時間費やしとんねん!


414 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 13:43:11 ]
>>410
こんな感じ↓
ttp://blog.livedoor.jp/dankogai/archives/50982802.html

415 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 13:46:16 ]
思うんだけど,この業界の人って,自分で調べたことに対して疑問を抱いた!みたいな
感じでブログとかに書いておくと,すげえ補足を書いてくれたりするよね。

俺はそういうところが好きだ。

416 名前:デフォルトの名無しさん [2008/06/09(月) 13:48:00 ]
質問です。Perlでクラスを使ってみたいのですが
どのように書けばいいのでしょうか?
知らない用語ばかり出てきて、さっぱり答えにたどり着きません。。

例としてPHP版で書きます。これと同等の機能をPerlで書いてください。
お願いします。

class Hoge {
 private $var1 = 'A';

 function var1() {
  return $this->var1;
 }

 function getValue() {
  return 1;
 }
}

class Hage extends Hoge {
 function getValue() {
  return 2;
 }
}

$hogehoge = new Hoge();
print $hogehoge->getValue();
$hagehage = new Hage();
print $hagehage->getValue();


417 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 14:10:53 ]
#!/usr/bin/perl
use strict;
use warnings;
{   package Hoge;
    sub new {
        my $class = shift;
        my $self = {var1 => "A"};
        bless $self, $class;
        return $self;
    }
    sub var1 {
        my $self = shift;
        return $self->{var1};
    }
    sub getValue {
        my $self = shift;
        return 1;
    }
}
{   package Hage;
    use base qw(Hoge);
    sub getValue {
        my $self = shift;
        return 2;
    }
}
my $hogehoge = Hoge->new();
print $hogehoge->getValue(), "\n";
my $hagehage = Hage->new();
print $hagehage->getValue(), "\n";

418 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 14:41:00 ]
>>416
一度perltootをキチンと読んでみては?
和訳↓
ttp://perldoc.jp/docs/perl/5.10.0/perltoot.pod

419 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 15:35:06 ]
./にローカルインストールしたモジュールを使うことができません。
使おうとしているものはCurses.pm
search.cpan.org/src/WPS/Curses-1.06/Curses.pm
です。もしよろしければご教授ください。

$ ls
Curses.pm* test.pl*
$ cat test.pl
#!perl
unshift @INC, ".";
use Curses;
exit;
$ perl -w test.pl
Can't locate loadable object for module Curses in @INC (@INC contains: 略 .) at test.pl line 4
Compilation failed in require at test.pl line 4.
BEGIN failed--compilation aborted at test.pl line 4.
$



420 名前:デフォルトの名無しさん [2008/06/09(月) 15:48:35 ]
use lib '.';



421 名前:デフォルトの名無しさん [2008/06/09(月) 15:54:07 ]
ba5.txtには以下になってます。
4131048
4131053
x
x
4850328
x
x
x
x
3870357
3870369
x
x
4131038
4131045
x
x
x
この場合にxの行を一番最後の行の数値に置き換えたい場合
perlだとどのようにすればいいんでしょうか。
シェルでやろうとしたんですけどシェルだとちょっと難しいみたいなので
perlでやりたいと思ってます。誰かいいスクリプトを教えて下さい。
宜しくお願いします。

422 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 16:07:39 ]
>>420
use lib '.'やuse lib qw(.)を試してはいるんですが、>>419と同じエラーが出てしまいます。
また、use Curses;をuse ::Curses;として実行すると、>>419のCompilation failed in require at test.pl line 4.が消え、
Can't locate loadable object for module CursesもCan't locate /Curses.pmと表記が変わります。

423 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 16:51:43 ]
>>419
本当にCurcesモジュールをインストールしたのか?
Curses.pmをコピーしただけじゃないのか?




424 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 16:52:54 ]
>>417
ありがとうございます。

継承するときは、
use base qw(Hoge);
なんて書くんですね。

sub newってなんなんでしょう?
なんでそんな関数が必要なのですか?

425 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 16:55:17 ]
>>423
>コピーしただけ
はい。アクセス権の関係でインストールが出来ないので、
test.plと同じディレクトリにCurses.pmを配置し利用したいと思っています。

426 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 16:59:36 ]
>>425
だから、Cursesモジュールは、C言語で書かれたバイナリがメインで、
Curses.pmはそのインターフェイスでしかない。
ちゃんとコンパイルしてインストールしないとだめ。
エラーメッセージにある "loadable object" っていうのがそれ。

アクセス権の関係ってどういうこと? インストール過程で、
インストール先を指定できるぞ。
コンパイラも使えないのか?


427 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 17:00:37 ]
>>424
コンストラクタ

不精しないできちんとperltootを読め。
>>418

428 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 17:03:00 ]
>>421
聊かエスパーぎみにレス。↓こういう事がしたいのか?
$ perl -pe '$_=$t if/^x/; $t=$_' ba5.txt
4131048
4131053
4131053
4131053
4850328
4850328
4850328
4850328
4850328
3870357
3870369
3870369
3870369
4131038
4131045
4131045
4131045
4131045


429 名前:421 [2008/06/09(月) 17:16:09 ]
>>428さん
そのとおりです!
ありがとうございます!

430 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 17:17:17 ]
>>426
ありがとうございます。何か大きな勘違いをしていたようです。
Cの方でcurses/ncursesを使っていたので、システム上にcurses環境があると救いようの無いいい加減な誤認があり、
また、@INCサーチパス上にCurses.pmを置くことが出来ないのでアクセス権という的外れも甚だしい話をしてしまいました。
現在make中です。今のところエラーは吐いていません。

wget search.cpan.org/CPAN/authors/id/G/GI/GIRAFFED/Curses-1.23.tgz
tar xvf Curses-1.23.tgz
cd Curses-1.23
#Makefileの生成
perl Makefile.PL GEN PANELS MENUS FORMS
#コンパイル
make



431 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 17:28:19 ]
>>427
コンストラクタなんですか?

普通、コンストラクタは必要がある場合を除いて
書かないと思うのですが?

書かないとまずいですか?

432 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 18:16:16 ]
釣れますか?

433 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 18:24:44 ]
>>427
初心者には perltoot を読むのを薦めるよりも
perlboot を読むのを薦めた方が良いと思うよ
なんとなく読む気が無さそうな気配ではあるけども
5.8 なら以前どこかで perlboot の邦訳も見掛けたた気がするけど

434 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 19:43:23 ]
>>428
すげー。そういう意味だったのか。
そこまで読めなかったよ。

435 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 01:30:01 ]
5.005の頃、よくXS書いてたんだけど
その後、Perlはワンライナーでしか使わなくなってしまった。
その頃のXSの知識ってまだ使えるのかな。

436 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 03:06:37 ]
oshiete1.goo.ne.jp/qa4087225.html

437 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 04:02:57 ]
おや、なんだかどこかで見たような……。

438 名前:デフォルトの名無しさん [2008/06/10(火) 11:24:14 ]
マルチ死ねよwwwwwwwwww

439 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 12:02:49 ]
HTML::FillInForm を使用しているのですが、出力されるhtmlから
DOCTYPE 宣言が消えてしまいます。
対処法がありましたら教えて下さい。


440 名前:439 mailto:sage [2008/06/10(火) 13:58:23 ]
ここ(↓)を参考にして自己解決しました。
www.geocities.co.jp/SiliconValley-Sunnyvale/6128/perl/htmlpaser.html

use HTML::FillInForm;
use base qw(HTML::FillInForm);

sub comment {
my($self, $text) = @_;
$self->{output} .= "<!--$text-->";
}

sub declation {
my($self, $text) = @_;
$self->{output} .= "<!$text>";
}



441 名前:439 mailto:sage [2008/06/10(火) 14:05:33 ]
>>440
× sub declation {
○ sub declaration {

442 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 15:39:31 ]
ロード済みのサブルーチンと同じpackageかつ同じ名前のサブルーチンを含む外部plファイルを
requireすると、後の内容で上書きされてしまいますが、元のサブルーチンを壊さないですむ
方法はないでしょうか。

443 名前:デフォルトの名無しさん [2008/06/11(水) 18:07:18 ]

皆さん、エスパーでよろ。

意図した挙動にならず、どこが問題かのきっかけも掴めずにかなり時間をかけてしまったが、
ようやくやりたいこと出来た。が、どうにも腑に落ちない。
DB(mysql)からデータとってきて、Scraperに渡して・・・と、こんな感じで組んでいたんだけど、

レコード数は3とします。


パターン1------------------------------------

$rows = $sth->rows;
print "hajimari";

while(my $ref=$sth->fetchrow_hashref()){
$scraper->scrape($ref->{url});
print "roop dayo";
}

print "owari";

このような感じでやっていたんだが、ループが1回しか回らない!?なんで?
てなことで、webで情報あさったり、モジュールのソース眺めてもわからんし。



444 名前:デフォルトの名無しさん [2008/06/11(水) 18:07:56 ]

パターン2------------------------------------

$rows = $sth->rows;
print "hajimari";

while(my $ref=$sth->fetchrow_hashref()){
print "roop dayo";
}

print "owari";

と、Scraperになげなかったら、ちゃんと3回ループするんだよね。
でScraperでこけてんのかと思いきや、これも特に見当たんない。
問題なさそうだ・・・。


445 名前:デフォルトの名無しさん [2008/06/11(水) 18:08:25 ]

パターン3------------------------------------

$rows = $sth->rows;
print "hajimari";
$i = 0;

while(my $ref=$sth->fetchrow_hashref()){
$url[$z] = $ref->{url};
$i++;
}

for($z = 0;$z < $rows;$z++){
$scraper->scrape($url[$z]);
}

print "owari";

ちょいと思うところがあり、一旦配列にほりこんでみる・・・。
キター!!!3回まわったじゃんか!


ふむ、思うところというのは、Scraperでこけないでループ1週目は
ちゃんとループしているということ。
で、結局ちゃんとした原因が解ってないんだけど、メモリ制限とか
あるのかな?

アドバイス下さい。
(もしかしたら、CGIまわりの問題?)
OS:FreeBSD
Perl:5.8.3

446 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 18:44:14 ]
デバッグしろよ

447 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 18:47:02 ]
またきたのか

448 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 18:48:59 ]
Dump吐いてみたら?

449 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 18:52:18 ]
内部状態をインスペクトしたら

450 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 18:56:50 ]
printf だ! printf を挟め!



451 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 18:59:07 ]
if(!$hoge->{'hoged'}){
    $hoge->{'hoged'} = [];
}

push(@{$hoge->{'hoged'}}, $hoging);

これをスマートに書く方法ありませんか?
ちなみに$hogingは2箇所以上に書くなら一時変数必要です。

452 名前:デフォルトの名無しさん [2008/06/11(水) 19:04:06 ]
少し説明がヘタだとは思いますが以下の処理をしたいです。お願いします。
★処理の方法
行の先頭が [ の場合には、行の先頭が 20 の行の先頭にそれを加える
行の先頭が 空白の場合には一旦処理を終えて再度行の先頭の [ を読む
行の先頭に < がきた場合にはその処理を終えて再度行の先頭の [ を読む
結合した場合、その文字列の最後に必ず区切り文字としてタブを挟む
●処理前のabc.txt
<100100>
[1044]あいうえお
20321 1137 4850328 60
20321 1137 4850328 60
20321 1137 4850328 60
   【合計1044】
[1047]かきくけこ
20319 1090 3870357
20319 1101 3870369
   【合計1047】
[1051]さしすせそ
20328 1206 4131038 52
20328 1206 4131045 52
20328 1206 4131045 52
    【合計1047】    
    【累計】
<100200>
[1057]たちつてと
20328 1206 4131045 52
20328 1206 4131045 52 

453 名前:デフォルトの名無しさん [2008/06/11(水) 19:04:54 ]
●処理後のabc.txt
<100100>
[1044]あいうえお 20321 1137 4850328 60
[1044]あいうえお 20321 1137 4850328 60
[1044]あいうえお 20321 1137 4850328 60
   【合計1044】
[1047]かきくけこ 20319 1090 3870357
[1047]かきくけこ 20319 1101 3870369
   【合計1047】
[1051]さしすせそ 20328 1206 4131038 52
[1051]さしすせそ 20328 1206 4131045 52
[1051]さしすせそ 20328 1206 4131045 52
    【合計1047】    
    【累計】
<100200>
[1057]たちつてと 20328 1206 4131045 52
[1057]たちつてと 20328 1206 4131045 52

どうかよろしくお願いします。

454 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 19:15:23 ]
>>452
宿題を肩代わりするスレじゃないんだけど。
少しはperl文を書いてから出なおせ。

455 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 19:33:31 ]
たしかに最近どうみても入門者向けの課題を回答させようとする連中が多いような?


456 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 19:39:49 ]
>>451
push(@{$hoge->{'hoged'}}, $hoging);


457 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 19:55:00 ]
宿題を人に頼む奴は大学やめればいい

学部生いわく。

458 名前:443 [2008/06/11(水) 19:59:01 ]
>>446-450

おしかりありがとう御座います。
デバックの仕方を勉強します。
Data::Dumper
で一目瞭然でした。

猛省します。

原因はなんだったのかって?恥ずかしすぎて・・・。
言いたくないんですけど。

ループ内で。。。、DBハンドルが・・・。
ごめんなさいごめんなさいごめんなさい

猛省します。
大事なことなので2回言いました。


459 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 20:17:52 ]
>>456
ありがとう。解決した。

460 名前:454 [2008/06/12(木) 01:05:52 ]
>>454
すみません。bashで書いていたんですけどbashだとうまくいきそうにないので
perlでお願いしてみました。すみません。bashのコードとしては以下のような感じです。
無茶苦茶なコードですみません。

#!/bin/bash
for iii in `cat abc.txt`
jjj=`sed -n '2p'`
do
if test [ $jjj = "^20" ]
then
paste "$jjj" "\t" "$iii" > ccc.txt

else
fi
done

bashでは無理っぽいのでスクリプトも途中までの処理しかしてないです。
perlで処理すればと思ってお願いにきました。perlはあまりよくわからないのでお願いします




461 名前:452 [2008/06/12(木) 01:08:15 ]
寝ぼけてて名前間違えました。すみません。

462 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 01:36:40 ]
正直いうと、>>452に書いてある処理の一覧が全然論理的じゃないので俺には理解できない。

つまり、「一旦処理を終えて」と「その処理を終えて」がどう違うのかとか、
そもそも「その処理」や「その文字列」とは何なのかとか、
行の先頭が空白なのに行の先頭の[を読めとはどういうことなのかとか分からない。

463 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 02:15:05 ]
処理前と処理後を見ればやりたいことはわかるが、
この程度、forと正規表現使えばどうにでもできるだろ

あと、処理の方法はひどすぎる
自分でもう一回読んでみろ

464 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 06:43:04 ]
>>460
俺は、「perl文を書いてから出なおせ」と書いた。bashなんか求めてねえ
お前さんがperlで書く気0なのに答えてやる義理なんざねえよ
「perlの知識0です。エスパーしてください。」
って質問には>>428で答えてしまって反省してんだよ
>>436のリンク先でも読んでちったー自分で考えろ

465 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 09:42:25 ]
>>442

require するときに退避しといて戻せばいいんじゃない?

{
local *hoge::f;

require ...
}

これだと$hoge::fも影響受けるのがやりすぎだというなら、

{
local *hoge::f = sub{};

require ...
}


466 名前:デフォルトの名無しさん [2008/06/12(木) 11:03:25 ]
>>442
オブジェクト指向に設計すれば問題なす

467 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 11:08:45 ]
オブジェクト指向までやらなくてもせめてモジュールにして
Exporter使う方が楽だろうと思う。

読みたいファイルが他人が作ったもので中身も見たくない
のならしょうがないけどな。

468 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 11:20:59 ]
5.10にしたらsvkが動かなったんだけどsvk使ってる人はどうしてんの?

469 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 01:15:19 ]
require や do でベタの perl を呼ぶ時に引数与えたい場合どうするのが普通なんでしょか?

% ./hanage.pl -help

を do とかを通してやりたい時、というです。


@ARGV=("-help");  # とかしておいて、
do "hanage.pl";    # とすると、実現できているようですけど、これが普通でしょか?

また、ほかに方法があれば。

470 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 02:07:04 ]
それで動いてるならいいじゃないの?何が不満なの?



471 名前:469 mailto:sage [2008/06/13(金) 02:46:35 ]
ひとつは、自信がないから。
ひとつは、ほかのやり方を知りたいから。"There's more than one way to do it"

目から鱗、鼻から悪魔、みたいな記述が perl ならまだある筈だと。
自分の例だと面白くも何ともないのでねぇ。

472 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 06:34:01 ]
{
local @ARGV=("-help");
do "hanage.pl";
}
とかでいいだろ。べつに@ARGVじゃなくてもいいけど。

473 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 06:55:17 ]
…do EXPR は、goto文並みにobsoleteな感じがするんだが、皆さん使うの?
require EXPR ですら、perl4的でどうしても避けられない場合にのみ嫌々使うんだけど


474 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 08:10:51 ]
すみません。ものすごい基本的なこともか知れませんが質問させて下さい。
@listに複数行に,で区切られた5つのデータがあるとします。

my $cnt = 0;
foreach( @list){
@list2[$cnt] = split( /,/, $_);
$cnt++;
}

というのを考えたのですが、
Use of implicit split to @_ is deprecated
どのようにすればいいのでしょうか?

475 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 08:21:53 ]
>>474
@list2[$cnt] = @_ = split( /,/, $_);

476 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 08:22:41 ]
475は無し。何も考えずに書き込んだ。


477 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 08:54:07 ]
>>474
@{list2->[$cnt]}



478 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 08:58:33 ]
>>474
@{$list2[$cnt]}

479 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 09:27:49 ]
>>473

#--- config.file ---
my $dir = '/path/to/base/dir';
{
  foo => 1,
  bar => [ 2..5 ],
  baz => "$dir/extra.file",
};
#---

なんて設定ファイルを作って

$conf = do '/path/to/config.file';

で読むという手抜き実装はよくする。
設定ファイルを Perl で書けるのが柔軟で楽。

480 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 12:06:38 ]
>>473
useだとコンパイル時に読み込まれちゃうから
動的に読み込むファイル決める場合は
"use $file;"するかdo "$file"するくらいしかないじゃん
前者よりはdoのほうが素直じゃね?



481 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 12:21:25 ]
>>480
動的に use したいだけなら require の方がもっと素直だね。

482 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 12:34:19 ]
>>479,>>480
レスthx.

config file だったらYAMLとかそっち使っちゃってるw
480の方は状況があまり想像出来ん。Storable知る前だったら
Data::Dumperの出力云々で使ったかもしれんが…。

俺に機会が無いだけなのねw

483 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 12:38:20 ]
あ。ちなみにData::Dumperの動的処理の時も(しぶしぶ)require使ってた。
481氏の意見と同じ感覚。

484 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 13:34:15 ]
CSVファイルがありこれをソートしたいのですが、
3番目の要素でソートしたりできませんか?

485 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 13:38:49 ]
>>484
perlを使うよりsortコマンドのほうが早そうだけど?

486 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 13:41:01 ]
CSVの扱いはPerl向きじゃない気がする。

487 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 13:42:39 ]
>>486 CSV 何で処理してる?



488 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 14:09:47 ]
>>482 delegateパターン実装とか


489 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 14:27:27 ]
エクセルでやれば?w

490 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 14:29:25 ]
Pythonだとこんな感じ

import sys, csv
from itertools import imap
from operator import itemgetter

writer = csv.writer(sys.stdout)
for row in sorted(csv.reader(sys.stdin), key=itemgetter(2)):
    writer.writerow(row)




491 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 14:31:09 ]
ああimapとかimportする必要ねえな
無視して

492 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 14:31:49 ]
なんでもデリミタをコロンにしてたらUNIX病だと怒られた

493 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 15:02:19 ]
あれ?PerlにもCVS用のモジュールがあったような?

494 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 15:10:11 ]
そしてSJISでハマるに一票。pythonも同じと思うが。

495 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 15:31:56 ]
基本すぎてわらけるかもしれないけど、教えてください。

関数の引数の扱いがよくわかりません。
たとえば、
sub test{
# $_[0] == "test";
# $_[1] == "test2";
}
&test( "test", "test2");
となるとおもうのですが、
@test = ( "test", "test2");
&test( "test", @test);
としたばあい、引数はどうなるのでしょうか?

色々と試してみたのですが、
&test( @test);
としたばあいは、
@_ == @test;
だということはわかったのですが・・。
(もし違っていたら指摘していただけるとありがたいです。

496 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 15:35:18 ]
>>495 やって美奈代




497 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 17:04:22 ]
perl -F',' -lane 'push @dat, [ @F, $_] ;}{ print $_->[-1] for sort {$a->[2] <=> $b->[2]} @dat; ' FILE
sort -k3 -t, -n < FILE

498 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 18:04:30 ]
require がうまくできません。
上記の質問を参考に、
test.cgi ---
require './hoge.pl';
とかいて、
hoge.pl ---
our $test = "hogee";
1;
とかいているのですが、
perl test.cgi
すると、$testは読めていないようです。

ながに悪いでしょうか?

499 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 18:29:00 ]
>>495
マニュアルを見ずに仕様を突き止めるゲームでも開催されてるの?

500 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 18:36:22 ]
>>498
「$testは読めていないようです。」の「ようです」に隠された何か。



501 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 18:40:32 ]
>>492
そうなのか。不治の病にかかってしまった。


502 名前:デフォルトの名無しさん mailto:sage [2008/06/13(金) 21:09:26 ]
myにすればいいんだよ

503 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 00:01:01 ]
>>474
splitをスカラコンテクストで使ってはいけない。

504 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 08:59:12 ]
$input = <>;
というコードをwindows上で実行し入力待ちの状態でウィンドウ右上の×印を
押すと「すぐに終了」のダイアログが出てきてしまいます。
入力待ちの状態では$SIG{'QUIT'}をキャッチすることが出来ません。
Term::ReadLine等も試しましたが挙動は同じでした。
入力待ちの状態でも正常終了するようにすることは出来ないでしょうか。

505 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 18:33:05 ]
Ctrl + C ??

506 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 00:06:19 ]
>>504
自前でwindow開かないと無理と思われ。

507 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 15:27:14 ]
多次元配列があるのですが、2次元目のある要素を元に1次元目をソートさせることはできませんか?

508 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 15:50:42 ]
>>507
出来るよ。

509 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 16:06:21 ]
すみません。
簡単なサンプルでいいんでコードを書いて頂けませんか?

510 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 16:17:38 ]
>>509
ググれば例などいくらでも出てくるんだが?
perl -MData::Dumper -le 'print Dumper sort { $a->[1] <=> $b->[1] } ( [2,3],[3,2] ) ;'
$VAR1 = [ 3, 2 ];
$VAR2 = [ 2, 3 ];






511 名前:デフォルトの名無しさん [2008/06/16(月) 08:14:00 ]
Perlでファイルの中の指定した文字列(正規表現".*hoge$"等)にマッチする行を
削除したいのですが、どうすれば良いでしょうか?

512 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 09:38:40 ]
>>511
perldoc.jp/docs/perl/5.10.0/perlfaq5.pod
を、「ファイルのある行を削除する」で検索。

513 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 09:39:22 ]
>>511

#!C:/perl/bin/perl

open(IN,"example.log");
while(<IN>){
if($_ =~ /hoge/){ $line .= "\n"; }
else{ $line .= "$_\n"; }
}
close(IN);

open(OUT,">exmple.cgi");
print OUT $line;
close(OUT);

print"Content-type:text/html\n\n";

print "消去完了";

みたいな感じですか?

Perlコーディング初心者質問スレ Part 57
pc11.2ch.net/test/read.cgi/php/1203935151/l50

514 名前:デフォルトの名無しさん [2008/06/16(月) 10:18:02 ]
111
222
333
444
555
666
というようなファイルがあったとして(数字は仮定です)3行目の行の
先頭にtabを2つ入れたい場合、どのようにすればいいのでしょうか。

515 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 10:24:45 ]
くだすれ池

516 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 10:28:50 ]
>>514
……
行数を数えながら一行ずつ読み込むループにして

if 3行目 then
先頭にtabを2つ入れる
読み込んだ行を出力する

という中身を回せばいいよ。

517 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 10:33:18 ]
>>514

質問先は「くだすれPerl(超初心者用)2」
pc11.2ch.net/test/read.cgi/php/1204488452/l50
が良いらしいです。


518 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 10:50:21 ]
>>511
>>513

すいません、間違ってました。
pc11.2ch.net/test/read.cgi/tech/1208674881/511

519 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 15:50:09 ]
変数の中の文字列の頭のスペースを取り除きたいのですが、
どのようなほうほうがありますか?

520 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 15:55:16 ]
>519
正規表現使う典型ケースです



521 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 16:00:36 ]
>>519
perldoc.jp/docs/perl/5.10.0/perlfaq4.pod
を、「文字列の先頭や末尾にある空白を剥ぎ取るには?」で検索。

522 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 16:01:41 ]
>>519
pc11.2ch.net/test/read.cgi/php/1204488452/292


523 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 16:08:16 ]
>>519
>>522

連投すいません。修正です。
pc11.2ch.net/test/read.cgi/php/1204488452/293

初歩質問はこちらが良いらしいです。
pc11.2ch.net/test/read.cgi/php/1204488452/l50


524 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 01:11:06 ]
質問です。
HTML数値エンティティを文字に変換する際にはどうすればよいでしょうか。
下記の通りに実行したのですがうまくいきません
(�-ÿしか対応していない?)

#!/usr/bin/perl
use HTML::Entities::Numbered;
$str='あいうえお';
print hex2name($str); #「あいうえお」を期待するが変換前と同じ$strが出力される

525 名前:524 mailto:sage [2008/06/18(水) 01:12:01 ]
$str='&#x3042;&#x3044;&#x3046;&#x3048;&#x304A;';

ですorz

526 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 04:57:49 ]
>>524
> print hex2name($str); #「あいうえお」を期待するが変換前と同じ$strが出力される

いや、期待するなよ。

527 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 06:29:13 ]
そのあたりに踏み入ったことはないのだが、マニュアルを見る限り

HTML::Entities::decode

を使うのではないか?

528 名前:デフォルトの名無しさん [2008/06/18(水) 12:04:39 ]
すんごい初歩的な質問で申し訳ないのですが、
Perlやってる友達がお前こんなのもできないだろと自慢してくるので、明日までにこれをやらないとまたバカにされるのですが、
プログラム自体やったことがなく意味不明すぎてよくわかりません。。誰かもしよかったら教えてください。

キーボードから整数値$aの値を入力してEnterを押し、
続けて$bの値を入力してEnterを押すと、
$aを 3 倍した値と、$bを 8 倍した値の和 を計算して$cに代入し,
$cの値を画面に出力するプログラム

結果は
print "$cn";
の形で出力する
この結果の出力以外の画面出力はしないこと.

529 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 12:10:09 ]
>>528
その友達に教えてもらいなさい

530 名前:デフォルトの名無しさん [2008/06/18(水) 12:14:12 ]
>529

というか、その友達から出された問題なんです。



531 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 12:23:42 ]
宿題だろ・・・

532 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 12:37:23 ]
それが出来たところで他の事聞かれてあぼんだな

533 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 12:40:17 ]
「1/10の確率」

を表現するのに、これ↓はありなのか?

return 0 if rand(1000) > 100;

534 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 12:51:55 ]
あり得ないという根拠は?

535 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 12:52:56 ]
>>533
randが正規乱数だと仮定するならありだろ。

536 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 13:05:29 ]
正規乱数だと仮定するならなしだろ
randが一様乱数を吐くのならありかもしれんが

537 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 13:50:36 ]
>>528
お前こんなのもできないのか

538 名前:デフォルトの名無しさん [2008/06/18(水) 14:25:04 ]
綺麗な記述を勉強したいです。
どっかで配布されてる非常に綺麗で整理された記述を教えてください。
あまりにいっぱい配布されすぎててチェックできません。


539 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 14:39:00 ]
>>538
man perlstyle
つーか、好きにしろ

540 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 16:10:12 ]
>>538
perl medicとかは偏ってはいるけど
ポリシーとしてはまあ参考になるかもしれん
買うまでの事は無い本なので図書館で探せ




541 名前:524 mailto:sage [2008/06/18(水) 21:54:54 ]
>>527
HTML::Entities::decode で無事に出来ました
今後はマニュアルをしっかり読みますm(_ _)m
ありがとうございました

542 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:32:54 ]
>>538
ここはPerlのスレですよ?

543 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:37:24 ]
>538
Plagger読んどけ

544 名前:デフォルトの名無しさん [2008/06/18(水) 23:17:04 ]
こっそり書いてみる。意味は教えないよ
perl -e 'print <STDIN>*3+<STDIN>*8,"\n"'

545 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:37:40 ]
$cに代入してないじゃん

546 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:54:10 ]
>>528

544とは別人だけど。

perl -e '$c=<>*8+<>*3;print"$c\n";'

また、次の問題を出されるだろうから、がんばって。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<139KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef