2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

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

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


2 :Mr. Moonlight:02/12/30 08:51
o Perl参考図書

プログラミングPerl VOLUME1 (オライリー)
http://www.amazon.co.jp/exec/obidos/ASIN/4873110963

プログラミングPerl VOLUME2 (オライリー)
http://www.amazon.co.jp/exec/obidos/ASIN/4873110971

通称「らくだ本」。Larry Wallによるバイブル的書籍。
日本語版は2002年9月に新版が出版され、それまで一冊だったものが上下二冊にわかれた。


Perlクックブック (オライリー)
http://www.amazon.co.jp/exec/obidos/ASIN/4873110378

「Perlの鉄人が贈るレシピ集」実用的な問題の解法が示されている虎の巻。


初めてのPerl (オライリー)
http://www.amazon.co.jp/exec/obidos/ASIN/4900900818

多言語の経験のある方が手っ取り早くPerlを勉強したいときにはこれが最適。



3 :Mr. Moonlight:02/12/30 08:52
o 質問する前に

perldoc というコマンドがあります。 perldoc perldocで説明が出ます。
perlに付属のドキュメントをこれでチェック。


Usenetで似たような質問がされていないか調べてみよう。
fj.comp.langや
http://groups.google.co.jp/groups?q=fj.lang.perl&ie=UTF-8&oe=UTF-8&hl=ja
comp.lang.perl.*等
http://groups.google.com/groups?q=comp.lang.perl&ie=UTF-8&oe=UTF-8&hl=en


ぐぐってみよう
http://www.google.co.jp/search?num=20&hl=ja&ie=UTF-8&oe=UTF-8&c2coff=1&q=perlfaq


本屋に行く暇はないが今すぐオライリーの本を読みたい時、
Oreilly Safari Bookshelf
http://safari.oreilly.com/



o Perl近況

5.8.0が出て、Unicodeの取り扱いがちゃんとできるようになりました。


4 :Mr. Moonlight:02/12/30 08:52
前スレ
http://pc3.2ch.net/test/read.cgi/tech/1033688230/l50

5 :デフォルトの名無しさん:02/12/30 10:04
>>1さん、ぉっヵι〜
今回のテンプレートはなかなか格好いいかも:-)

6 :デフォルトの名無しさん:02/12/31 13:08
my $str;

$str<<__EOM__;
あいうえお
かきくけこ
さしすせそ
__EOM__

print $str;
(このソースはエラーが出ます)

こんな感じで、複数行を変数に直接代入する方法ってありませんでしたか?
あったような気がするんですが、思い出せないので…

7 :デフォルトの名無しさん:02/12/31 13:15
自己解決しました。

$html = <<__EOM__;

でOKでした。

8 : ◆F52DmOxJlc :02/12/31 13:41
>>6
実は
$str = "あいうえお
かきくけこ
さしすせそ"
printf("%s\n", $str);
なんてことも可能。

9 :6:02/12/31 14:16
>>8
本当だ、それだけで代入できました。
エラー出ないのが不思議ですね。

10 :デフォルトの名無しさん:02/12/31 16:56
>>9
>エラー出ない
他の言語では普通アウトだから奇異かもしれないね。
ヒアドキュメント演算子はぶっちゃけ「“〜”」を
指定文字列でオーバーライドするものだと思えばいい。
なので逆にオーバーライド“しない”>>8の例も可能な仕様かと。

余談だがこんなのもアリ。読み難いコードになるだけだが…。

print <<EOF; print <<EOF; print <<EOF; # 改行前なら何個でも定義可
abc
EOF
def
EOF
ghi
EOF

__END__


11 :デフォルトの名無しさん:02/12/31 17:12
>>10
print <<EOF,<<EOF,<<EOF
abc
EOF
def
EOF
ghi
EOF

これでも行けるよ

12 :デフォルトの名無しさん:02/12/31 17:17
とりあえずageとこうぜ

13 :10:02/12/31 18:52
けれど見る間に埋もれていく…。大晦日なのに…。

