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

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

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

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

#CGI関連の話題は、なるべく専用スレッドで。
0255名無しさん@お腹いっぱい。01/09/21 08:12ID:???
XML::RSSはXMLスレに書いたほうが良かったかね。
0256名無しさん@お腹いっぱい。01/09/21 10:27ID:eCUa7iH.
>>255
オレ使ってるよ。とか言ったとしてどうなるのよ?
0257名無しさん@お腹いっぱい。01/09/21 10:49ID:???
>>256
そこから話が盛り上がる可能性に期待して、とか?
0258_gunzip01/09/25 04:46ID:???
C++で書かれたGUIツールキットwxWindowsのPerlインターフェイスがリリースされていますね。
http://www.perl.com/pub/a/2001/09/12/wxtutorial1.html

wxWindows
http://www.wxwindows.org/

wxWindows-Perl
http://wxperl.sourceforge.net/
0259101/09/25 05:00ID:7Zufx8jA
これカキコしてる奴誰だよ!↓
http://members.tripod.co.jp/bingo852/
0260_gunzip01/09/25 05:35ID:???
手元のVineLinux2.1.5に wxWindows 2.2.7 for GTK+と Wx-Perlをsource rpmからビルドしてインストールし、幾つかテストスクリプトを走らせてみましたが、特に問題なく快適に動いてますね。
また、特に何も手を加えずに日本語の表示も可能ですね。

Windows用バイナリPPMパッケージも用意されていますから、Windows環境でActivePerlを利用している人も簡単にインストールできると思うので試して欲しいなあ、と思ふ。(wxWindowsを入れる必要があるかも。)

------
wxGTKWindows
    http://prdownloads.sourceforge.net/wxwindows/wxGTK-2.2.7-0.src.rpm

wxWindows-Perl
    http://prdownloads.sourceforge.net/wxperl/perl-Wx-0.07-1.src.rpm
------
wxWindows for MS Windows
    http://www.wxwindows.org/dl_msw2.htm

    wxPerl for ActivePerlhttp://prdownloads.sourceforge.net/wxperl/Wx-0.07-win32.zip
0261Perlあまちゅあ01/09/27 15:04ID:n78xCnwc
すいません、コマンドラインで<STDIN>時に「キーボードから入力する文字数」を制限するのは、
どうすれば良いのでしょう?

(例えば、コマンドラインで、パスワードを入力するときに、8文字なら8文字と決まっていて、
9文字目は入力しても、画面には表示されない。)

OS非依存が良いのですが、依存せざるを得ないのであれば、Win依存でお願いします。
(キーが押されたってことを検出できれば、それをループでまわせるとは思うんですが、
 C言語のgetche や kbhitに相当するPerl関数がわからないんです。。とほほ。。。。)

厨な質問ですみません。(板違いなら、さらにごめんなさい)
0262名無しさん@お腹いっぱい。01/09/27 15:46ID:WzgjwwkM
>>260
以前、Windows ActivePerl に入れてみたら日本語が表示できなくて
いろいろ情報探したら、「マルチバイトに対応する予定はない」って
いうMLの記事を見つけたんであきらめたんですけど、表示できるのかぁ。
またちょっと試してみようかな。
0263名無しさん@お腹いっぱい。01/09/27 20:08ID:OLVunqio
>>261
ないんじゃないか?
俺が知らないだけかも。
でもgetcheもkbhitもDOSやWindowsプラットホーム固有の関数だから
マルチプラットホームなPerlには実装されてないんじゃないかと思われ
0264[perl:2228]01/09/27 21:41ID:???
Windows2000,Perl6を使用。

<STDIN>を使ってコマンドプロトコルから
入力した値をスカラー変数代入する処理で
プロトコルからの入力で、
何バイトまでしか入力ができない・・
っという風にしたいのですが、可能なのでしょうか?

もし可能であれば教えて頂きたいのですが。
0265_gunzip01/09/27 21:46ID:???
>>261

1.Term::ReadKeyモジュールのReadKey()関数を利用する。
2.Cursesライブラリのgetnstr()を使って入力文字数を制限するか、
またはgetch()で必要なだけ読み込む。
の二つの方法があります。例を挙げるなら、

---readkey.pl----

#!/usr/bin/perl -w

use strict;
use Term::ReadKey;
use constant PASSWD_MAX => 8;

ReadMode 4;

our $input = "";

