トップページ⇒php
988コメント342KB

CGIに依存しないPerlの話題一般

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。2001/05/31(木) 21:49ID:bKRSBFew
・コマンドラインからのPerl活用
・モジュール、オブジェクト指向プログラミング
・Perl6や.NET対応など
・各種GUIツールキット(Perl/Tk, Gtk-Perlなど)
・他言語による拡張(Inline::*, XS, Swigなど)

についてマターリと語り合うスレッドです。

#CGI関連の話題は、なるべく専用スレッドで。
0448名無しさん@お腹いっぱい。01/11/30 21:22ID:???
>>447 ウザイ。お前こそ消えろ。
口先だけのヘタレが大きな口をきくなカスが。

>>446 例えどんな物でも、公開してフィードバックを得ようとするのは有益だと思われ。
ただ2chはどうかな...と思わないでもない。
0449名無しさん@お腹いっぱい。01/11/30 21:32ID:???
>>446
*.pmとかmod_perl MLとかperlMLのがいいんじゃない?
0450名無しさん@お腹いっぱい。01/11/30 21:59ID:???
普通はcomp.lang.perl.modulesと思うよ。
ただ、似たようなモジュールがないかよーく確認してね。

ここに張っても誰かレビューしてくれるとは思うよ。
0451/名無しさん[1-30].jpg01/12/01 21:19ID:???
>>450様ほかの厚意に甘えてうpしました。
http://home.att.ne.jp/wind/love_cats/Time-JapanHolidays-0.03.tar.gz
0452名無しさん@お腹いっぱい。01/12/03 08:25ID:ttBTmnrV
age
0453名無しさん@お腹いっぱい。01/12/03 10:21ID:???
Perl5.5ってPerl5.005のこと?
0454名無しさん@お腹いっぱい。01/12/03 10:25ID:Jpx3osh/
あ。質問なのにsageちゃった。
ずっと疑問だったんで、誰か教えてください>>453
0455むぎ茶01/12/03 12:31ID:???
>>451
スキル低いので細かいところしか指定できんです(_ _)
@ISA は use base のがかっちょいいかと。
@EXPORT よりは @EXPORT_OK のほうがいいのでは?
名前空間分かれてるほうがいいって人多いと思う
0456むぎ茶01/12/03 12:34ID:???
>>451
read_holiday_list だけど
use Time::JapanHolidays(holidaysList => "myHolidays.list");
ってして IMPORT で呼んどいてくれるとうれしいかも。
0457むぎ茶01/12/03 12:39ID:???
>>451
デフォルトのデータは日本の祝日だけど中身はそうじゃないんで
Time::Holidays.pm のほうがよいのでは?
あと Holiday だけじゃなく MemorialDay もはいってるから
そういう名前もいいかも

あとね日付のデータだけど デフォルトにマージする仕掛けも欲しいです
身近な記念日とかマージして登録できるとうれしい
0458むぎ茶01/12/03 12:43ID:???
>>451
計算を必要とする祝日がべた書きなのがちと悲しい
ここもカスタマイズできるとうれしいなと。
0459名無しさん@お腹いっぱい。01/12/05 03:02ID:???
451はやる気なし。
0460名無しさん@お腹いっぱい。01/12/05 20:13ID:vhbZliPL
perlでグラフを書きたくて今月号のCマガのperlの連載にのってたGDGraphを
いれようと思ったのですが、ppmでinstall GDGraph としてyesを選んでも
Error installing package 'GDGraph': Could not locate a PPD file for package GDGr
aph
というエラーが出ます。
どうすればいいんですか?
0461名無しさん@お腹いっぱい。01/12/05 23:40ID:???
>>460
http://www.geocities.co.jp/Bookend-Soseki/6187/xiaxiu/pg/5.html
046246001/12/06 03:51ID:???
>>461
perlのバージョン上げたらいけました。
0463名無しさん@お腹いっぱい。01/12/12 06:28ID:???
ところで、451はどこいった?
0464名無しさん@お腹いっぱい。01/12/12 11:45ID:fZlaima3
LWP::UserAgent\?\?\???\????§????´?????
credentials\?\?\?\????????????°????????????????????????????????????´?°??????????±????????????????¶??¨??????????