>>11
もちろん、カンマ区切りのが一般解。
この場合はセミコロンで区切ったマルチステートメントでも効果が生きるって
意味も持たせたかったので冗長化して見たんですよぅ。出来心ですぅ(;;
(カンマ演算子区切りだと1つの式になるけど、マルチなら複数の独立した式だし)

14 :デフォルトの名無しさん:02/12/31 19:00
がんがれー
ageeeeeeee!!!!

15 : :02/12/31 20:48
二次元配列で、一次元目のインデックスが同一の要素の個数は、どうやって取得したらいいのでしょうか。


16 : ◆F52DmOxJlc :02/12/31 21:09
>>15
たとえば $#{$array[$n]} とか scalar(@{$array[$n]}) とか。

17 :デフォルトの名無しさん:02/12/31 22:47
変数の文字列の中に入っている\nを、解釈させつつ実行する方法ってありますか?
例えば

$string = "国語辞典\n英和辞典";
print "$string";

とすると、出力は「国語辞典\n英和辞典」となってしまうわけですが、
\nで改行させるにはどうすればいいんでしょうか?

18 :17:02/12/31 22:53
「解釈させつつ実行」→「解釈させつつ出力」でした。

19 : ◆F52DmOxJlc :02/12/31 23:18
>>17
それおかしい。

20 :デフォルトの名無しさん:03/01/01 03:08
>>17
> $string = "国語辞典\n英和辞典";
この時点で改行が入ってるはずだが。

21 :17:03/01/01 03:22
私も改行されるものと期待して組んだのですが・・。
実際の状況はちょっと違っていて、\nを含んだ文章が書かれているファイルから、
各行を配列に読み込んで改行文字取り除いて、別のファイルに出力した結果が「国語辞典\n英和辞典」なんです。
もうちょっと考えてみます。

22 :デフォルトの名無しさん:03/01/01 03:33
$string = '国語辞典\n英和辞典';
print eval qq("$string");




23 :17:03/01/01 03:55
あありがとうございます。最初ので混乱させてしまってすいませんでした。

24 :デフォルトの名無しさん:03/01/01 21:32
>>22
元文字列中にダブルクウォートがあるとヤバイ事態になる気がするんですが…?
元文字列がSJIS/JIS7でなければ、

$str =~ s/\\n/\n/g;

で、充分に通常の用途では事足りると思う。
evalを使うなら「"」と、変換に無関係な「\」は要エスケープだと思う。

ただしSJISの場合はnの前の\が、漢字コードの2バイト目でない事を確認する必要あり。
(\\nはリテラルな\nである、といったエスケープ定義も必要になったりすると面倒だが)

25 :22:03/01/01 22:13
>>24
おっしゃる通りっす。迂闊

$string = '国語辞典\n英和辞典';
print eval qq( qq($string) );

とか悪あがきしてみるテスツ

26 :デフォルトの名無しさん:03/01/03 11:08
質問します。教えてください。
1.XHTML遵守の、ネストしたリストタグを簡単に作れるモジュールに心当たりがあったら教えてください。
2.CVSを使うための、あるいは、簡易CVSとして使えるモジュールに心当たりががあったら教えてください。
3.POE::Component::IRCの日本語訳が存在するか否かを教えてください。


27 :デフォルトの名無しさん:03/01/03 12:20
>>26
ごめん、どれも心当たりない

28 :デフォルトの名無しさん:03/01/03 14:09
>>26 俺も欲しい

29 :デフォルトの名無しさん:03/01/03 15:55
モジュールって、モジュールを使う *.pl と同じフォルダにおいても使えるよね?

あと、HOGE::FUGAってモジュールで、ファイル名がFUGA.pmでCPANにあったりするけど
そのままのファイル名でuseするだけで使えるの?
requireしてから?

さっぱりだよ


30 :デフォルトの名無しさん:03/01/03 17:14
@INCに .加える

31 :デフォルトの名無しさん:03/01/03 18:31
NetServer::GenericとNet::Serverってどういう関係ですか?
サーバーアプリを作りたいので適用なモジュールを探しています。


32 :デフォルトの名無しさん:03/01/03 19:46
PerlCE(PerlIDE)のインストールについての質問です。
WEBサイトの「PerlCEInstall-PerlCEのPocketPC2002へのインストール例。」
を参照しながら、PerlCEをCEマシンにインストールしてみました。
手順の一番最後のPerlIDEの設定のところで、PerlIDEを起動しようとすると
「PerlIDE(またはいずれかの構成ファイル)が見つかりません。
 パスとファイル名が正しく、必要なライブラリが使用可能であることを
 確認してください。」
とメッセージが出てしまい、それから先に進めません。
CEマシンはシグマリオンUです。
考えられる原因と対応を教えていただけると助かります。
(手順については、注意深く何度もやり直してみましたが、結果は同じでした。)
尚、celib.dll,Perl for WinCE,PerlIDEはmips-hpc-wce211用を解凍利用しました。
また、perl56.dll,cediallogs.dll,msvcrt.dllもwindowsディレクトリにコピー済です。
cereg.exeを利用しましたが、バッチファイルでのパスの設定にも、ミスは無く、
原因が分かりません。ひょっとして、シグマリオンUは、windowsce3.0ですが、2.11は
動かないということでしょうか?
Perl for WinCEはクリックすると動きますので、
それも違うような気がするのですが。よろしくお願いします。


33 :デフォルトの名無しさん:03/01/03 20:59
#>>29
#ファイルの配置。
#ModuleTest.pl
#HOGE
#HOGE/FUGA.pm

#in ModuleTest.pl
use lib qw(.); #カレントディレクトリをモジュール検索パスに追加。
use HOGE::FUGA; #requireしてimportするのと同じ。これで使えるYO!


34 :デフォルトの名無しさん:03/01/03 23:30
>>32
PerlICE(IDE)便利そうですね?
WinCE以外、つまりWin2kでも動作するIDE環境ありませんか?
コマンドプロンプトとエディターの往復にうんざりしていたところです。

35 :デフォルトの名無しさん:03/01/05 01:24
>>34
Win2KならMeadow+Cygwinを使うとPerlのIDEになるよー。

36 :デフォルトの名無しさん:03/01/05 02:15
>29
CPANに登録済みなら、CPAN.pm(perl -MCPAN -e shell) でインストールする。
(ActivePerlなら ppm)

独自のライブラリの場合は@INCの指すところに格納するか、
use FindBin;
use lib $FindBin::Bi

37 :デフォルトの名無しさん:03/01/05 02:26
>36
スマソ。訂正&追加。

呼び出すperlソース(?)と同じ場所に置くなら、

use FindBin;
use lib $FindBin::Bin

(perl クックブックより)


38 :デフォルトの名無しさん:03/01/05 11:23
>>33>>36>>37サンクスコ。

鯖を変えたけど、モジュールのインスコを禁止されているわけなんだ。
そのモジュール自身も他のを読んでいるし、
徹底的にガムバッテみるよ。

39 :デフォルトの名無しさん:03/01/05 19:31
とあるPerlプログラムから外部のPerlプログラムファイルを呼んでいます。
外部プログラムはCGIモジュールを使ってパラメーターを受け取っています。
外部プログラムは、コマンドラインからは
perl /home/.../gaibu_hoge.pl parameter=3\&second=abc
のようにやって、パラメーターを受け取ることに成功しています。
しかし、親プログラムから
$cmd = 'perl /home/.../gaibu_hoge.pl parameter=3\&second=abc |';
open(IN, $cmd);
while (<IN>) {
...
}
close(IN);
とやった場合、動作はしているのですが、
なぜかパラメーターが渡せていません。\を取っても同じでした。
原因すらわからないような状態ですが、
このような状況を解決する方法を知っている方はおられますでしょうか。

40 :デフォルトの名無しさん:03/01/05 19:37
>>39
パスとパラメータを ? でつなげば良いと思う。
$cmd = 'perl /home/.../gaibu_hoge.pl?parameter=3\&second=abc |';

41 :デフォルトの名無しさん:03/01/05 19:43
>>40
それだと、? で繋げた分全てをPerlプログラムのパスだと認識するようで、
コマンドライン上でも親プログラムからの呼び出しでも、
動作すらしなくなりました。
ごめんなさい。

42 :デフォルトの名無しさん:03/01/05 21:20
>>41
わからん、hoge.pl をサブルーチン化して require してはだめですか?

43 :39 & 41:03/01/05 21:32
こちらも色々粘ってみましたが、駄目でした。

>>42
ありがとうございます。ヒントになりました。
一応、わかりやすさを重視して、
hoge.pl の中身をモジュール化して、
hoge.pl と親プログラムの両方から呼び出すことにします。
お手数お掛けしました。
ありがとうございました。

44 :デフォルトの名無しさん:03/01/06 01:47
>>39
呼出側の親プログラムがApache等から起動されたCGI環境下で
動いている場合はその子プログラムもCGI環境内、ってことになる。
この場合、CGI.pmは環境変数などをチェックした結果
“コマンドラインからの起動ではない”と判断するかも。

>>40 がアウトになる理由は、open関数内で
起動されるシェルで'?'が処理されるから。


45 :39:03/01/06 11:59
>>44
おお! 解説ありがとうございます!
今はちょっと忙しいのですが、暇があれば
CGI.pm を hack してみて、中身を確認してみようと思います。

46 :デフォルトの名無しさん:03/01/06 14:51
3箱目乙です。

「表」のように2バイト目に「5C」のコードが使われている文字を
shift-jisで扱うと、文字化けしたりエラーになったりするので、
それを防ぐために

$str=~s/表/表\/;

のように文字の後ろに「\」を付けたいのですがこれもエラーになります。
どのようにすればいいでしょうか?


47 :デフォルトの名無しさん:03/01/06 14:55
条件演算子で質問です。

$a = 1; $b = 2; $c = 3;
$a ? ($b = 3) : ($c = 2);
print $a,$b,$c;

これだと133と表示されますが、

$a = 1; $b = 2; $c = 3;
$a ? $b = 3 : $c = 2;
print $a,$b,$c;

これだと123と表示されてしまいます。

これって演算子の優先順位の問題なのでしょうか。
よくわからないので識者の方の解説をお願いします。

48 :デフォルトの名無しさん:03/01/06 15:06
>>46
$str=~s/表/表\\/;


49 :46:03/01/06 15:12
>>48
$str=~s/表/表\/;
だとエラーになりますね。

$str=~s/表\/表\\\/g;
でOKでした。自己解決ですいません。


50 :デフォルトの名無しさん:03/01/06 15:34
なぜ '/'にコダワルのだろう……

51 :デフォルトの名無しさん:03/01/06 16:38
>>47
?:は3項演算子。
$b = 3は式。式全体は無視され、先頭に立ってる$b(項)が評価される。
($b = 3)は式を()で括っているから項、よって中の式が評価される。


52 :デフォルトの名無しさん:03/01/06 16:52
現在XMLDBのXindiceをPerlで操作(検索・挿入・更新・削除)する方法を模索しています。
いろいろ探っては見たのですがなかなか解決には至っていません。
どなたか有効な情報をお持ちの方はいらっしゃいませんか?
本当に困っているのでアドバイスをいただけると大変ありがたいです。
よろしくお願いします!!


53 :デフォルトの名無しさん:03/01/06 17:19
夜露死苦

54 :デフォルトの名無しさん:03/01/07 01:06
PerlでWindowsの印刷関連機能を使いたいのですが可能でしょうか?



55 :デフォルトの名無しさん:03/01/07 01:10
>>51
ちょっと誤解を招く表現だな。>…式全体は無視され…

$a = 1; $b = 2; $c = 5;
$a ? $b = $B = 3 : $c = 4; print $a,$b,$B,$c; # 1435
$a = 0; $b = 2; $c = 5;
$a ? $b = $B = 3 : $c = 4; print $a,$b,$B,$c; # 024

条件演算子 ?: は2番目と3番目のオペランドが有効な左辺値
且つ同じコンテキストなら、それ自身が左辺値に成り得る。
つまり上の例だと ($a ? $b = $B = 3 : $c) = 4; で、$a の
真偽によって $b か $c に 4 が代入される。

56 :デフォルトの名無しさん:03/01/07 03:44
$^H
ってなんなの?
特別な変数?

57 :デフォルトの名無しさん:03/01/07 04:10
myとlocalの違いをおしえて

58 :デフォルトの名無しさん:03/01/07 04:34
Perlとperlの違いをおしえて

59 :デフォルトの名無しさん:03/01/07 05:14
早くおしえて!!

60 :デフォルトの名無しさん:03/01/07 05:40
>>57
ダイナミックスコープ(local)とレキシカルスコープ(my)
localは同名のグローバル変数を一時的に退避し、
局所変数として別途変数を作成する。そこから呼ばれた
ルーチンにおいてもそのlocal指定された変数は有効。
myはC,C++,Javaなどの関数内ローカル変数と同じ。
そこから呼ばれたルーチンには、その変数は見えない。

Perlのメインルーチンがmainというパッケージに収まって
いることを考えると全ての変数はデフォルトでlocal変数と
見ることができる。

ただしこれらは変数名シンボルに対するスコープであって、
メモリ上のオブジェクトはそれとは別に参照カウントに
よって維持管理されている。だからC,C++ではご法度と
されている、ローカル変数のポインタ(Perlではリファレンス)
を関数の戻り値に使うようなことは、Perlでは何も問題がない。

61 :デフォルトの名無しさん:03/01/07 05:47
要はあれです。C,C++のようなスタックを使ったレキシカルスコープの
実現は、JavaやPerlにはないということです。C#/.netにはあるとも
聞くけどどうなんだろう。

62 :デフォルトの名無しさん:03/01/07 05:48
◆◇◆◇◆最新情報◆◇◆◇◆
http://yahooo.s2.x-beat.com/linkvp/linkvp.html


63 :デフォルトの名無しさん:03/01/07 07:41
>>56
strict.pm 読め。

>>58
「Perl」は言語としての Perl を指す。
「perl」は Perl インタプリタのバイナリを指す。
…というのが何かに載っていた気が。

64 :デフォルトの名無しさん:03/01/07 08:09
レキシカル変数と言えば

{
 my $foo;
 sub sub_a { $foo使う }
 sub sub_b { $foo使う }
}

みたいにして、複数の関数にまたがるスタティック変数(C的表現)が使えるね
特定の関数からのみ参照可能なグローバル変数(嘘臭い)と言った方が直感的かな

65 :デフォルトの名無しさん:03/01/07 14:53
>64
C言語のauto変数もそうなんだけど、「ブロックの先頭で宣言」なのに
なぜかあんまりやらないんだよなー。キモチワルイからかな。

いるところだけブロックで囲ったほうが見通しはいいしリソースも節約できて最適化も
期待できていいような気がするんだけど。

 「関数の先頭」って思い込んでいる香具師が多いのよね〜。

66 :デフォルトの名無しさん:03/01/07 15:20
サブルーチン外で定義されたmy変数は、そのファイルに
結び付けられた固有の変数になります。まさにレキシカル。
(ファイル全体が無名ブロックで囲まれてるのと同義)

#main.pl
my $a = 123; require "sub.pl";
__END__

#sub.pl
print '$a は', ( defined $a ) ? '定義済' : '未定義'; 1;
__END__

逆に、同一ファイル中でこういう定義はできない。

package FOO; my $a;
package BAR; my $a; # ここで2重宣言警告発生
__END__

>>64の例は、実は上記に沿った動作なので
次のように書くと意味が違ってくるよ。

sub main{
 my $foo;
 sub sub_a { $foo使う }
 sub sub_b { $foo使う }
}
my $foo;

sub_a、sub_b で使われる$fooは、sub main 内の
my $foo ではなくて、mainの外で my宣言された $foo だったり。


67 :デフォルトの名無しさん:03/01/07 16:27
>>51 >>55
サンクスです。またまた勉強になりました。



68 :デフォルトの名無しさん:03/01/07 19:04
>>66
下の例は分かるけど、実際そんな使い方するの?
普通、サブルーチン内で定義したサブルーチンを、そのサブルーチン外から呼ぶことはしないものだと思ってたし。
(main で定義された sub_a, sub_b をmain外から呼ばない)
# サブルーチンの動的生成とかは除いて

もし、そうするなら グローバル変数(use vars) をlocal 宣言すると思うんだけど。
純粋な疑問、意味分かんないや。
# もしかして、単にダメな例?

69 :デフォルトの名無しさん:03/01/07 19:40
>>68
サブルーチン内ローカルサブルーチン定義が必要な場合、
Perlでは無名サブルーチン定義にしないとだめです。
>>64の下の例では、sub_a、sub_b は思い切りグローバルなんだわ(^^;

つまり“一般常識として”内部関数に直接触らない自主規制は可能だが、
インタプリンタ実行レベルでは規制されていない。

完全にローカルなサブルーチンを作成使用するには、こうするしかない。

sub hoge{
my $foo;
 my $sub_a = sub { $foo; };
 my $sub_b = sub { $foo; };
 &$sub_a();
 &$sub_b();
}

#このサブルーチンリファレンスを定義ブロック外に
#漏らすと、$foo はクロージャ変数(不揮発領域)になる。



70 :デフォルトの名無しさん:03/01/07 19:57
ペルージャ

71 :デフォルトの名無しさん:03/01/07 20:49
>>69
了解っす。
main() の中から sub_a() を呼べば、ちゃんと sub main{}なレキシカルスコープの$foo が渡されるけど、
($fooがそう評価されない例で)わざわざ外から呼ぶのは何故?
と疑問に思ったんです(^^;

> つまり“一般常識として”内部関数に直接触らない自主規制は可能だが、
> インタプリンタ実行レベルでは規制されていない。
Perlのこういうところが好き :)
「立ち入り禁止の札」ってヤツですね。


72 :IP記録実験:03/01/08 21:41
IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/

1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。

27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?

38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27
鋭いです。

73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。

73 :デフォルトの名無しさん:03/01/09 02:33
 

74 :デフォルトの名無しさん:03/01/09 03:17












75 :デフォルトの名無しさん:03/01/09 03:59
  ! | l l ヾ(:::::   ヽ〉ヽ)ヽ `l  ミ ー  .、 |
    | {レヽ〈:::~``'' ´  ソ |! l }   ミ. ミ    ト
    レヽ,;:::''''`':;|;il~,. -‐'  ル )ノl / ミ ノr^,ヾ !
     ゝ l;ュ=≡{., (;;,(ニ===、-.l! li /ソ ;;)|./
      `!;ェ‐・オ ""'''< `・ーz'ー'~ |/ フ;;i |!  <重くなるのはなあ・・・
        |:'""`')'  ^ヽ;` ̄,. -‐'^  i|;;;;ノ/\ー-、-.,_
        !;:.. .:;i|   ;,  ~、´    ,/ |,..ノ;  \ ゝ ヽ``)、.,_
       ``ヽ(__,,,,...)  \_,,..-'   |;;;     |〉   トli ヽ
         |::::::::J..,,_ ^ヽ,  : 1, ;!;:     /l、    ) |
         ヽ::r,―--一' . , il/:::  ::  / !    ;  /
         .//'i`ー-'´; ' ;. ',/;;;:::::  .:::::∧  }    ヽイ
      /  /  L.;_';_._,`.ノ


