CGIに依存しないPerlの話題一般
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
2001/05/31(木) 21:49ID:bKRSBFew・モジュール、オブジェクト指向プログラミング
・Perl6や.NET対応など
・各種GUIツールキット(Perl/Tk, Gtk-Perlなど)
・他言語による拡張(Inline::*, XS, Swigなど)
についてマターリと語り合うスレッドです。
#CGI関連の話題は、なるべく専用スレッドで。
0269名無しさん@お腹いっぱい。
01/09/27 22:18ID:???良いモジュールの紹介あんがと>>_gunzip
コマンドプロトルコイイ(・∀・)!
0270_gunzip
01/09/27 22:29ID:???まだサンプルをいじって遊んでいる程度ですが、Perl/Tk, GTK-Perlで書いたものより軽快でなかなか気に入っています。
また、ラベル、テキスト、リストボックス等の日本語表示、
kinput2経由での日本語入力についても問題ありません。
自分としては、結構使えそうだ..という感触を持っています。
もし暇があればWindows上ではどうなのか試して欲しいですー。
#今Windowsパーティションが逝っているので試せない...。
>>269
どうもです。Curses使うならCurses::Form, Curses::Widget,Cdkも入れておくと、驚くほどいろんなことができますよー。
(ついてくるサンプルをいじるだけでもいろいろ楽しめるはず)
今は亡き啓学出版からCurses本(for C)も出てますし。
漏れもROMだが、勉強になった。Thanx
0272261
01/09/28 03:35ID:???_gunzipさん、ありがとうございます。
(_gunzipさんの投稿は良くROMさせてもらっています。大変勉強になります)
264 の方は、もしかしたら私のところに質問投稿された方かも。。。
(Windows2000 Perl6っていう「印象的な」環境が同一なので。。。)
ありがとうございました。
0273!!!!!
01/09/28 05:18ID:???あと、Perlの-Tは信頼性が低いというのは本当ですか!!
教えて下さい!!!
0274?????
01/09/28 06:25ID:???>本当ですか!! ←ハイ!!!
僕も厨房なんです!ゴメンナサイ!!!
0275JAPU
01/09/28 07:56ID:???Shift_JIS とか EUC-JP で書かれていると判定に失敗することも多いです。あまり当てにしない方がよいかも。
0276名無しさん@お腹いっぱい。
01/09/28 14:51ID:9NVAEcd.package AutoCount;
sub TIESCALAR { my $val = 0; bless \$val; }
sub FETCH { ${$_[0]}++; }
tie my $foo, 'AutoCount';
tie my $bar, 'AutoCount';
foreach (1..3) { print "$foo, $bar\n"; } # ←× $foo が2ずつ増加
foreach (1..3) { print " $foo, $bar\n"; } # ←○ 正常
「読み込むたびに1ずつ増える変数」を作ったつもりなんだけど、
その変数がダブルクォート文字列の先頭にあると、
なぜか2回評価されてしまうよー。文字列の先頭以外なら大丈夫。
使ってるバージョンは
This is perl, v5.6.1 built for MSWin32-x86-multi-thread
です。
0277名無しさん@お腹いっぱい。
01/09/28 15:04ID:xYFJBzywv5.6.0 built for i686-linux
version 5.005_03 built for i386-linux
では再現しませんでした。
v5.6.1 built for MSWin32-x86-multi-thread (ActivePerl build628)
で再現。
0278名無しさん@お腹いっぱい。
01/09/28 15:22ID:8UXDD7TM恐らく探し方が悪いのだとは思いますが、cpanで探しても、
良さそうなモジュールが見つかりませんでした。
・チャットサーバー
・チャットクライアント
の両方を作りたいと思っています。
マイクから音声を入力して、
サーバーを通してクライアントソフトを立ち上げている方々に
リアルタイムで音声を送れるようなものです。
・マイクからの入力を受け取る方法。
・音声をネットを通して送信する方法。
・受け取った音声を再生する方法。
などが知りたいです。
0279278
01/09/28 15:25ID:8UXDD7TM0280276
01/09/28 16:25ID:???検証どもども。うちは同じWin版のver5.6.1のbuild626でした。
ActivePerlのバグか、5.6.0=>5.6.1でエンバグしたか。
さっきActiveState.comのサイトにいって
バグレポート出そうかと思ったんだけど、このバグが既知かどうか
確認できなかった。英語に弱いのよね俺。。。
0281名無しさん@お腹いっぱい。
01/09/28 17:01ID:aDO6qmS2既知か否かは知らないけど、ActivePerl固有の問題ではなくて5.6.1全般の問題みたいよ。
Solaris2.6でmakeした5.6.1でも同じ挙動
0282_gunzip
01/09/28 17:56ID:???0283_gunzip
01/09/28 18:24ID:???stat(2)を内部で利用するものは三種類の値を返します。
PL_sv_yes ("1"\0): テストが成功の場合
PL_sv_no (""\0): テストが失敗の場合
PL_sv_undef(SV): stat(2)システムコールがエラー(-1)を返した場合
ですから、
-------ftest.pl----------
#!/usr/bin/perl
use strict;
test(q| -d "/etc/passwd" |);
test(q| -d "/etc/file_not_exists" |);
test(q| -d "/usr/local" |);
sub test
{
my $test = shift;
my $result = eval $test;
if($result){
print "$test: true\n";
}elsif(defined($result)){
print "$test: false, but defined\n";
}else{
print "$test: false, not defined\n";
}
}
0284_gunzip
01/09/28 18:31ID:???-d "/etc/passwd" : false, but defined
-d "/etc/file_not_exists" : false, not defined
-d "/usr/local" : true
となります。(....まあ、細かい話だけど)
>>273
>Perlの-Tは信頼性が低いというのは本当ですか!!
ファイルテスト-Tは、指定されたファイルから最大512バイト読み込み、制御文字などの出現数をカウントし、それらが全体の1/3にとどまっていればテキストファイルと判断します。
ですから、日本語のファイルに対して誤判定することは十分あり得ます。(utf8は考慮するようですが)
0285age
01/09/28 21:17ID:???0286名無しさん@お腹いっぱい。
01/09/28 23:09ID:vu/QVpKY日本語ファイル食わせるときには、euc-jpにしておいたら
いいのでは?
0287名無しさん@お腹いっぱい。
01/09/28 23:25ID:???EUC-JPのファイルはたいていバイナリと判定されたぞ。経験上。
JISコード(iso-2022-jp)のほうがテキストと判定されやすいような。
0288名無しさん@お腹いっぱい。
01/09/29 00:40ID:???0289名無しさん@お腹いっぱい。
01/09/29 01:05ID:???そゆのって、どこに載ってるの?
0290名無しさん@お腹いっぱい。
01/09/29 06:04ID:n1e2AO4Y* MSBが立っている (文字コードが 0x80 以上) バイト数
* 文字コードが 0x20 未満 かつ "\r\n\b\t\f\e" 以外
の合計文字数が全体の 1/3 を越えたらバイナリと判定されますにゃ。
ただし、途中で \0 (NUL) が見つかったらバイナリ扱い。
というわけで、ISO-2022-JP だと安全です。
>>289 具体的には pp_sys.c を見てください。
マニュアルに載っていたかもしれないけど、探すの面倒。B-)
0291JAPU
01/09/29 07:09ID:???> >>289 具体的には pp_sys.c を見てください。
は誤爆です。失礼。
0292名無しさん@お腹いっぱい。
01/09/29 10:26ID:????どれくらいの事ができたら「脱初心者」といえるのでしょうか?
??????????????????????????????
0293名無しさん@お腹いっぱい。
01/09/29 10:42ID:???0294名無しさん@お腹いっぱい。
01/09/29 10:43ID:????どれくらいの事ができたら「脱初心者」といえるのでしょうか?
??????????????????????????
0295るいるいるい
01/09/29 12:45ID:???0296ああああああああああああ
01/09/29 13:23ID:???0297ぽおおおおおおおおおおおおおお
01/09/29 13:28ID:????どれくらいの事ができたら「上級者」といえるのでしょうか?
??????????????????????????
0298名無しさん@お腹いっぱい。
01/09/29 14:18ID:???0299名無しさん@お腹いっぱい。
01/09/29 15:23ID:???あのねぇ、この板は人少ないから何か書いたからって2.3分でガリガリレス
付かないの、何回も同じ事書かないでくれるかな?
Perlコミュニティーに貢献出来ればもう初心者では無いでしょう、それはモジュールの
提供とかでも良いし、BBSで誰かの質問に答えてあげる事でも良い、
質問する側であったとしても、その問題の展開と結果を書くことが出来れば
それは後に続く人にとって役立つかも知れない。
「ああ、ネットが有るから助かってるなー、本だけじゃもっと手間取ってただろな・・」
こんな風に感じる時がきっとある筈、
つまり、
「ちょうだい!!!」「おしえて!!!」「はやくしてください!!!」
「??????」
こう言う人と正反対の行動をとれば良いんです。 解りやすいですね?
0301Perlあまちゅあ
01/09/29 20:23ID:9wErUD8Y思ったのですが、こちらの方に質問させてもらいます。
文章でいうよりも、見ていただいたほうが話が早いと思うのですが、
例えば、「とほほ」氏のページをGOOで検索しますと、
http://search.goo.ne.jp/search/search.jsp?MT=%A4%C8%A4%DB%A4%DB&SM=MC&DC=10&FR=1&IM=1&BOPE=88&LEVEL=8
となります。ページをよくみると、それぞれのWEBの小さなスクリーンショットがあります。
ロボット自動巡回時(もしくは巡回で集めてきたサイト)を自動でスクリーン
ショットで撮っていると思うのですが、こういうのってどのようにやるのでしょう?
スクリプトで、URL を Netscape などに投げて、それをImageMagickで
加工すれば何とかなる気がするのですが、それでは、常時Xを立ち上げている
必要があり、WEB上で使うには今一つです。(というか普通ほとんどのサーバは
Xは立ち上がってないので。。。)
何か視点を切り替えて、Perlでこう言う風にすればああいうのが実現できるのでは?
というのがあれば、アドバイスいただきたいです。
よろしくお願いします。
0302名無しさん@お腹いっぱい。
01/09/30 00:15ID:???wget で画像を DL したら Perl の ImageMagick モジュールか GD モジュールで縮小。
X 使わなくても全てスクリプトの中だけで済む。
0303名無しさん@お腹いっぱい。
01/09/30 00:18ID:???ネタか?
0304名無しさん@お腹いっぱい。
01/09/30 03:41ID:???mozillaのレイアウトエンジンでGeckoってのがあると聞いたけど
あれはPerlから呼び出したりできないのかなー。
#mozilla.orgのGeckoのページ見てみたけど全然わからず。
0305_gunzip@寝よう
01/09/30 05:21ID:???ImageMagickの'convert'コマンドはHTMLファイルを読み込んで任意の画像フォーマットに
変換できる。その際サイズ指定でもしてやればいいのではないかな。
...とはいえ、かなり重たい処理ではあるね。しかもレイアウトは(?)
詳しくはman convertかな。
むかし、こんなソフトもあったなぁ。
http://www.vector.co.jp/magazine/softnews/990225/n9902255.html
-------
ちなみに、html2ps(HTML->PostScript/Perl)を介して変換するのもいいかな。
http://www.tdb.uu.se/~jan/html2ps.html
# ....ただ単にスクリーンショットを取るならxwd, ImageMagickのimportコマンド
# で十分なのだが。...Xを起動せずに、か。
0306_gunzip
01/09/30 14:50ID:???#...ていうか、SetFontFace()無視されてるような。
0307名無しさん@お腹いっぱい。
01/09/30 14:53ID:PUFRmjNwsyscall.ph をreqireして、引数をpackして、
SYS_hogehoge
とかやってるけど、凄く便利
Posixモジュールつかってもいいんだけど、それには存在しない
システムコールもあるんで、
Perlのプログラミングには必須だね
0308名無しさん@お腹いっぱい。
01/09/30 15:14ID:???ImageMagickスゲー。そんな機能もあったんですか。
>...とはいえ、かなり重たい処理ではあるね。しかもレイアウトは(?)
この部分が気になるけど(w
でも実際、HTMLもXHTMLもJavaScriptも自力ですべて解釈して
ちゃんとレイアウトするってのは、もはや一大プロジェクトが
必要でしょうなあ。
305のベクタにあるやつはIEコンポーネント使ってんのかな?
0309262
01/09/30 15:45ID:FsOWX/IM一応、メニューとかステータスバーは大丈夫なんだけど、
その他はダメっぽいですね。日本語さえ何とかなればすごく面白そうなのに・・・
http://lists.wxwindows.org/pipermail/wx-users/2000-June/002733.html
中心人物はほとんどマルチバイトに関する知識がないっぽいですね。
0310301
01/09/30 16:56ID:hjeInKdw皆さんいろいろなご意見ありがとうございます。とても勉強になります。
302 さん、 305の_gunzip さんのご意見を参考にして、さらにトライ
してみようと思います。
良い結果が出たらご報告させていただきます。
他にも何か良い案など、思いついたことなどありましたら、
随時、アドバイスを下さい。
0311名無しさん@お腹いっぱい。
01/09/30 23:10ID:???0312_gunzip
01/10/02 17:23ID:???ありゃりゃ。残念。開発者側にマルチバイト対応を期待するのはちょっと無理なようですね。
ところで、今日立ち読みした「Linuxデベロッパーズバイブル」のPart3「Xプログラミング」で
60ページほど割いてGtk-Perlの利用例が解説されていますね。これを機に利用者が増えるといいのですが。
#そういえば、Gtk-Perlのチュートリアル/リファレンスの日本語訳途中までやってほったらかしにしてたな...。
0313_gunzip
01/10/02 17:27ID:???STLクラスPerlStringなんかも有りますよん。
http://www.youell.com/matt/perlstring/
0314名無しさん@お腹いっぱい。
01/10/02 23:19ID:???標準stringクラスに軽くラッパかませただけじゃないすかー。
でも、To-Do Listに
- Regular Expression support.
と書いてますね。それやってくれたらまじ大喜びです。
#似たようなことやろうとしたけど知力気力不足で挫折
0315_gunzip
01/10/03 01:39ID:???うわ、申し訳なひ。「こんなものがあるんだなー」って中身を見ずに張ってもた。
今度から気をつけます...。
ちなみに、自分がC言語から正規表現を扱うときは、
---------------------------------------------------
PCRE - Perl Compatible Regular Expressions
http://www.pcre.org/
---------------------------------------------------を使っていますよい。ちょっと例を挙げると、htmlファイルから<a href="...">のリンクを抽出したいな、というとき、Perlでは、
perl -ne "/<a[^>]+?href\s*=\s*[\"']?([^\"' >]+?)[\"']?>/ and print qq|\$1\n|" < hoge.html
のように書きますが、PCREを利用してC言語で書くと、
0316_gunzip
01/10/03 01:41ID:???#include <stdio.h>
#include <stdlib.h>
#include <pcre.h>
#define BUFSIZE 1024 * 8
/*
* cc -Wall -ansi -o exturl exturl.c -lpcre
*/
static const char *pattern = "<a[^>]+?href\\s*=\\s*[\"']?([^\"' >]+?)[\"']?>";
int main(void)
{
pcre *regex;
int *ovec, ovec_size;
int i;
int rc;
const char *error;
int error_offset;
char buf[BUFSIZE];
if ((regex = pcre_compile(pattern,
PCRE_CASELESS,
&error,
0317_gunzip
01/10/03 01:42ID:???NULL )) == NULL) {
fprintf(stderr, "regular expression %s\n"
"compilation failed at offset %d: %s\n",
pattern, error_offset, error);
exit(EXIT_FAILURE);
}
pcre_fullinfo(regex, NULL, PCRE_INFO_CAPTURECOUNT, &ovec_size);
ovec_size = (ovec_size + 1) * 3;
while (fgets(buf, sizeof(buf), stdin) != NULL) {
rc = pcre_exec(regex,
NULL,
buf,
0318_gunzip
01/10/03 01:42ID:???strlen(buf),
0,
0,
ovec,
ovec_size);
for (i = 1; i < rc; i++) { /* $1, $2 を表示 */
const char *strptr;
pcre_get_substring(buf, ovec, rc, i, &strptr);
puts(strptr);
pcre_free_substring(strptr);
}
}
exit(EXIT_SUCCESS);
}
0319名無しさん
01/10/03 01:49ID:???それって、c言語でも、ふつうに性器氷原ライブラリincludeするだけで
いいのでは?
unixだったらosについてくるし、なければ
bsd、lgpl/gpn、pdsとかであるライブラリ使えばいいだけだし
0320_gunzip
01/10/03 01:57ID:???もちろん、<regex.h>(POSIX)をincludeしてregcomp, regexec等を利用する方法くらいは知ってますよい。他にもGPL rxとかありますし。
0321名無しさん@お腹いっぱい。
01/10/03 02:26ID:???自分もこれから勉強してみたいんだけど、
pcreとregexってどっちを最初に体験するのがいいんでしょ。
それと、上の2つは実行時に動的に正規表現を展開するようだけど、
flexみたいに正規表現をCのソースに変換するタイプも
いいかなと思ってたり。
#なんかPerlの話からずれまくりsage
0322名無しさん@お腹いっぱい。
01/10/03 03:17ID:wb1t8L8o0323名無しさん@お腹いっぱい。
01/10/03 03:25ID:wb1t8L8o沿い得て!
沿い得て!
沿い得て!
沿い得て!
沿い得て!
沿い得て!
0324名無しさん@お腹いっぱい。
01/10/03 03:32ID:Vd5CqKFkびっくりした。
0325名無しさん@お腹いっぱい。
01/10/03 04:37ID:???ためしに作った多倍長計算機↓
use strict;
use Math::BigInt(':constant');
my $a = "式を入力すると計算します";
while (1) {
print "$a\n> ";
eval '$a=' . scalar(<>);
if ($@) { ($a = $@) =~ s/ in use at.*//s }
}
同じようなことをMath::BigFloatでやるのは無理?
0326名無しさん@お腹いっぱい。
01/10/03 05:13ID:wb1t8L8o0327名無しさん@お腹いっぱい。
01/10/03 05:15ID:wb1t8L8o03281
01/10/03 05:17ID:7eUT1aME0329名無しさん@お腹いっぱい。
01/10/03 06:46ID:wb1t8L8o0330名無しさん@お腹いっぱい。
01/10/03 06:46ID:wb1t8L8o0331名無しさん@お腹いっぱい。
01/10/03 07:09ID:wb1t8L8o0332名無しさん@お腹いっぱい。
01/10/03 07:41ID:???環境くらい書けや。
0333名無しさん@お腹いっぱい。
01/10/03 11:37ID:???電波は放置でお願いします。
0334>>319
01/10/07 18:14ID:???まさか一発変換できたんじゃないだろうね・・・
0336名無しさん@お腹いっぱい。
01/10/08 02:29ID:???0337(´Д`)
01/10/08 21:54ID:m2.b6EVccでいうscanfみたいの使いたいんですが、
どうやらそれに相当するのはperlには無いらしいのです。
そこでその役割を果たすものを実装するらしいのですが
わけわかりません。
どうすれば良いのでしょうか?
0338名無しさん@お腹いっぱい。
01/10/08 22:22ID:???0339(´Д`)
01/10/08 22:42ID:???いやすみません。文章が悪かったです。
perl2exe使って実行形式にして使ってるんですが
scanfみたいので変数に値をその時々で与えたいんです。
けどscanfみたい関数が無いらしいのです。
どすれば良いでしょうか?
0340名無しさん@お腹いっぱい。
01/10/09 00:22ID:???0341名無しさん@お腹いっぱい。
01/10/09 00:35ID:???馬鹿ですか?
0342名無しさん@お腹いっぱい。
01/10/09 02:02ID:???print '名字を入力してください:';
chomp($name1 = <STDIN>);
print '名前を入力してください:';
chomp($name2 = <STDIN>);
print "こんにちは,$name1$name2さん";
これでいかない?
0343(´Д`)
01/10/09 02:34ID:???ありがとうございます。
scanfそのものに感じるけど
↓MLより引用
> scanfはパールではどのように記述するのでしょうか?
相当するものはありません。scanfのperl版を実装する必要があります。
これはどういう事だったんだろ?
0344(´Д`)
01/10/09 02:37ID:???cgiとして実行したらどうなんのかな?
と思って試したらやっぱり500エラーになるんですね。
勉強になるです。
0345名無しさん
01/10/09 02:52ID:???そのものではないってことなんじゃないの。
printfの入力版見たいな感じのもので。
scanf自体殆ど使わないのでよくわからんけど。
0346名無しさん@お腹いっぱい。
01/10/09 02:57ID:???0347名無しさん@お腹いっぱい。
01/10/09 02:59ID:???その辺は関係ないのかな?
0348名無しさん@Windowser
01/10/09 11:19ID:???goto search.cpan.org;
0349名無しさん@お腹いっぱい。
01/10/09 12:01ID:o6HwRMHEモジュール取ってこれない・・・。
www.cpan.orgのほう、いまサーバ落ちてます?
0350名無しさん@お腹いっぱい。
01/10/09 13:06ID:???0351名無しさん@お腹いっぱい。
01/10/09 14:25ID:???他の言語触れ w
0352名無しさん@お腹いっぱい。
01/10/09 15:59ID:???0353名無しさん@お腹いっぱい。
01/10/09 16:34ID:???それとも、その地点まで実行されて初めて読まれるの?
0354名無しさん@お腹いっぱい。
01/10/09 16:51ID:???たしかこっちが正解。
0355名無しさん@MZ-2000
01/10/09 17:20ID:khTqWun.if ($expression) require 'jcode.pl';
とかもできる。
0356名無しさん@お腹いっぱい。
01/10/09 17:34ID:???何故かわざわざjcode捨てて設置する困ったちゃん対策
0357名無しさん@お腹いっぱい。
01/10/09 17:40ID:???待て待て、二人ともそれじゃダメだって!
>>355
require 'jcode.pl' if $expression;
>>356
Dispmes('jcode.plを入れてください') unless eval{ require 'jcode.pl' };
0359名無しさん@MZ-2000
01/10/09 18:22ID:???0360名無しさん@お腹いっぱい。
01/10/12 08:48ID:6IAcQL0kWin32版のパッチの当て方が分かりません。
UNIX版のパッチの当て方しか見当たらないのですが、もしかしてWin32では
日本語使用不可ですか?
0361名無しさん@お腹いっぱい。
01/10/12 14:06ID:3886ncd2http://www.mikeneko.ne.jp/~lab/perl/tuning/
こういう内部的なことを書いた日本語の文書ってあまり見ませんよね。
_gzipさんやJAPUさんあたり、暇な時に書いてくれないかなぁ。
自分も英語とCのソースが読めれば良いんだが…ドッチモダメナンデスヨ。
0362JAPU@見知らぬ国のトリッパー ◆dcddJAPU
01/10/12 14:54ID:???たまに必要に迫られてソースを参照しますが、この手の解説は多分できません。
# JAPUTeX. ってトリップも捨てがたいな。
0363名無しさん@お腹いっぱい。
01/10/12 17:34ID:???0364名無しさん@お腹いっぱい。
01/10/12 21:49ID:???そうなんですか。失礼しました。
ヘタレの私には「ソースを参照できるレベル」の方々はみな同じに見えてしまうのです(笑
0365名無しさん@お腹いっぱい。
01/10/14 07:12ID:RJZp9XsPMacPerl 5.6.1b1
http://dev.macperl.org/
0366365
01/10/14 08:57ID:???0367名無しさん@お腹いっぱい。
01/10/15 22:34ID:???gunzipさんが好きそうな話題ねん。
そいった蘊蓄聞きたい上げ。
■ このスレッドは過去ログ倉庫に格納されています