foreach(1..PASSWD_MAX){
my $ch;
1 while (!defined($ch = ReadKey(-1)));
last if $ch eq "\n";
$input .= $ch;
}

ReadMode 0;

print "your password is $input\n";
0266_gunzip01/09/27 21:50ID:???
お、インデントが...。
--- curses.pl ----

#!/usr/bin/perl -w

use strict;
use Curses;
use constant TRUE => 1 == 1;
use constant FALSE => !TRUE;
use constant MAX_PASSWD => 8;

sub app_init()
{
     initscr();
     keypad(stdscr, TRUE);
     cbreak();
     noecho();
}

sub app_exit()
{
     echo();
     nocbreak();
     keypad(stdscr, FALSE);
     endwin();
     exit(0);
}

sub read_passwd2()
{
     my $input = "";

     getnstr($input, MAX_PASSWD);
     printw "your password is $input\n";
     refresh();
}
0267_gunzip01/09/27 21:51ID:???
sub read_passwd()
{
     my $count = 0;
     my $ch = "";
     my $input = "";

     while (($ch = getch()) ne "\n") {
     last if ++$count >= MAX_PASSWD;
     $input .= $ch;
     }
     printw "your password is $input\n"; # 確認。
     refresh();
}

#main

BEGIN{ app_init() }
END{ app_exit() }

read_passwd(); #read_passwd2();

sleep(2); # 確かめる暇もなく終わらないように。
0268_gunzip01/09/27 21:52ID:???
>>264
ありゃりゃ。とんだ無駄足だったな。
0269名無しさん@お腹いっぱい。 01/09/27 22:18ID:???
いや、俺はROMだけど
良いモジュールの紹介あんがと>>_gunzip
コマンドプロトルコイイ(・∀・)!
0270_gunzip01/09/27 22:29ID:???
>>262
まだサンプルをいじって遊んでいる程度ですが、Perl/Tk, GTK-Perlで書いたものより軽快でなかなか気に入っています。

また、ラベル、テキスト、リストボックス等の日本語表示、
kinput2経由での日本語入力についても問題ありません。
自分としては、結構使えそうだ..という感触を持っています。

もし暇があればWindows上ではどうなのか試して欲しいですー。
#今Windowsパーティションが逝っているので試せない...。
>>269
どうもです。Curses使うならCurses::Form, Curses::Widget,Cdkも入れておくと、驚くほどいろんなことができますよー。
(ついてくるサンプルをいじるだけでもいろいろ楽しめるはず)
今は亡き啓学出版からCurses本(for C)も出てますし。
0271 01/09/28 01:17ID:???
>>270
漏れもROMだが、勉強になった。Thanx
027226101/09/28 03:35ID:???
>>265-267
_gunzipさん、ありがとうございます。
(_gunzipさんの投稿は良くROMさせてもらっています。大変勉強になります)

264 の方は、もしかしたら私のところに質問投稿された方かも。。。
(Windows2000 Perl6っていう「印象的な」環境が同一なので。。。)

ありがとうございました。
0273!!!!!01/09/28 05:18ID:???
ファイルテスト演算子ですが、あるディレクトリが存在することを確かめるには -d "directory name"と書くのと、-e "directory name" and -d "directory name" のどちらがいいですか!
あと、Perlの-Tは信頼性が低いというのは本当ですか!!
教えて下さい!!!
0274?????01/09/28 06:25ID:???
どっちでも委員じゃないですか!opendirとかでもイイ鴨!
>本当ですか!! ←ハイ!!!
僕も厨房なんです!ゴメンナサイ!!!
0275JAPU01/09/28 07:56ID:???
ファイルテスト演算子の -T のことかな?
Shift_JIS とか EUC-JP で書かれていると判定に失敗することも多いです。あまり当てにしない方がよいかも。
0276名無しさん@お腹いっぱい。01/09/28 14:51ID:9NVAEcd.
tieの使い方を勉強してたらバグ(?)発見!

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:xYFJBzyw
>>276
v5.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で探しても、
良さそうなモジュールが見つかりませんでした。

・チャットサーバー
・チャットクライアント
の両方を作りたいと思っています。
マイクから音声を入力して、
サーバーを通してクライアントソフトを立ち上げている方々に
リアルタイムで音声を送れるようなものです。