76 :デフォルトの名無しさん:03/01/09 18:42
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 138720人 発行日:2003/1/9

年末年始ボケがそろそろ収まり始めた今日このごろのひろゆきです。

そんなわけで、年末に予告したIP記録ですが実験を開始しています。

「2ちゃんねる20030107」
こんな感じで各掲示板の最下部に日付が入ってるんですが、
20030107以降になってるところはログ記録実験中ですー。

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────

77 :デフォルトの名無しさん:03/01/10 00:29
記念かきこ

78 :デフォルトの名無しさん:03/01/10 02:15
Net-Server(Net::Server - Extensible, general Perl server engine)
の使いかた教えてください。



79 :デフォルトの名無しさん:03/01/10 06:38
>>78
%perldoc Net::Server

----
# インチキECHOサーバ、文字列を大文字にして返す
package NetServerTest;
use Net::Server;
@ISA = qw(Net::Server);
$port = 10000;
NetServerTest->run(port=>$port);
exit;

sub process_request {
 while(<STDIN>){ print uc $_; }
}
1;
----

Net::Server を継承して、適当なメソッドをオーバーライドすれば良いみたい

80 :デフォルトの名無しさん:03/01/10 09:10
運営側の監視も必要になるのね。
こりゃ大変だわ。

81 :デフォルトの名無しさん:03/01/10 09:29
名誉毀損の書きこみがあったと認識し、または認識しえたとき。
てか、日本語も読めないのに良く掲示板利用してるな。

82 :デフォルトの名無しさん:03/01/10 09:45
名誉毀損の書きこみがあったと認識し、または認識しえたとき。
てか、日本語も読めないのに良く掲示板利用してるな。

83 :デフォルトの名無しさん:03/01/10 09:50
名誉毀損の書きこみがあったと認識し、または認識しえたとき。
てか、日本語も読めないのに良く掲示板利用してるな。

84 :デフォルトの名無しさん:03/01/10 10:08
【速報】小学生狙う、悪質な書き込み【キター!】
http://live2.2ch.net/test/read.cgi/news/1042129229/

昨日のニュー速の書き込みがニュースに

85 :デフォルトの名無しさん:03/01/10 10:43
ひろゆきの放任主義もどうかしてる。