?????¨??
\???\?192.168.0.1??admin????????\???\¶????root??\?\?\???\?pass??
credentials('192.168.0.1', 'admin', 'root', 'pass');
??\???\?????????\?\?\¨\?\???????????????
401 Unauthorized?????????????????±??????????

\?\???\?\?\???v5.6.0 built for i586-linux
0465すいません01/12/12 11:57ID:fZlaima3
LWP::UserAgentモジュールの認証に関する
credentialsメソッドがちゃんと動いていないみたいなんです。(使い方を間違ってるだけかもしれないので教えて下さい)

たとえば
サーバ192.168.0.1のadmin権限に、ユーザー名root、パスワードpassに
credentials('192.168.0.1', 'admin', 'root', 'pass');
をコールしてからリクエストを実行しても、
401 Unauthorizedしか返ってくるだけなんです。

ヴァージョンはv5.6.0 built for i586-linuxです。
0466名無しさん@お腹いっぱい。01/12/12 15:19ID:I43ox8JP
マニュアルを見る限りそーいう使い方はしないぞ。
perldoc LWP::UserAgent
/credentials

$ua->credentials($netloc, $realm, $uname, $pass)
Set the user name and password to be used for a realm. It is often
more useful to specialize the get_basic_credentials() method
instead.
0467すいません01/12/13 00:54ID:GtMIZEFM
credentials('192.168.0.1:80', 'admin', 'root', 'pass');
というふうに、第一引数に"ホスト名:ポート"と指定したらできました。
0468名無しさん@お腹いっぱい。01/12/19 05:09ID:???
詳しい人話題振って欲しいなage
0469あぼーんNGNG
あぼーん
0470名無しさん@お腹いっぱい。01/12/20 20:30ID:???
436の人どうだった? age
0471名無しさん@お腹いっぱい。01/12/23 10:56ID:DF8u6Gm1
こんなことしてもいいんでしょうか?

sub a {
my @i = (1, 2,3,3,3,3,3,3,3,3,3,33,3,3,3,3,3,334);
return \@i;
}

my $i = &a;
print $_ foreach ( @{$i} );