・マイクからの入力を受け取る方法。
・音声をネットを通して送信する方法。
・受け取った音声を再生する方法。
などが知りたいです。
027927801/09/28 15:25ID:8UXDD7TM
どなたか上記の事を出来る方法やモジュールなどを教えてください。
028027601/09/28 16:25ID:???
>>277
検証どもども。うちは同じWin版のver5.6.1のbuild626でした。
ActivePerlのバグか、5.6.0=>5.6.1でエンバグしたか。

さっきActiveState.comのサイトにいって
バグレポート出そうかと思ったんだけど、このバグが既知かどうか
確認できなかった。英語に弱いのよね俺。。。
0281名無しさん@お腹いっぱい。01/09/28 17:01ID:aDO6qmS2
>>280
既知か否かは知らないけど、ActivePerl固有の問題ではなくて5.6.1全般の問題みたいよ。
Solaris2.6でmakeした5.6.1でも同じ挙動
0282_gunzip01/09/28 17:56ID:???
Perl5.7.2(開発バージョン)では正常に動作しますよい。
0283_gunzip01/09/28 18:24ID:???
>273を見て思い出したけれど、ファイルテスト演算子のうち、
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_gunzip01/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は考慮するようですが)
0285age01/09/28 21:17ID:???
age
0286名無しさん@お腹いっぱい。01/09/28 23:09ID:vu/QVpKY
>>284
日本語ファイル食わせるときには、euc-jpにしておいたら
いいのでは?
0287名無しさん@お腹いっぱい。01/09/28 23:25ID:???
>>286
EUC-JPのファイルはたいていバイナリと判定されたぞ。経験上。
JISコード(iso-2022-jp)のほうがテキストと判定されやすいような。
0288名無しさん@お腹いっぱい。 01/09/29 00:40ID:???
WASPにとっては2バイト文字なんてバイナリと一緒だからそれで良いのです (泣
0289名無しさん@お腹いっぱい。01/09/29 01:05ID:???
>>283
そゆのって、どこに載ってるの?
0290名無しさん@お腹いっぱい。01/09/29 06:04ID:n1e2AO4Y
最初の512バイトを見て
* MSBが立っている (文字コードが 0x80 以上) バイト数
* 文字コードが 0x20 未満 かつ "\r\n\b\t\f\e" 以外
の合計文字数が全体の 1/3 を越えたらバイナリと判定されますにゃ。
ただし、途中で \0 (NUL) が見つかったらバイナリ扱い。
というわけで、ISO-2022-JP だと安全です。

>>289 具体的には pp_sys.c を見てください。
マニュアルに載っていたかもしれないけど、探すの面倒。B-)
0291JAPU01/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:???
マジレスお願いします!!!!!!!!!!!!!!!!!!!!!!!!!!1
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で誰かの質問に答えてあげる事でも良い、
質問する側であったとしても、その問題の展開と結果を書くことが出来れば
それは後に続く人にとって役立つかも知れない。
「ああ、ネットが有るから助かってるなー、本だけじゃもっと手間取ってただろな・・」
こんな風に感じる時がきっとある筈、
つまり、
「ちょうだい!!!」「おしえて!!!」「はやくしてください!!!」
「??????」
こう言う人と正反対の行動をとれば良いんです。 解りやすいですね?
0300  01/09/29 18:57ID:???
マジレスすんな、アホは放置しようぜ。
結局まともに文章かけないんだよこの手の輩は
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:???
>>301
wget で画像を DL したら Perl の ImageMagick モジュールか GD モジュールで縮小。
X 使わなくても全てスクリプトの中だけで済む。
0303名無しさん@お腹いっぱい。01/09/30 00:18ID:???
>>302
ネタか?
0304名無しさん@お腹いっぱい。01/09/30 03:41ID:???
>>301
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_gunzip01/09/30 14:50ID:???
Windows上ではwxWindows-Perl日本語表示無理っぽいね。