86 :デフォルトの名無しさん:03/01/10 11:25
俺らも人のこと言えないが年末年始に2ちゃんねるって恥ずかしくない?>アンチの皆さん

87 :デフォルトの名無しさん:03/01/10 11:51
ゲロ出そうになった。

88 :デフォルトの名無しさん:03/01/10 12:46
記録されようがなんだろうがマンコとかき続けるぞ!!

89 :デフォルトの名無しさん:03/01/10 15:08
某スレでも見てきたのかもしれませんが、今更レスするあなたがとても滑稽でなりません。

90 :デフォルトの名無しさん:03/01/10 16:36

国境を越えた各国警察の合同捜査により
逮捕

91 :デフォルトの名無しさん:03/01/10 20:50
複数行の文章をクリップボードにコピーするスクリプトを書いてるんですが、実行後にペーストしてみると改行が変になります。

use Win32::Clipboard;

@lines = ("aaa", "bbb", "ccc");
foreach (@lines){
$clip .= "$_\n";
}

Win32::Clipboard::Empty();
Win32::Clipboard::Set($clip);

print Win32::Clipboard::Get();

コマンドプロンプトで$clipを出力してみると期待通りなんですが・・。
どうすればいいんでしょうか?

92 :デフォルトの名無しさん:03/01/10 20:55
変になるってどう変になるのよ(;´Д`)
Windows環境なんだったら、改行コードが違うんでねぇの? \r\n にしてみたら?

93 :デフォルトの名無しさん:03/01/10 21:08
改行の部分は「・」みたいな文字が表示されます・・。
\r\nにしたら解決しました。ワーイ
ありがとうございます。

94 :デフォルトの名無しさん:03/01/10 22:56
ひろゆき君。
メルマガまってるよ。

95 :デフォルトの名無しさん:03/01/10 23:03
>>689
ワラタ

96 :デフォルトの名無しさん:03/01/11 00:00
そーいえば。
スクリプトをBATファイルに埋め込んで(perldoc.bat見たいにね)
実行させたとき、エディタの改行設定をLFにしてたもんだから
cmd.exe/command.comがトチ狂ったことがあった。

97 :デフォルトの名無しさん:03/01/11 00:27
2ちゃんねるのオランダ引越しまだぁ〜

98 :デフォルトの名無しさん:03/01/11 09:52
IP取得でも匿名は匿名なんじゃないかと思っているけど違う?
通常なら他人に知られないんじゃないの?

99 :デフォルトの名無しさん:03/01/11 10:02
>>98
もし鯖管理者以外に知られるとしたらプライバシー漏洩だけどね。
逆に、Apacheのアクセスログすら取ってなかったいままでのほうが、
運営管理責任とわれかねないヘタレっぷりなんだけど?(^_^;
#仮に内部ハッキングされてもサパーリ気付かなかったはず<証拠がないから

だから検察に証拠提出能力がないって責められたんと違う?

100 :デフォルトの名無しさん:03/01/11 10:25
======2==C==H======================================================

         2ちゃんねるのお勧めな話題と
     ネットでの面白い出来事を配送したいと思ってます。。。

===============================読者数: 139038人 発行日:2003/1/10

なにやら、連日メルマガだしてるひろゆきです。

そんなわけで、ログ記録実験ですが、いちいちサーバ指定するのが面倒なので、
全部のサーバに入れてみました。

重くなって落ちたりしてもご愛嬌ってことで。。。

んじゃ!

────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────

101 :デフォルトの名無しさん:03/01/11 11:18
set NULLnul>l &>gt>..gthosting-x.commandnull>>gt.gtgt get oldres.-num get few
make IP >renew.


102 :デフォルトの名無しさん:03/01/11 11:50
その通りっす。それに加えて民団や層化はある意味法治されてねーからな。

103 :デフォルトの名無しさん:03/01/11 12:51
名前:ひろゆき ◆3SHRUNYAXA [] 投稿日:03/01/08 17:52 ID:rLfxQ17l
>   >荒らしとか犯罪のためなの?
>   そす。

ヲチ板のいくつかのスレなどには、名誉毀損などで確実に刑法に抵触する行為、
つまり犯罪行為が溢れているが、まだ放置するのか?
事件化した場合、削除権者も、幇助に問われる可能性もあるが?
なぜ、あそこにトマトを導入しないのか?


104 :デフォルトの名無しさん:03/01/11 13:21
自由と無秩序のはき違え・・・か。

ただ、差別の非差別による差別やタブーに付いて、一般人が気軽に話せる
場所がなくなるのは勿体無い気もするなぁ。



105 :デフォルトの名無しさん:03/01/11 13:51
アルファベットを順番に変数名にしたいのですが…
$code = x41;
と、してASCIIと対応させてアルファベットを取得するのでしょうか?
全然上手くいきません(;´д`)

106 :デフォルトの名無しさん:03/01/11 15:23
>>105

$code = ord( 'A' ); # 0x41が入る
$code = chr( 0x41 ); # 文字'A'が入る

この二つの関数を覚えれば恐らく目的に適うでしょう。
けど大量に捌くのならpack/unpackを使うのが能率的。

@uchar = unpack( "C*", 'ABCD' ); # Cのunsigned char配列の代用
$string = pack( "C*", @uchar ); # 上記の逆動作

他にはハッシュ/リストを使うテーブル引きの手も。

@ord{"\0".."\xFF"} = (0..0xFF); print $ord{"A"}, "\n";
@chr[0..0xFF] = ("\0".."\xFF"); print $chr[0x41], "\n";


107 :105:03/01/11 15:33
>>106
ありがとうございます。解決しました。

108 :デフォルトの名無しさん:03/01/11 15:36
106続き;

もし「連続するアルファベット名の変数名」を一括初期化
したいとかそーいうお望みだとアレなので、