一応ちゃんと動くみたいですが、
my変数と
C言語の自動変数とは全然意味が違うんでしょうか?
0472名無しさん@お腹いっぱい。01/12/23 11:26ID:???
ok! 何の問題もなし。参照がある限り破壊されることはないよん。
0473デフォルトの名無しさん01/12/23 11:30ID:gQHYl0sG
動くね
何でだろ?リファレンスが有効だとスクラッチパッドって開放されないのかな・・・・
Perlのうんちくは全然分からないや。
個人的には凄く嫌だ(w

どなたか解説キボン
0474デフォルトの名無しさん01/12/23 11:32ID:???
あ、有難う>472 (^^
でも気持ち悪いなぁ・・・・
0475名無しさん@お腹いっぱい。01/12/23 13:35ID:???
ポインタを返しても変数は死んでるっていうほうが変だと思うけどねぇ……。
呼び出し元で使いたいからリファレンスを返すんでしょ。
使いたいものを返せばそれは使える、というのがPerl的なの。

>>473
>>472 がすでに全て解説している。
0476名無しさん@お腹いっぱい。02/01/01 18:04ID:???
age
0477名無しさん@お腹いっぱい。02/01/02 00:03ID:0AIkB5pj
ぬぬ。bcc32でなんとかXSモジュールをビルド出来ないものかと
二時間ほど粘ってみたがダメだった。無念じゃ…。
0478 02/01/02 10:03ID:XJ6nVU2M
>>477
どのモジュール?
mingw32とかはだめ?
あと、bcc32付属のmake使わずに、gnu makeつかえば、bcc32でもいけるかもね
0479名無しさん@お腹いっぱい。02/01/02 13:19ID:???
makeは付属のmakeだと明らかにダメなのでMake.pm(pmake)使ってます。
問題はperl.hとperlvars.hがコンパイルエラー。

エラー E2257 C:\perl5.6.1\lib\CORE\perl.h 1755: , が必要
エラー E2257 C:\perl5.6.1\lib\CORE\perl.h 1756: , が必要
エラー E2257 C:\perl5.6.1\lib\CORE\perl.h 1757: , が必要
エラー E2257 C:\perl5.6.1\lib\CORE\perl.h 1758: , が必要
エラー E2141 C:\perl5.6.1\lib\CORE\perlvars.h 22: 宣言の構文エラー
エラー E2141 C:\perl5.6.1\lib\CORE\perlvars.h 39: 宣言の構文エラー
エラー E2141 C:\perl5.6.1\lib\CORE\perlvars.h 22: 宣言の構文エラー
エラー E2141 C:\perl5.6.1\lib\CORE\perlvars.h 39: 宣言の構文エラー

因みに

#line 1755 perl.h
typedef pthread_t perl_os_thread;

です。
他のtypedefは引っかからないのに…お手上げです。

mingw32はよくわかりません。
0480名無しさん@お腹いっぱい。02/01/02 16:05ID:???
477,479です。

mingwはヘッダファイルのコンパイルは通りますが、
Makefileが全然ダメですね。
Config.pmのcc/ld/cppを分かる範囲で書き換えてもまだダメです。
mingwでコンパイルしたPerlがあればいいのかも…。
0481名無しさん@お腹いっぱい。02/01/02 20:46ID:???
ふと思ったんだがPerl6の"is"演算子ってPerl5の":"演算子みたいなものなんだろうか?
0482デフォルトの名無しさん02/01/03 02:15ID:???
>>480
bcc32は独自拡張、独自縮小が甚だしいから(GCCもだけど ^^ )
素直にCygwin入れてgcc使った方が良いような。。。。
「,」引っ掛かりなんていかにもbccが原因っぽい
0483_gunzip@ブラウザ変ですよん02/01/03 05:20ID:???
>>477, 479-480

うちの(久しぶりに立ち上げた)Windows環境の場合、
Borland C++ Compiler D:/bcc55
ActivePerl5.6.1 D:/Perl
なんだけど、

1. cp, mv, rm, mkdir等の基本的なコマンドが揃っていること確認。

2. d:/bcc55/bin/coff2omf で D:/Perl/lib/CORE にある perl56.libを
perl56-omf.lib(仮称) に変換。(元のファイルは変更されない)
$ coff2omf perl56.lib perl56-omf.lib

3. D:/Perl/lib/Config.pmを以下のように修正する。(必ずバックアップをとる)

34,35c34,35
< cc='cl'
< ccflags='-nologo -O1 -MD -DNDEBUG -DWIN32 -D_CONSOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DPERL_MSVCRT_READFIX'
---
> cc='bcc32'
> ccflags='-O2 -DNDEBUG -DWIN32 -D_CONSOLE -DNO_STRICT -DHAVE_DES_FCRYPT -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS '

43c43
< libs=' oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib netapi32.lib uuid.lib wsock32.lib mpr.lib winmm.lib version.lib odbc32.lib odbccp32.lib msvcrt.lib'
---
> libs='import32.lib cw32i.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib netapi32.lib uuid.lib wsock32.lib mpr.lib winmm.lib version.lib odbc32.lib'
0484_gunzip@ブラウザ変ですよん02/01/03 05:21ID:???
593,595c593,595
< ld='link'
< lddlflags='-dll -nologo -nodefaultlib -release -libpath:"D:\Perl\lib\CORE" -machine:x86'
< ldflags='-nologo -nodefaultlib -release -libpath:"D:\Perl\lib\CORE" -machine:x86'
---
> ld='ilink32'
> lddlflags='-L"D:\Perl\lib\CORE" -c -x -Gn -ap -Tpd -machine:x86'
> ldflags='-L"D:\Perl\lib\CORE" -c -x -Gn -ap -Tpd -machine:x86'

601c601
< libperl='perl56.lib'
---
> libperl='perl56-omf.lib'

668c668
< optimize='-O1 -MD -DNDEBUG'
---
> optimize='-O1 -DNDEBUG'

4. テスト用のXSを書いてみる。
$ h2xs -A -n MyTest
$ cd MyTest

---- MyTest.xs ----
#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"

MODULE = MyTest PACKAGE = MyTest

void
hello()
    CODE:
        printf("Hello XS World!\n");
-------------------
0485_gunzip@ブラウザ変ですよん02/01/03 05:23ID:???
$ perl Makefile.PL
# "コマンドが見つからない"云々と文句を言われるかもしれないが、何の問題も無い

出来たMakefileを少し修正する。

774行目からのpm_to_blibの辺りで何故かエラーになるので (なぜだぁ)
pm_to_blib: $(TO_INST_PM)
    echo "ahyahya"
-- 以降、ファイル終端まで削除 --
とでもしておく。(取りあえず重要な個所ではないので)

408 行目辺りの(見つからなかったら"subst"で検索)
$(LD) $(LDDLFLAGS) $(OTHERLDFLAGS) $(LDFROM),$@,,$(subst /,\,$(PERL_ARCHIVE)) $(subs 408 t /,\,$(LDLOADLIBS)) $(subst /,\,$(MYEXTLIB)),$(subst /,\,$(EXPORT_LIST)),$(RESFILES)

の部分を

$(LD) $(LDDLFLAGS) $(OTHERLDFLAGS) $(LDFROM),$@,,$(PERL_ARCHIVE) $(LDLOADLIBS) $(MYEXTLIB),$(EXPORT_LIST),$(RESFILES)

と変更。(substってなんだべさ)

$ make
makeはBorland C++に付属のものを利用する。
Mksymlists.pmでuse strictが原因で失敗した場合、strictをコメントアウト(おい)

....これで正常にビルドできるはず。(うちでは出来た)

make後は、test.plに MyTest::hello(); を追加して
$ make test
1..1
Hello XS World!
ok
....でめでたしめでたし。内部APIの利用も問題無かった。
0486_gunzip02/01/03 05:29ID:???
普段Windowsを使っていないせいもあって、かなりいい加減な説明なのはお許しを。
何かの参考になれば、ということで。

#書き込める時と書けない時があるなぁ
0487名無しさん@お腹いっぱい。02/01/03 14:59ID:???
ヤター!
簡単なテストは成功しました。
substはWindowsのコマンドみたいです。
Makefileは特に変更なしでもオッケーでした(何故?)
_gunzipさんありがとうございます!

…が!試しにCPANからWant-0.5を取って来てビルドしようとしたんですが…
リンクが失敗してしまいます。ガクッ。

> Error: 外部シンボル '_Perl_pop_return' が未解決(D:\PERLARC\WANT-0.05\WANT.OBJ
が参照)

ちなみにWindows ME・ActivePerl5.6.1-630です。(Win9xだからかな…)
助けて_gunzipさん!
0488 02/01/03 16:02ID:???
gudでperlのデバッグができると聞いてさっそく M-x perldb とやってみて、なるほど
動いているのですが、C-x SPとかで ブレークポイントが設定できなかったり、
スタックさかのぼれなかったりしているんですがそんなもんなんですか?
0489_gunzip02/01/03 23:03ID:???
>>487
むむ..ActivePerlの perl56.lib には Perl_pop_return()が無いのか...。
(他にも無いAPIがあるのかなぁ...。cygwinのlibperl5_6_1.dllにはあるのだが)

代替策としては、Perl_pop_return()の役割から考えて、
Want.xsの564行目の pop_return();を
if (PL_retstack_ix > 0)
    --PL_retstack_ix;
と変更すればよい。
Linux, cygwinでは、これで全てうまく行った。("make test"も全て ok)
(もっとも、修正無しでも正常にビルド、テストを通るのだが)

....ただ、ActivePerl5.6.1-629 + Windows98 + bcc32では、
make test段階で「不正な処理」で強制終了になるみたい。
んー取りあえず試してみて欲しいです。

>Makefileは特に変更なしでもオッケーでした(何故?)
pmakeってMakeモジュールに付いてくるコマンドだったのか。
これを使えば>485の修正は不要ですね。
0490名無しさん@お腹いっぱい。02/01/04 11:47ID:???
やったーー!
Want.pmは成功です!
make testも問題なく通り無事インストールできました。
他、Storable・NKFも成功。(他にも色々インストールしてみたかったはずだがイザとなると思い出せず…)
ありがとうございましたっ!

いや〜、WinでXSなんてVC++がなければ出来ないものと正直諦めていました。
_gunzipさんホントに感謝します。
0491名無しさん@お腹いっぱい。02/01/05 15:39ID:DL1rkDyE
ActivePerl build 631 age

コレのパッチかな。
http://homepage2.nifty.com/kipp/perl/build630bug/index.html
0492名無しさん@お腹いっぱい。02/01/06 16:34ID:2f+STVY+
>>436です。
諦めてcommand /cを通じて使っていたのですが、
ふと思いついたことがあって試したら当たりでした。
どうやらSOSはロングファイルネームは受け付けないみたいですね。
OSの再インストールをする際、PerlのパスをC:\PerlからC:\Perl5.6.1に変更したのが原因でした。
皆さんも気をつけてください。
0493名無しさん@お腹いっぱい。02/01/07 23:43ID:BNEoib8d
すいません,ファイルハンドルを関数に渡す場合について質問です。

open FILE, '+< data.txt' or die $!;
func(*FILE{IO});
sub func {
 my $fh = shift;
 print <$fh>,"\n";
 seek $fh, 0, 0 or die $!;
 truncate $fh, 0 or die $!;
 print $fh "AAA$$\n";
}

以上のようにやると truncate で No such file or directory を吐いてしまうんですが
func(*FILE{IO}); を func(\*FILE); に変えると問題なく動きました。
なんででしょう? いろいろ調べたけど,さっぱり分かりませんでした。
教えて!!偉い人!
0494名無しさん@お腹いっぱい。02/01/08 00:30ID:???
truncateにはファイル名を渡せるので
$fhをファイル名と判断しちゃってる感じ。
IO::Handleへのリファレンスをファイルハンドルと
判断しないっぽいですね。
truncate *$fh, 0 or die $!;
でいちおう回避。
049549302/01/08 00:37ID:???
>494
そうでしたか。また一つ賢くなれました。
ありがとうございました。
0496 02/01/08 14:47ID:???
perlのエラーメッセージってファイル名(行数)な形じゃないから
タグジャンプが使えなくていやだなあ。
0497名無しさん@お腹いっぱい。02/01/09 17:11ID:???
>>496
じゃあそういうモジュール作って〜。
0498名無しさん@お腹いっぱい。02/01/10 12:46ID:???
http://sawayaka.msweb.jp/service/shopping/saba/index.html
これはどう?
0499名無しさん@お腹いっぱい。02/01/10 12:48ID:???
>>498 sine
0500500GET02/01/10 12:49ID:???
500GET
0501名無しさん@お腹いっぱい。02/01/11 09:42ID:IHYyu2/p
sigtrapの使い方がいまいち分からない。
Ctrl+Cでファイルをクローズして終了したくて、
use sigtrap qw(die normal-signals);
END{close FH;}
のようにしてるけど、アプリケーションエラーになってしまう。(Win2K)

どうすればいいんだ。
0502名無しさん@お腹いっぱい。02/01/13 10:01ID:???
あげ。 
0503名無しさん@お腹いっぱい。02/01/13 12:29ID:???
>>501
perldoc sigtrapしてみた?まさにそのまんまの例が載ってるけど(w、
>Die on HUP, INT, PIPE or TERM:
>  use sigtrap qw(die normal-signals);
これはdieしたいときの設定。

501がやろうとしているシグナル受信時のハンドラ設定はこんな感じ:
sub my_handler { print "Caught a signal! FH is being closed..."; close FH }
use sigtrap qw(handler my_handler normal-signals);

ちなみに、ハンドラの再設定は、$SIG{...} = \&my_handlerでOK!
終了すべき状況なら、my_hanlderでexit()。
あと、ハンドラ内での再設定も時に有用。(e.g. ALRM)
050450302/01/13 12:47ID:???
>>503
ああ、>>501が言いたかったのは、
「dieでアプリケーションエラーになってしまう。(Win2K)」
ということか、、、逝ってくる。
050550102/01/13 15:34ID:???
>>503-504
いえいえ、レスありがとです。
そっちの方もやってみたんですけど、 my_handler() の中で exit() するとやっぱり
アプリケーションエラーになってしまうんですよね。まあファイルクローズまでは
逝くので問題ないと言えばないのですが。
う〜ん、とりあえず我慢してこのまま使います^^;

ところでWinではキーボード入力待ちってできないのかなぁ? 他の環境用には
そういうモジュールがあったと思うけど…
0506名無しさん@お腹いっぱい。02/01/13 20:13ID:???
>>505
あるような気がするよ。
perl -MCPAN -e shell
でモジュール入れるときに、テストで入力待ちになるじゃん?
0507名無しさん@お腹いっぱい。02/01/13 20:23ID:???
>>265-267 を応用して出来ないかな
0508名無しさん@お腹いっぱい。02/01/17 01:21ID:???
あげとこっと
0509名無しさん@お腹いっぱい。02/01/17 02:31ID:???
1は責任持って盛り上げるべし
0510プ02/01/17 20:33ID:6zEN00QH
func1();
sub func1()
{
  my $ret = func2();
  print "return code -> $ret \n";

}
sub func2()
{
  eval {
    return 1;
  };
#  if($@){} # <==
}

これさあ、コメント外すと返却値が無くなんだけど
分かる人居ます?  
0511名無しさん@お腹いっぱい。02/01/17 20:44ID:???
そのまんま、 if($@){} が何も値を返さないからでしょ。
0512名無しさん@お腹いっぱい。02/01/17 20:59ID:???
もしかして、return 1; で func2 から抜けているつもりなのかな?
eval内のreturnはevalから抜けるだけだよ。
でreturnした値はevalの返り値になる。
0513プ02/01/17 21:00ID:6zEN00QH
ん、ちょっと意味不明系
if($@){return 100;}
だとどうなの
0514名無しさん@お腹いっぱい。02/01/17 21:41ID:???
>>513
なにがどうなの?
$@に何も入ってないんだから変わらないよ。
たぶんあなたの望んでいる動作は、
sub func2()
{
  my $ret = eval {
    return 1;
  };
  return $ret if $ret;
  if($@){}
}
こういうことでしょ?

ところで、検証してて思ったけど、
if って評価した値が偽、かつelseがないと評価した値が返るのね。
sub func { if(0){} }
だと 0 が返る。どうでもいいけど。
0515heno02/01/17 23:08ID:oR04RU/Z
 「ファイルグロブが可能なmake」のような効果をPerlで実装して
みたいのですが、ファイルの変更時刻を得るにはどのようにすれば
良いのでしょうか?
0516名無しさん@お腹いっぱい。02/01/17 23:33ID:???
-M
051751502/01/17 23:33ID:???
(自力解決) stat/lstatで逝けるとわかりました。
051851502/01/17 23:35ID:???
>>516
-M だと日数比較だそうで、makeのような秒単位で比較する
効果が期待できないと思われます。
コメントありがとうございます。
0519名無しさん@お腹いっぱい。02/01/18 03:40ID:Z2zR15g4
Perlでプロセスを跨いでディスクリプタパッシングさせたいんですけど、どっかにサンプル転がってないっすかね。
0520名無しさん@お腹いっぱい。02/01/18 04:03ID:???
俺用語は辞めようねボク

http://www.google.com/search?q=descriptorpassing&hl=ja
http://www.google.com/search?sourceid=navclient&q=%83f%83B%83X%83N%83%8A%83v%83%5E%83p%83b%83V%83%93%83O
0521名無しさん@お腹いっぱい。02/01/18 04:43ID:???
>>520 意味は分かってるよな? サンプルを示すくらい簡単だろ。
0522名無しさん@お腹いっぱい。02/01/18 05:34ID:???
>>519
ほれ。
http://search.cpan.org/search?dist=Socket-PassAccessRights
つーか検索ぐらいしろよと。
http://www.google.com/search?q=%22descriptor+passing%22+perl
0523名無しさん@お腹いっぱい。02/01/18 09:37ID:Z2zR15g4
>>522
ありがとうございます。
一応[email protected]のアーカイブは漁ってるのでSocket::PassAccessRightsの存在は知っていたのですが、
このモジュールはXS使ったモジュールなんですよね。
でIPC::SysVやIPC::Msgだけでなんとかならないかなー、と試行錯誤した結果質問させてもらった次第です。

でも当たり前に考えてファイルディスクリプタのアドレスっちゅーか番号を得る必要があるのですが、Perlのファイルハンドルはそこらへんが抽象化されてるので現行のPerlだけでは無理なんですよね。
おとなしくSocket::PassAccessRights使います。

あー、ディスクリプタパッシングとは何ぞやってヒト向けに説明付けると、異なるプロセス同士でファイルやソケットハンドルを受け渡しする方法のことです。
0524 02/01/18 10:13ID:???
数十万エントリぐらい256バイトデータがあるのですが、連想配列使うのはマヅイですか?
0525日下部圭子 ◆ib749tYo 02/01/18 14:40ID:???
>>524

"/sage/524" wrote in message
news:[email protected]...
> 数十万エントリぐらい256バイトデータがあるのですが、連想配列使うのはマヅイ
ですか?

テストデータを作って実験することをお勧めします。
数百Mもメモリをつんでいるマシンなら、大丈夫だとはおもいますが。

----------------------------------
||//
(@_@) Kusakabe Keiko
----------------------------------

0526名無しさん@お腹いっぱい。02/01/18 20:54ID:???
>524
foreachとか?(笑)
whileで読み込みつつ回すのはだめなんですか?
0527名無しさん@お腹いっぱい。02/01/18 23:21ID:fgthOeGG
Perlモジュールの、
fj::void
はどこにあるんでしょうか?
CPANを探しても有りませんでした
0528名無しさん@お腹いっぱい。02/01/18 23:23ID:???
>527
まじかよ!
どんなモジュールなの?
0529heno02/01/19 13:55ID:WCPxz8Ug
Perl上で strings を呼ばずに同様の処理を行うには、一般的にどうすると良いのでしょうか?
0530名無しさん@お腹いっぱい。02/01/19 15:07ID:???
>>529
stringsって? 同様って何と?
もっと具体的に書いてください。
053152902/01/19 16:02ID:WCPxz8Ug
コメントありがとうございます。
バイナリを読み込んだ後に、その中から表示可能な文字列だけを取り出したいのです。

strings - ファイル内の表示可能な文字列を表示する
ttp://www.jp.freebsd.org/cgi/mroff.cgi?subdir=man&lc=1&cmd=&man=strings&dir=jpman-4.4.0%2Fman§=0
0532名無しさん@お腹いっぱい。02/01/19 16:38ID:CWyCsorl
http://www.jp.freebsd.org/cgi/cvsweb.cgi/src/usr.bin/strings/strings.c?rev=1.10
と同様な処理をPerlで作ればいいわけだが、
割合簡単そうですね

File::strings とかあるかなってCPAN見たけどなかった
053352902/01/19 17:21ID:WCPxz8Ug
>>532
なるほど (^_^ ;;)

ここのあたりをPerlで実装すれば良さそうですね。
#define ISSTR(ch) (isalnum(ch) || ispunct(ch) || \
(isspace(ch) && (!iscntrl(ch) || ch == '\t')) || \
(isascii(ch) && isprint(ch)))

#私も始め strings() という関数があるのではないかと思っていました・・・
053452902/01/19 18:22ID:???
 どうも正規表現の [:alnum:] 等を使えばほぼ同様の事ができそうに
思いましたが、今回は個別に置換 (s/\x00// 等) して済ませてしまい
ました。
 コメントありがとうございました。
0535名無しさん@お腹いっぱい。02/01/25 03:32ID:llLEjDhT
どなたか、Perl/Tk使いの方、

windoze上でPerl/Tk使う場合、日本語はsjisじゃないと駄目ですよね。
でも、日本語の文字列処理はeucじゃないと駄目な場合がありますよね。

描画と文字列処理でファイルを分ければ問題なしですが、
同一のファイルで描画と文字列処理を文字化けせずに行う方法知ってたら
お願いします。
ファイルを euc で書いて、Perl/Tk で使う日本語部分だけ Jcode.pm を
使って変換してみたりしましたが、駄目でした。
(どうも、Perl/Tkについての理解が足りない気がする…)
もし、具体例が必要でしたら書きます。

環境は、Win98SE, ActivePerl 5.6.1(631), Perl/Tk 800.023
Jcode.pm 0.79
053653502/01/25 03:59ID:???
ぎゃふん。フォント名をsjisに変換し忘れてたのが原因でした。
逝ってきます。
0537名無しさん@お腹いっぱい。02/01/27 02:12ID:Sw8wyViQ
ホスィ...
http://www.thinkgeek.com/stuff/apparel/321a.shtml
0538名無しさん@お腹いっぱい。02/01/27 09:55ID:???
>537
そうかなぁ?なんか色合いがタクっぽくてやだなぁ。
もっと粋な色使いにして( ゚д゚)ホスィ…
0539名無しさん@お腹いっぱい。02/01/28 09:32ID:???
>>538
Child Processの方は子供に欲しいぞ。誰かクレ。
0540名無しさん@お腹いっぱい。02/01/31 22:34ID:???
kakkiganaizo-
0541名無しさん@お腹いっぱい。02/02/02 11:12ID:+ALef/KR
BSD Resouce
の使い方わかるかたいますか?

ttp://www.perl.com/CPAN/modules/by-module/BSD/
time()を使うときに精度UPできるようなのですが、
readme読んでも使い方がわかりません・・・・。
0542名無しさん@お腹いっぱい。02/02/02 11:23ID:???
time() じゃなくて times() じゃないの?
使い方は組み込み関数のtimes()と同じだよ。
054354102/02/02 11:33ID:+ALef/KR
そうです。すみません。times()でした。

じゃ、use BSD::resource;
とだけ宣言して、普通にtimes()を使えばいいってことですか。
0544名無しさん@お腹いっぱい。02/02/02 11:35ID:toL+Z2MW
    / ̄ ̄ ̄ ̄\   
   (  人>>538 _) 
    |ミ/  ー◎-◎-) そうかなぁ?なんか色合いがタクっぽくてやだなぁ。
   (6     (_ _) ) もっと粋な色使いにして( ゚д゚)ホスィ…
  _| ∴ ノ  3 ノ   
 (__/\_____ノ    
 / (   ||      ||   
[]__| |さくら命  ヽ  
|[] |__|_538______)    
 \_(__)三三三[□]三)   
  /(_)\::::::::::::::::::::::::/  
 (_____):::::/:::::::/      
     (___[]_[]    
0545名無しさん@お腹いっぱい。02/02/02 11:42ID:???
READMEは読んだけどPODマニュアルは読んでないってか?
use BSD::Resource qw(times);
($user, $system, $child_user, $child_system) = times();
0546名無しさん@お腹いっぱい。02/02/02 17:48ID:Ew98jRS/
なんか面白そうだ。
http://search.cpan.org/doc/MARCEL/Exporter-Simple-0.12/lib/Exporter/Simple.pm
054754102/02/02 20:05ID:+ALef/KR
>>545
ありがとうございました。

でも、timesってopen2で処理してもらってる時間は計測してくれないのね。
鬱市
0548名無しさん@お腹いっぱい。02/02/02 20:16ID:2Jw7igNJ
すいません。perlでピタゴラスの定理やりたいんですけど・・・

Aの2乗=Bの2乗+Cの2乗ですが、
BとCの値を入れて計算が終わったとして、
ルートAの出し方がわかりません。
お助け下さいませ・・・
■ このスレッドは過去ログ倉庫に格納されています