#...ていうか、SetFontFace()無視されてるような。
0307名無しさん@お腹いっぱい。01/09/30 14:53ID:PUFRmjNw
Perlから直接システムコールの呼び出し方覚えて、猿のようにつかってる
syscall.ph をreqireして、引数をpackして、
SYS_hogehoge
とかやってるけど、凄く便利
Posixモジュールつかってもいいんだけど、それには存在しない
システムコールもあるんで、
Perlのプログラミングには必須だね
0308名無しさん@お腹いっぱい。01/09/30 15:14ID:???
>>305
ImageMagickスゲー。そんな機能もあったんですか。
>...とはいえ、かなり重たい処理ではあるね。しかもレイアウトは(?)
この部分が気になるけど(w

でも実際、HTMLもXHTMLもJavaScriptも自力ですべて解釈して
ちゃんとレイアウトするってのは、もはや一大プロジェクトが
必要でしょうなあ。
305のベクタにあるやつはIEコンポーネント使ってんのかな?
030926201/09/30 15:45ID:FsOWX/IM
>>306
一応、メニューとかステータスバーは大丈夫なんだけど、
その他はダメっぽいですね。日本語さえ何とかなればすごく面白そうなのに・・・
http://lists.wxwindows.org/pipermail/wx-users/2000-June/002733.html
中心人物はほとんどマルチバイトに関する知識がないっぽいですね。
031030101/09/30 16:56ID:hjeInKdw
>>302-305 >>308

皆さんいろいろなご意見ありがとうございます。とても勉強になります。
302 さん、 305の_gunzip さんのご意見を参考にして、さらにトライ
してみようと思います。
 良い結果が出たらご報告させていただきます。

他にも何か良い案など、思いついたことなどありましたら、
随時、アドバイスを下さい。
0311名無しさん@お腹いっぱい。01/09/30 23:10ID:???
「Perl中級コーナー」に比べて頑張るね。このスレ。
0312_gunzip01/10/02 17:23ID:???
>>309
ありゃりゃ。残念。開発者側にマルチバイト対応を期待するのはちょっと無理なようですね。

ところで、今日立ち読みした「Linuxデベロッパーズバイブル」のPart3「Xプログラミング」で
60ページほど割いてGtk-Perlの利用例が解説されていますね。これを機に利用者が増えるといいのですが。

#そういえば、Gtk-Perlのチュートリアル/リファレンスの日本語訳途中までやってほったらかしにしてたな...。
0313_gunzip01/10/02 17:27ID:???
wxWindows->C++ から思い出しましたが、C++からPerlライクな文字列操作を行うための
STLクラスPerlStringなんかも有りますよん。
http://www.youell.com/matt/perlstring/
0314名無しさん@お腹いっぱい。01/10/02 23:19ID:???
>>313
標準stringクラスに軽くラッパかませただけじゃないすかー。
でも、To-Do Listに
- Regular Expression support.
と書いてますね。それやってくれたらまじ大喜びです。
#似たようなことやろうとしたけど知力気力不足で挫折
0315_gunzip01/10/03 01:39ID:???
>>314
うわ、申し訳なひ。「こんなものがあるんだなー」って中身を見ずに張ってもた。
今度から気をつけます...。

ちなみに、自分が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_gunzip01/10/03 01:41ID:???
/* Galeonって書き込みにくいな...。*/

#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_gunzip01/10/03 01:42ID:???
                             &error_offset,
                             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_gunzip01/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:???
>>315-318
それって、c言語でも、ふつうに性器氷原ライブラリincludeするだけで
いいのでは?
unixだったらosについてくるし、なければ
bsd、lgpl/gpn、pdsとかであるライブラリ使えばいいだけだし
0320_gunzip01/10/03 01:57ID:???
>>319
もちろん、<regex.h>(POSIX)をincludeしてregcomp, regexec等を利用する方法くらいは知ってますよい。他にもGPL rxとかありますし。
0321名無しさん@お腹いっぱい。01/10/03 02:26ID:???
結局C/C++で正規表現使うにはどれが好みかって問題でしょうね。
自分もこれから勉強してみたいんだけど、
pcreとregexってどっちを最初に体験するのがいいんでしょ。
それと、上の2つは実行時に動的に正規表現を展開するようだけど、
flexみたいに正規表現をCのソースに変換するタイプも
いいかなと思ってたり。

#なんかPerlの話からずれまくりsage
0322名無しさん@お腹いっぱい。01/10/03 03:17ID:wb1t8L8o
Perlをコマンドプロンプトから使う方法を教えて!
0323名無しさん@お腹いっぱい。01/10/03 03:25ID:wb1t8L8o
沿い得て!
沿い得て!
沿い得て!
沿い得て!
沿い得て!
沿い得て!
沿い得て!
0324名無しさん@お腹いっぱい。01/10/03 03:32ID:Vd5CqKFk
PERLに関係ないのだが、319のレスをかちゅーしゃで見て、
びっくりした。
0325名無しさん@お腹いっぱい。01/10/03 04:37ID:???
Math::BitInt てやつを使ってみた。これ便利だねえ。
ためしに作った多倍長計算機↓

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:wb1t8L8o
おしえて!!!!!
0327名無しさん@お腹いっぱい。01/10/03 05:15ID:wb1t8L8o
!!!!!!!!!!!!!!
0328101/10/03 05:17ID:7eUT1aME
http://www5.justnet.ne.jp/~ttp/
0329名無しさん@お腹いっぱい。01/10/03 06:46ID:wb1t8L8o
マジで教えて!!!!!!!!!!!
0330名無しさん@お腹いっぱい。01/10/03 06:46ID:wb1t8L8o
お願いします!
0331名無しさん@お腹いっぱい。01/10/03 07:09ID:wb1t8L8o
どうして教えてくれ何丘教えてください!!!!!
0332名無しさん@お腹いっぱい。01/10/03 07:41ID:???
>wb1t8L8o
環境くらい書けや。
0333名無しさん@お腹いっぱい。01/10/03 11:37ID:???
>>332
電波は放置でお願いします。
0334>>31901/10/07 18:14ID:???
性器氷原。。。
まさか一発変換できたんじゃないだろうね・・・
0335名無しさん01/10/07 21:25ID:???
>>334
うちは、一発目で、「生気氷原」になったよ
0336名無しさん@お腹いっぱい。01/10/08 02:29ID:???
このスレッド終わったの?
0337(´Д`)01/10/08 21:54ID:m2.b6EVc
perlのスクリプトを実行形式にコンパイルして
cでいうscanfみたいの使いたいんですが、
どうやらそれに相当するのはperlには無いらしいのです。
そこでその役割を果たすものを実装するらしいのですが
わけわかりません。
どうすれば良いのでしょうか?
0338名無しさん@お腹いっぱい。01/10/08 22:22ID:???
perl2exe
0339(´Д`)01/10/08 22:42ID:???
>338
いやすみません。文章が悪かったです。
perl2exe使って実行形式にして使ってるんですが
scanfみたいので変数に値をその時々で与えたいんです。
けどscanfみたい関数が無いらしいのです。
どすれば良いでしょうか?
0340名無しさん@お腹いっぱい。01/10/09 00:22ID:???
$data = <STDIN>;
0341名無しさん@お腹いっぱい。01/10/09 00:35ID:???
>>340
馬鹿ですか?
0342名無しさん@お腹いっぱい。01/10/09 02:02ID:???
>339
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:???
scanfは入力を指定した書式に則ったものとみなして読むので
そのものではないってことなんじゃないの。
printfの入力版見たいな感じのもので。
scanf自体殆ど使わないのでよくわからんけど。
0346名無しさん@お腹いっぱい。01/10/09 02:57ID:???
sprintfとか使えば実装できそうだね。
0347名無しさん@お腹いっぱい。01/10/09 02:59ID:???
難しい事言うから型決めたいのかと思ったー
その辺は関係ないのかな?
0348名無しさん@Windowser01/10/09 11:19ID:???
CAPNにscanfを実装したモジュールがあった気がした。
goto search.cpan.org;
0349名無しさん@お腹いっぱい。01/10/09 12:01ID:o6HwRMHE
search.cpan.orgは行けるんだけど
モジュール取ってこれない・・・。
www.cpan.orgのほう、いまサーバ落ちてます?
0350名無しさん@お腹いっぱい。01/10/09 13:06ID:???
型ってなんでしょ?
0351名無しさん@お腹いっぱい。01/10/09 14:25ID:???
>>350
他の言語触れ  w
0352名無しさん@お腹いっぱい。01/10/09 15:59ID:???
最近www.cpan.orgはよく落ちてる気がするぞ。
0353名無しさん@お腹いっぱい。01/10/09 16:34ID:???
require ってプログラム開始時に全部ファイルから読まれるの?
それとも、その地点まで実行されて初めて読まれるの?
0354名無しさん@お腹いっぱい。01/10/09 16:51ID:???
>その地点まで実行されて初めて読まれるの?

たしかこっちが正解。
0355名無しさん@MZ-200001/10/09 17:20ID:khTqWun.
そそ。 だから

if ($expression) require 'jcode.pl';

とかもできる。
■ このスレッドは過去ログ倉庫に格納されています