{
no strict;
my @name = "A".."Z"; #変数名
my @code = 0x41..0x5A; #初期値(数値)
for my $n ( @name ) {
eval sprintf( "$%s=%s;", $n, shift @code );
}
print $A;

普通やらないケド。

109 :デフォルトの名無しさん:03/01/11 16:05
>>108
eval sprintf( "$%s=%s;", $n, shift @code );
変数の値での変数名は・・・
${$n} = shift @code;
とするのが一般的かな。・・・蛇足でごめん。。

110 :デフォルトの名無しさん:03/01/11 16:08
他人を中傷して楽しんでるって…
ゴミだね、あんた。
人間の。

111 :デフォルトの名無しさん:03/01/11 16:14
当然含まれるかと思われ。

112 :デフォルトの名無しさん:03/01/11 18:44
$line = "abcabc2";
$line =~ s/abcabc([0-9])/ffffff$1/;     ・・・・・@
するとffffff2 が結果として出ますが
この文字列置換の部分を
$src = abcabc([0-9]);
$dest = ffffff\$1;
$line =~ s/$src/$dest/;
のように変数として動的に扱いたいのですがヤッパリ無理でしょうか?
変数生成時には$1が評価されないので文字列として$destに格納して
@と等価の処理をしたいのですが(´・ω・`)

113 :デフォルトの名無しさん:03/01/11 19:00
>>112
$line = 'abcabc2';
$src = 'abcabc';
$dest = 'ffffff';
$line =~ s/$src([0-9])/$dest$1/o;
print $line;

>ffffff2

・・・??


114 :デフォルトの名無しさん:03/01/11 19:18
>>113
レスどうもです。
$line =~ s/$src([0-9])/$dest$1/o;
のように書いてしまうと ([0-9]) $1の部分は固定になりますよね?
ここも動的にしたいのです。


115 :デフォルトの名無しさん:03/01/11 19:39
>>114
なるほど。。
eval(sprintf("\$line =~ s/%s/%s/o",$src, $dest));

116 :デフォルトの名無しさん:03/01/11 19:41
>>115
あ、oオプションは無くても可だス

117 :デフォルトの名無しさん:03/01/11 19:48
eval "\$line =~ s/$src/$dest/";
蛇足にも1つ。。

118 :デフォルトの名無しさん:03/01/11 20:22
>>114-117
まさに、コレです、期待通りの処理を行うことが出来ました
ありがとうございました。


119 :デフォルトの名無しさん:03/01/12 00:15
以前に、この世に匿名なんてものはありません

120 :デフォルトの名無しさん:03/01/12 00:24
なんでこんな殺伐としてるんでつか?

121 :デフォルトの名無しさん:03/01/12 01:54
age

122 :デフォルトの名無しさん:03/01/12 02:15
バガンっっ!!!!!ズサッ ガッ ギュィィ ゴッググモッッ雨雨
グモッチュチュイチュイチュイーーーーーーーーーーーーーーーーーーーんチュイチュイチュイチュイ――ン
罵ッゴんばっこんばっ婆ッゴんばぎゅブギュ罵ぎゅぎゅきゅ ぼごんぼごんぼごんぼごん
跋扈ン跋扈ン跋扈ンバッカンバッカン馬鹿馬鹿婆きゅうううーー
ギュ気ギュ気ギュ気いい疑義一ギいいっ ギュぎゅうぎゅううう ぶじゅぶじゅぶじゅ
  ききっーーぃ きい ゴットン
となって、ミンチ轢肉になって成仏してしまったそうです。

尚、貨物はフルパワー・全快で走行していた長い編成だったので、凄まじい勢い
で轢断・繊断(物性物理学の運動エネルギー・車輪とレールの轢断機により)され
15歳の中3は、肉片と化したそうです。
 お気の毒ですが、この肉片は荼毘に附して、灰にし、土に帰します。あしからず
ご了承くだされい。


123 :デフォルトの名無しさん:03/01/12 02:19
ああ

124 :デフォルトの名無しさん:03/01/12 05:24
多重配列で、ある要素内に含まれる要素の個数を取得するにはどうすればいいんですか?
具体的には次のような感じです。
----------------
@array = (
[x,x,x,x...],
[x,x,x,x...], ←この行に含まれる要素の個数を取得したい
[x,x,x,x...]);
---------------------
print @array[1];とかやると、要素の数ではなくて参照が表示されるんで、
もうひとひねり必要なのかと...
おねがいします


125 :デフォルトの名無しさん:03/01/12 07:14
>>124
print scalar(@{$array[1]});
こうかな?

126 :デフォルトの名無しさん:03/01/12 09:50
ニュー速発富山県警行きのキラー

127 :デフォルトの名無しさん:03/01/12 09:52
21 は凄い男だな。感動した。


128 :デフォルトの名無しさん:03/01/12 12:08
すみません。ここにいる皆様、神に質問したいのですが
Perlをexeにコンパイルする方法ってどうやるのでしょうか
知り合いにお願いされたのですが、わからなくて・・・


129 :デフォルトの名無しさん:03/01/12 12:38
>>128
perl2exeというプログラムで出来たような・・・

130 :デフォルトの名無しさん:03/01/12 13:09
>>128
実行ファイル化するには、

perlcc -o hello -o hello.pl

詳細は perldoc perlcc で。


131 :124:03/01/12 17:03
>>125
うまく表示できました。ありがとうございます。

自分なりに解説書やインターネットで調べてはいたのですが、
どうも多重配列って評判が良くない&説明が少ないようでした。
(「要するにハッシュ使え」というオチが多い)
はっきりした理由は解りませんが....。またよろしくです。




132 :デフォルトの名無しさん:03/01/12 19:15
>>128
Perl2exe
PerlApp(PDK)
Perlcc

133 :デフォルトの名無しさん:03/01/12 19:17
PerlccはWin32でコンパイル成功しませんでした。
VC++でも駄目だった。
また、どの方法も実行速度は速くならないようです。


134 :デフォルトの名無しさん:03/01/12 19:35
そりゃ Perl 自体元々 C で書かれてるんだし。
計算がメインのプログラムなら早くなるかもね。

135 :デフォルトの名無しさん:03/01/12 20:32
fusianasan

136 :デフォルトの名無しさん:03/01/12 20:36
そんなに法律に頼りたいならインターネットアクセス自体を免許制にすれば?

137 :デフォルトの名無しさん:03/01/12 20:45
倉庫番 ★=BG ★=夜勤 ★なのね。。

138 :デフォルトの名無しさん:03/01/13 01:33
use Socket と use IO::Socketの違いを教えてください

139 :デフォルトの名無しさん:03/01/13 03:46
>>138
同じだと強弁してみようとすれば、おのずと違いはわかります。

140 :デフォルトの名無しさん:03/01/13 03:47
>>131
>自分なりに解説書やインターネットで調べてはいたのですが、
>どうも多重配列って評判が良くない&説明が少ないようでした。

思考せよ! 思考せよ!!

141 :デフォルトの名無しさん:03/01/13 06:30
win2000のコマンドプロンプト上でperl実行中に
音を出すのにはどうすればいいんでしょうか?
いわゆる単純なBEEP音程度でも鳴らせられればと
思ったのですがそれらしき機能が見つけられずに悩んでます。

142 :デフォルトの名無しさん:03/01/13 07:18
print "\x07";

143 :デフォルトの名無しさん:03/01/13 07:28
Win32::Sound

144 :デフォルトの名無しさん:03/01/13 07:30
>>142
お答えありがとうございます。

・・・・・・・・ちょっと、自分の知識の無さが情けなくなってきました・・・・・・・・
一から勉強しなおします。

145 :山崎渉:03/01/13 18:24
(^^)

146 :(^^):03/01/13 19:21
print "\t\b\b";

147 :デフォルトの名無しさん:03/01/13 21:21
Windowsでプリンターを扱うモジュールってありませんか?
Win32::Printerとかないかなぁ。

148 :デフォルトの名無しさん:03/01/14 00:42
すみません、質問です。
activeperl 5.8.0 Build804 を使ってます。
動かしたいプログラム中に
use HTTP::Lite;
という表現があり、これが原因で動かないみたいです。
Can't locate HTTP::Lite.pm in @INC 〜
というエラーが出ます。
これってモジュール利用してるってことですよね?
そこで
ttp://search.cpan.org/author/RHOOPER/HTTP-Lite-2.1.1/
↑ここいって、モジュール拾ってきたんですが
これをどうすればいいのかわかりません。

ひょっとして全然見当違いな事してますか?
よろしければ教えてください。

149 :デフォルトの名無しさん:03/01/14 02:16
>>148
勘違いはしてないけど、上部の[DOWNLOAD]のtarファイルなら、readme も
ついているはずだし、そっちをダウンロードしたほうがいいとおもうよ

150 :デフォルトの名無しさん:03/01/14 02:20
>>147
wxPerl経由だとWin32ネイティブで印刷出来るらしいよ。
ActivePerlのWin32モジュールに印刷関係見当たらないですね?
ぼくも知りたいので、見つけたら教えてね。


151 :148:03/01/14 03:19
>>149
はい、そっちの[DOWNLOAD]から落としてきました。
でも中にはreadmeなくて…。

152 :デフォルトの名無しさん:03/01/14 05:59
>>148
今 手元に無いんでファイル名忘れたんだが
ActivePerlには、専用のパッケージマネージャが付いてるはず
ActivePerlインストールしたディレクトリ探してみれ
(apm だか ppm だか、そんな名前だったような気が)
それ起動して
>install HTTP::Lite
ってやりゃ、自動的に入れてくれるよ(多分

もしかしたら
perl -MCPAN -e 'install HTTP::Lite'
も使えるかもしれない


153 :デフォルトの名無しさん:03/01/14 06:52
>>148
ppm2 install HHTP-Lite
詳しくはactiveperl 5.8.0 Build804 をインストールした
ディレクトリのhtml/index.htmlを開き、ActivePerl FAQの
Using PPMを読め。
英語がわからんなどと泣き言はいうなよ。

154 :デフォルトの名無しさん:03/01/14 06:55
>>153 おッっと、チョンボ
s/HHTP/HTTP/

155 :デフォルトの名無しさん:03/01/14 06:57
チョンボ ふるっ

156 :麻雀大好き:03/01/14 07:12
いつも使ってるが、何か?

157 :デフォルトの名無しさん:03/01/14 07:57
↑いつもちょんぼしてる奴

158 :デフォルトの名無しさん:03/01/14 08:06
そういえば、麻雀プログラムのスレってあったっけ?
ネットワーク対戦プログラムならコードが小さく収まるし
他にも応用がきくと思うんだが。

159 :148:03/01/14 12:00
>>152,153
助言ありがとうございました。
ppmコマンドプロンプトで
ppm> install Lite.pm
って打ってたので出来ませんでした。正しくは
ppm> install HTTP-Lite
ヘルプ読んだら一発…。お恥ずかしい限りです。

160 :デフォルトの名無しさん:03/01/14 17:57
MCrypt-0.92を使っていますが、mcrypt_ecb関数で
暗号を復号時にうまく変換ができません。
どうも変数に入っているバイナリデータ(\0を含む)の
受け渡しがうまくいってないようなのです。
サブルーチンへバイナリデータを受け渡すいい方法って
ないでしょうか?

# それともどうしようもないのかねぇ・・・

161 :デフォルトの名無しさん:03/01/14 18:20
$name = system( hostname )
画面に表示される方を変数に入れたいのですが・・・


162 :デフォルトの名無しさん:03/01/14 18:32
しばらくぶりにこのスレ覗いたけど、まだ荒らし常駐してんのか。

163 :デフォルトの名無しさん:03/01/14 19:27
>>160
ここでボヤクより、駄目な場合をテストスクリプトにして
MCryptの作者に直接メールした方が早いんではないかい?

164 :デフォルトの名無しさん:03/01/14 19:43
>>161
$name = qx( hostname );

165 :160:03/01/14 20:06
>>163
うーむ。やはりそうですね。
メールしてみまッス

166 :デフォルトの名無しさん:03/01/15 14:09
画面から入力した文字でログのgrepをかけるスクリプトを書きたいと考えています。
変数でgrepするスクリプトを書いてみましたがうまくいきません。
どうすればいいでしょうか?

167 :デフォルトの名無しさん:03/01/15 14:15
>>166
どう書いてどう動かないのか。

やる気はございますでしょうか?

168 :166:03/01/15 14:34
166です 初心者ですみません

>>167さま
@logにログを入れた後
$a=<>;
@output = grep /$a/,@log;
と言うような感じで@outputに出力しようと考えていました

169 :デフォルトの名無しさん:03/01/15 15:01
>>168
別段問題ない気がするんだけどな。……あー。
chomp $a;っていれたらいいんでないかしらん。

170 :デフォルトの名無しさん:03/01/15 16:27
>>167
それイイ!! 禿しくワラタ。

>>168
>>169のとおりですが、パターンの中が変数じゃないと困るけど、1回代入したら変更なし、という
時は、後ろに /pattern/o とつけてやると少し速くなりますYO。

171 :山崎渉:03/01/15 17:46
(^^)

172 :デフォルトの名無しさん:03/01/15 23:26
LWP::UserAgentで requestしたあとで
print $res->content;
とやると、何故か改行一つが改行二つになってしまいます。
なんで?

173 :デフォルトの名無しさん:03/01/16 05:00
>>172
OSの名前くらい書け。
MS-WindowsならLF->CRLFになるからCRLF->CRCRLFになる。

174 :デフォルトの名無しさん:03/01/16 13:10
コマンドラインオプションを認識するようなコードを書きたいんだけど
for ( @ARGV ){
if( $_ =~ m/-test/ ){
print "TEST MODE\n";
}
}
これよりもスマートに行けるかな?

175 :デフォルトの名無しさん:03/01/16 13:12
>>174
use Getopt::Long;

176 :デフォルトの名無しさん:03/01/18 04:16
LWP を使ったユーザエージェントに wget -k とおなじことをやらせるには
どうしたらいいですか?
読みにいったページ内のアンカータグとイメージタグのURLを
絶対パスに変換して保存させたいんです。
(URLを抽出するなら変換するメソッドもURL::URIあたりに
用意されてるみたいなんですが。)

177 :デフォルトの名無しさん:03/01/18 04:45
>>176
$r->base

178 :デフォルトの名無しさん:03/01/18 04:46
>>176
HTTP::Response#base

179 :デフォルトの名無しさん:03/01/19 01:11
Win32環境でイベント(ファイルシステムからディレクトリとファイルを削除した際)を常時監視するスクリプト作りたいのですが
どのモジュール使えばいいのでしょうか?


180 :デフォルトの名無しさん:03/01/19 01:55
>>179
Win32::EventLog
ファイルを監視出来るのかは知らない。
Win32モジュールはWindowsでしか動作しない。

181 :デフォルトの名無しさん:03/01/19 03:48
ActivePerl(Build633)のインストーラが、%Path%中で指定している環境変数を
勝手に展開しちゃう件はガイシュツでつか?
かなり糞な不具合だと思うんだけど。

182 :デフォルトの名無しさん:03/01/19 14:05
↑意味不明

183 :デフォルトの名無しさん:03/01/19 16:38
>>182
分かり難くてスマソ。環境変数「Path」が、元々は、

「%SystemRoot%\system32;%SystemRoot%;・・・」

と環境変数を使って値が設定されているのに、ActivePerlのインストーラが
Perlのパスを追加するときに、既存の値の中の環境変数を展開しちゃって、

「X:\Perl\bin\;C:\WINNT\system32;C:\WINNT;・・・」

と設定しちゃう。

build62xの頃のインストーラは問題無かったハズだけど、何故にあとから
こんなバグ組み込んじゃったんだろ。

184 :デフォルトの名無しさん:03/01/19 18:20
馬具とはいえんだろ。仕様の変更か、お宅がOSを変更したかだな。
インストールの中では、環境変数とかPathの設定をさせないようにして
後で自分の趣味に合わせて勝手に設定したらどうよ。
俺はいつもそうしてる。

185 :デフォルトの名無しさん:03/01/19 18:53
>>184
>馬具とはいえんだろ。仕様の変更か、お宅がOSを変更したかだな。
OS変更してません。Win2000で再現可能です。
もし仕様変更としても、こんなアホな仕様にする必要性が理解できません。
つーか単純に、環境変数展開の考慮漏れでしょ。

>インストールの中では、環境変数とかPathの設定をさせないようにして
>後で自分の趣味に合わせて勝手に設定したらどうよ。
そりゃーこの現象に気が付いていれば、インストール後に直してやるなり対応は
可能だけど、気が付かない人はまずいでしょ。
ちなみに>>184は、これまでにこの現象、知ってましたか?

186 :デフォルトの名無しさん:03/01/19 19:11
>>185
環境変数の
%SystemRoot%\system32〜

?:\windows\system32〜
に置き換わるって言っているのか?

同じくBuild633でwinXP環境だけど全然置き換わっていないぞ。。

187 :Mr. Moonlight≠184:03/01/19 19:13
今試しにインストールしてみたけど確かにそうなるね。なんかキモいなコレ。
でもま、バグなんだろうけど%SystemRoot%なんて
実際のトコ変わることなどなさそうだし、
あまり神経質に気にしなくてもよさそうな気がするよ。

188 :デフォルトの名無しさん:03/01/19 19:20
>>186
XPでつか。こんど検証してみます。
>>187
>でもま、バグなんだろうけど%SystemRoot%なんて
>実際のトコ変わることなどなさそうだし、
>あまり神経質に気にしなくてもよさそうな気がするよ。
まあね。
でも%SystemRoot%以外の環境変数も展開されるし、気をつけないとまずいかなと。
客先の既存環境に導入するようなケースもあり得るだろうし。

189 :デフォルトの名無しさん:03/01/19 20:09
>>186
WinXP Proクリーンインストールしてサービスパック等は入れない状態で
試してみたけど、Win2000と同様に展開された値になりました。

190 :デフォルトの名無しさん:03/01/19 20:46
>>189

ActivePerlをインストしてあるXP2台と殆どなにも入れていないXPで
環境パスはなにも変わっていないよ

191 :184:03/01/19 20:49
>>185
納得するかも?って書いたんだけど甘かったな。まっ、本家にブー垂れたら?
と逝っても、もう、633はサポートしないだろうけど。
http://bugs.activestate.com/ActivePerl/query.cgi

192 :デフォルトの名無しさん:03/01/19 21:05
形勢不利と見るや知ったような事を言う>>184がいるスレはここでつか?

193 :恵理@言問橋:03/01/20 06:10
お祭りだ、ワーイワーイ。

194 :デフォルトの名無しさん:03/01/20 14:17
ここは英語が分からない馬鹿がブー垂れるスレですか?








氏寝予、おめー

195 :デフォルトの名無しさん:03/01/20 22:14
>>194
どっか書いてあるの?

196 :デフォルトの名無しさん:03/01/20 22:14
ageちゃったスマソ。

197 :デフォルトの名無しさん:03/01/20 23:01
Perl6はいつになったらできるんだコラ!あぁ?

198 :デフォルトの名無しさん:03/01/21 03:28
use と require の違いをおしえて

199 :デフォルトの名無しさん:03/01/21 03:57
use vars qw($VERSION);
$VERSION = 1.00;

ってどういうこうかがあるんですか?

200 :デフォルトの名無しさん:03/01/21 04:34
>>198
require は実行時に検査される。
useはコンパイル時に検査される。

--
print "hoge";
require Hoge::Fuga;
--
だと、 "hoge" が出力された後に エラー(Hoge/Fuga.pm がねぇよ)を吐くけど
use にした場合は、実行する前にHoge::Fugaがチェックされて、
無い場合は実行されない(hogeも出ない)
更に use は import() を自動的に呼ぶ

嘘臭い説明するとこんな感じ。
更にインチキな説明をすると
「Perlモジュールとして作られ物(.pm) はuse そうじゃないなら require」

>>199
そのスクリプト(モジュール)のバージョン設定だよ

201 :デフォルトの名無しさん:03/01/21 08:08
対象の「/hogehoge」ディレクトリの全ての「*.txt」ファイルに
ある処理をあてるにはどういう流れですれば良いでしょう?
今までは "perl -i.bak script /hogehoge/*.txt" とかやって
いたんですが、流石にちゃんとした検索がしたくなったので・・・

202 :デフォルトの名無しさん:03/01/21 10:18
>>201
UNIX なら find を組み合わせた方が UNIX 的で美しいですが。
いかがでしょう?
find /hogehoge -name "*.txt" -exec cmd.pl {} \;

203 :デフォルトの名無しさん:03/01/21 19:43
acitiveperl dev kit をアンインストしたらデバッガが起動しなくなりました

C:\>perl -d -e '0'
Unable to connect to remote host: 127.0.0.1:2000
Compilation failed in require.
main::BEGIN() called at C:/Perl/lib/perl5db.pl line 0
eval {...} called at C:/Perl/lib/perl5db.pl line 0
BEGIN failed--compilation aborted.

たすけてやってください

204 :デフォルトの名無しさん:03/01/21 21:53
>>201
glob() 多少手が込んだ事やるなら File::Find


205 :デフォルトの名無しさん:03/01/22 15:03
perl5.8のデバッガ ポインタが実行行を示してくれないんですが。
激しく使えません。

206 :デフォルトの名無しさん:03/01/22 15:05
>>205
あ、ActivePerlのです。

207 :デフォルトの名無しさん:03/01/22 18:34
>201
opendir(DIR,".");
@d=readdir(DIR);
closedir(DIR);
for(@d){print("$_\n")if($_=~/\.txt$/);}
これで如何?

208 :デフォルトの名無しさん:03/01/23 01:20
今、多人数参加型のオンラインゲームを作ろうと思っています。

ステータスなどの管理を「ユーザー名.dat」などのように、
ユーザー個別のファイルで行いたく、新規登録時にファイルを作成させたいのですが
とほほなどを見ても、それらしきコマンドが見あたらず、困っています。

mkdirはディレクトリだし・・・
こういうときはどうすれば良いのでしょう?

209 :デフォルトの名無しさん:03/01/23 02:14
知識が足りないということに気付いて、
ネット上の資料だけで安くあげるのではなく、きちんとした参考書を買う。

210 :デフォルトの名無しさん:03/01/23 02:17
open(OUT,">ユーザー名.dat");
のように'>'のようにリダイレクトを使う
リダイレクトは他にも'>>','<','+<'等あるので調べてみそ

211 :デフォルトの名無しさん:03/01/23 03:08
>209
趣味でやるには高すぎるっす(;´Д⊂

>210
それで出来たんですね!
存在しないファイルはエラーになるって思いこんでました。(つД⊂)
有難う御座いました!

212 :デフォルトの名無しさん:03/01/23 03:34
うーむ。趣味に金をかけずに何に金をかけるんだろうか。

213 :デフォルトの名無しさん:03/01/23 07:05
つか、その程度のレベルでオンラインゲーム作ろうと思うのが偉いな
がんがってくれ

皮肉じゃなくて高い目標を持つのはいい事だよ

214 :デフォルトの名無しさん:03/01/23 07:13
つか、その程度のレベルでオンラインゲーム作ろうと思うのが偉いな
がんがってくれ

皮肉だよ高過ぎる目標は挫折の元だよ

215 :デフォルトの名無しさん:03/01/23 11:29
PGPのフィリップ・ジマーマンって、
最初はプログラミングのことは全くわからないタダのオサーンで、
いろんな人にプログラミングのこと聞きまくって勉強してPGP作ったらしいね。

目標が高いのはいいんだけど、ほんとうに真剣に打ち込める目標でナイトね。


216 :山崎渉:03/01/23 20:01
(^^)

217 :208:03/01/24 04:20
>212
他の趣味にお金かけますよw

>213
ども! がんがります!

>214
・・・( ´・ω・)

>215
ジマーマン(・∀・)イイ!!
久々に出会った、やってて楽しい作業なので
まだしばらくは大丈夫です!

218 :213:03/01/24 07:41
嘘だ馬鹿
皮肉に決まってんだろ


219 :208:03/01/24 13:37
   ∧∧
   /⌒ヽ)
  i三 ∪
 〜三 |
  (/~∪
  三三
 三三
三三

220 :214:03/01/24 20:07
嘘だよ。皮肉じゃないよ。
高い目標を持つのはとても良いことだよ。
ただ一気に目標に向かうのはダメで、
その目標に達するために何が必要か細分化する必要がある。
まずは、その細分化された問題を解決する小さなプログラムを作ってみてはいかが?
それができてからだんだん大きくしていけば良いよ。
がんばれ!

221 :デフォルトの名無しさん:03/01/24 23:22
default.txt(何万行もあるものです)の内容を一行ずつ読み込み
a.txt、b.txt、c.txt、d.txt、e.txt
の内容と照らし合わせ。default.txtの内容に合致する
*.txtにカウントを1ずつ増やす、というのを高速に行う
にはどうしたらよいでしょうか?
forkで子プロセスを生んで並列に処理すればいいのでしょうか。。
とは言ってみたものの、へっぽこなのでわかりません。。
どうかご教示下さい。お願いしますっ

222 :デフォルトの名無しさん:03/01/24 23:32
a-e.txt の内容で defalut.txt に grep かければ。

223 :208:03/01/25 04:12
      ∧ ∧
     ヽ( ´∀`)ノ >220 今はただ足下を固めるばかり♪
    へノ   /        構想の一割にもキテナイ♪
      ε ノ          がんがるよ!
       >

224 :デフォルトの名無しさん:03/01/25 07:44
>>223
玉袋が冷えすぎると魔王が蘇えるから気をつけてね。
それがあの人の遺言だから。あまり無下に扱って欲しくない。
たましい。その。

225 :デフォルトの名無しさん:03/01/26 07:16
open(IN, a) とかのINってなに?

226 :デフォルトの名無しさん:03/01/26 08:36
>>225
ファイルハンドル。

INって名前の(ファイル専用の)変数に、"a" が入ってると思えばいいよ
open(IN,'a.txt')
$data = <IN>;
close(IN);

'a.txt'の別名と考えると分かりやすいかもしれない
てかドキュメント嫁

227 :デフォルトの名無しさん:03/01/26 23:43
超初心者です。
perlでwindowsのアプリケーションとかを動かすように作れますか??

228 :デフォルトの名無しさん:03/01/27 00:08
>>227
作れます。

229 :227:03/01/27 00:13
良ければ作り方か、
なんか良いHPほ教えていただけませんでしょうか??

230 :デフォルトの名無しさん:03/01/27 00:17
>>229
最初からそう言えば?もったいぶってないでさ。

system

231 :デフォルトの名無しさん:03/01/27 00:19
パイプ

232 :デフォルトの名無しさん:03/01/27 07:17
ある文字列を含まないものにマッチする正規表現

(?:(?!foo).)*




含まないものにマッチするってどういう意味?

マッチさせて含んでいたら、非0を返せばいいんじゃないの?

そういうのとはちがうんか?

233 :デフォルトの名無しさん:03/01/27 07:47
あるperlプログラムから、かなり処理に時間のかかる、別のperlプログラムを起動したいのですが、
system関数ではwaitしてしまうし、exec関数では元プログラムが終了してしまいます。
返り値は必要としてないので、一方的に起動させるだけということはできないのでしょうか?

234 :デフォルトの名無しさん:03/01/27 07:51
フォークしろ

235 :デフォルトの名無しさん:03/01/27 08:08
forkって自分の複製をつくるものじゃないの?
forkしたあとに子プロセス側からsystemを呼べってこと?

236 :デフォルトの名無しさん:03/01/27 08:10
パイプの処理で、
a.pl:
open(TEST, "|b.pl");
print open 'test';
close(TEST)

b.pl:
while($line=<STDIN>) {
printf"$line";
}

としても何も表示されません。
パイプのデータの受け渡しが間違ってると思うのですが、
ぐぐっても分かりません。どうすればいいのでしょうか。
環境はwindows2000+ActivePerl最新版です

237 :233:03/01/27 08:34
>>234-235
forkで子プロセスからexec or systemしろと言うことですね。
有難うございます。無事できました。

238 :デフォルトの名無しさん:03/01/27 08:35
ActivePerl では、fork 使わなくとも(使えなくても)

system( 1, "command ..." );

とやるとバックグラウンドプロセスを立ち上げ可能。
先頭の引数が1なのがミソ。
UNIX で system( "command ... &" ) とやるのとほぼ一緒。

>>236

open(TEST, "|b.pl");
print open 'test'; # <== これは何?
close(TEST)

○ print TEST 'test';

239 :デフォルトの名無しさん:03/01/27 09:26
>>232
それだけだったら、あんまり意味無いけど
否定条件で組み合わせると役に立つ
例えば、HTML読み込んで
<a HREF="〜">
の部分だけ取り出したいとき
(普通はまぁ リンク文字列 </a> も取り出すだろうけど)

/<a.*?>/ # ここで言明使っても良いけど

で出来るが、<a NAME="〜"> みたいに、NAMEを含んでいるタグは要らない場合

/<a(:?(!?NAME=".*?").)*?>/

ってやると
<a HREF="〜"> はマッチするが、<a NAME="〜"> はマッチしない。

寝惚け頭でかいてるが、何とか察してくれ
# ついでに↑の正規表現間違ってるような気がするから当てにしないでくれ

240 :236:03/01/27 10:10
>>238
すいません、書き込みミスでした。
正しくしても、標準入力から読み込んでも空になります。
b.plは動きはするのですが。
activeperlではうまくパイプが働かないのでしょうかね。

241 :デフォルトの名無しさん:03/01/27 10:32
>>239
>それだけだったら、あんまり意味無いけど
めっちゃ意味あるだろ・・・

242 :239:03/01/27 11:40
>>241
(?:(?!foo).)*
すまん、正規表現あんまり詳しくないんでこれに驚くほどの意味は有ると思えん
それこそ !~ /foo/ でいいじゃねぇかと思う。

否定言明だけで意味ある例解説キボンヌ

243 :デフォルトの名無しさん:03/01/27 11:58
-d スイッチのデバッガでステップ実行中に途中の行を無視して(その行は実行しない)
次の行へ移る、なんてことは無理?

244 :デフォルトの名無しさん:03/01/27 12:17
>>242
おいおい、、(?:(?!foo).)* ≠ !~ /foo/ 全然違うYO

245 :238:03/01/27 12:26
>>240

>正しくしても、標準入力から読み込んでも空になります。

ああ、そういうこと…。
Cygwin 環境下でちょっと試したが、確かにundefになるね。
最初はバッファフラッシュをやってないからだと思ったのだが

select( (select(TEST), $| = 1)[0] );

それとも少し違うようだし。
cat を対象コマンドにするとちゃんとパイプ内容が渡ってるのが確認できる。
#実際 fly.exe とか sendmail.exe がちゃんと動かせるんだし(^^;

そもそも素でSTDINから読めばコマンドライン入力待ちになるのだから、
パイプ先の b.plで <STDIN>がundefを受け取ってくるのが何故なんだろう。
#らくだ本に関連項目あった気がする。IPC::Open2 の出番かもしれない。

>>243

実行前にコメントアウトしとくのはだめなの?
ブレークポイントで任意の位置で中断することはできるけど、
リスタートはその位置か、ファイル先頭からしかできなかった記憶。

246 :238:03/01/27 12:32
あー。これで逝けたYO!

open(TEST, "| perl b.pl"); # <== ちゃんとコマンド名で叩く
select( (select(TEST), $| = 1)[0] );
print TEST "test\n";
close(TEST);

きちんと perl.exe 経由で起動すればパイプ繋がるわ。
#! 行に頼るとダメっぽい…。

247 :デフォルトの名無しさん:03/01/27 12:40
239はアフォだな・・・ってことは232もアフォなのね

248 :243:03/01/27 12:51
>>245
なるほどコメントアウトするしかないですか。
わりと長めのトレースの途中でコメントアウトしなきゃいけない行に
気付いたときになんとか出来ないだろうかって思ったもので。
ありがとうございます。地道にやってみます。

249 :デフォルトの名無しさん:03/01/27 16:18
はじめて質問します。
数値を出力する時に3桁毎に「,」をつけたくてC言語だと
setlocale(LC_ALL, "");
printf("%'d\n",123456789);
とすることで、「123,456,789」の出力結果が得られますが
perlだと
use POSIX "locale_h";
setlocale(LC_ALL, "");
printf "%'10d\n", 123456789);
としても、「'10d」としか表示されません。

何か方法は無いでしょうか。



250 :デフォルトの名無しさん:03/01/27 16:24
>>244
>>247

>239でも>232でもないが

何となく全く同じではないというのは分かるんだが、
こんな時に使うという解説キボンヌ

251 :デフォルトの名無しさん:03/01/27 16:35
>>249
どんな方法でも構わないのなら、
正規表現でも出来る。

252 :251:03/01/27 16:54
やり方書いてなかった。
例えばこんなの

$_= 1234567890;
() while s/^(\d+)(\d\d\d)/$1,$2/;
print;


> 1,234,567,890

253 :デフォルトの名無しさん:03/01/27 18:15
>>252
ピリオドが抜けてまっせ

254 :デフォルトの名無しさん:03/01/27 19:28
>>253
しょーもない指摘するくらいなら自分で書け!

my $a = 1234567890.1234;
1 while $a =~ s/^([^\.\D]+)(\d{3})/\1,\2/;
print $a; # > 1,234,567,890.1234

255 :デフォルトの名無しさん:03/01/27 20:23
>>254
何興奮してんの?

256 :デフォルトの名無しさん:03/01/27 20:26
アフォが4人・・・っと

257 :デフォルトの名無しさん:03/01/27 20:29
>>254 指摘されて逆上するのはみっともないな

258 :デフォルトの名無しさん:03/01/27 20:46
>>254=252自作自演でつた。

・・・アフォだな。

259 :デフォルトの名無しさん:03/01/27 21:01
253=255=256=257=258

260 :デフォルトの名無しさん:03/01/27 21:03
必死だなw

261 :デフォルトの名無しさん:03/01/27 21:10
まぁ、モチツケー

ところで、なんか面白そうなモジュール無いかい?
便利なのでもいいし、遊び甲斐があるのでも良いし

262 :デフォルトの名無しさん:03/01/27 21:12
>>260
図星のときはヘタに言い返さないこと。さらに馬鹿に見えるよ(w

263 :デフォルトの名無しさん:03/01/27 21:14
と言うことは図星なのかw

264 : ◆hMJAPH9PWA :03/01/27 21:52
これとか面白そう。遊びにしか使えないだろうけど。
http://search.cpan.org/author/SIMON/rubyisms-1.0/

265 :デフォルトの名無しさん:03/01/27 22:37
>>259
それは間違ってる。>>257は俺だ。

266 :251:03/01/27 23:06
254も俺じゃないんだが。

何故わざわざ変数名省略したのに戻す必要がある?


まぁいいや。

267 :236:03/01/28 01:09
>>246
どうもわざわざ有難うございますた。
無事できました。

268 :デフォルトの名無しさん:03/01/28 06:59
>229
ActivePerlのヘルプを見る。GUIしたければperl/Tk。他のWinアプリを制御したければ
Win32::OLE。

「perlの小技」でぐぐってみ。

269 :デフォルトの名無しさん:03/01/28 07:38
>>249
すんません
むずかしすぎてわかりません

もうすこしwかりやすくおねがい

270 :イヌ:03/01/28 17:45
「何かキーが押されたら終了」ということがやりたいのですが、
getc()ではEnterを押さなくてはなりません。
どうすれば、ワンキーで終了できるのか、教えてくれだワン。



271 :デフォルトの名無しさん:03/01/28 18:07
サブルーチンで読み込んだデータを配列に格納してメインに
戻しているのですが,値が入っていないようなんです.
サブルーチンの中でprintさせるとちゃんと値が入っているのですが。
どなたかご教授を。

@xx=&DatRead($setdir1,$file);
for $i ( 0 .. $#xx ) {
print "xx=\t [ @{$xx[$i]} ],\n";
}

sub DatRead{
local @xx;

open(list,"$fn")
while($line=<list>){
chomp($line); # 改行記号を削除
($dmy,@x)= split(/\s+/,$line); # 先頭にDMYを入れて読み込む
push @xx,[@x];
undef @x;
}

@xx;
close(list);
} # END OF SUB

272 :bloom:03/01/28 18:16
http://www.agemasukudasai.com/bloom/

273 :デフォルトの名無しさん:03/01/28 18:29
>>271
close(list);
@xx;
} # END OF SUB

70 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)