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

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

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

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

#CGI関連の話題は、なるべく専用スレッドで。
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';

とかもできる。
0356名無しさん@お腹いっぱい。01/10/09 17:34ID:???
Dispmes('Jcode.plを入れてくださぃ') unless(require './jcode.pl');
何故かわざわざjcode捨てて設置する困ったちゃん対策
0357名無しさん@お腹いっぱい。01/10/09 17:40ID:???
>>355-356
待て待て、二人ともそれじゃダメだって!

>>355
require 'jcode.pl' if $expression;

>>356
Dispmes('jcode.plを入れてください') unless eval{ require 'jcode.pl' };
0358356 01/10/09 17:50ID:???
>>357
ほんとだぁ、真しかテストしてなかた   ハズカチィ(´Д`;) アヒャー
困ったちゃんは俺じゃん・・・・  
ありがとう>>357
0359名無しさん@MZ-200001/10/09 18:22ID:???
おーう。 ご指摘感謝
0360名無しさん@お腹いっぱい。01/10/12 08:48ID:6IAcQL0k
Perl/TKをWindowsで使う場合、日本語対応パッチを当てたいのですが、
Win32版のパッチの当て方が分かりません。
UNIX版のパッチの当て方しか見当たらないのですが、もしかしてWin32では
日本語使用不可ですか?
0361名無しさん@お腹いっぱい。01/10/12 14:06ID:3886ncd2
面白い話ハケン
http://www.mikeneko.ne.jp/~lab/perl/tuning/
こういう内部的なことを書いた日本語の文書ってあまり見ませんよね。
_gzipさんやJAPUさんあたり、暇な時に書いてくれないかなぁ。
自分も英語とCのソースが読めれば良いんだが…ドッチモダメナンデスヨ。
0362JAPU@見知らぬ国のトリッパー ◆dcddJAPU 01/10/12 14:54ID:???
えーと誤解されているようですが、私はそんなに内部に詳しくありません。
たまに必要に迫られてソースを参照しますが、この手の解説は多分できません。

# JAPUTeX. ってトリップも捨てがたいな。
0363名無しさん@お腹いっぱい。01/10/12 17:34ID:???
_gunzipたんカムバックきぼん
0364名無しさん@お腹いっぱい。01/10/12 21:49ID:???
>>362
そうなんですか。失礼しました。
ヘタレの私には「ソースを参照できるレベル」の方々はみな同じに見えてしまうのです(笑
0365名無しさん@お腹いっぱい。01/10/14 07:12ID:RJZp9XsP
やっと・・・、ベータながら5.6.1ベースのMacPerlがリリースされてます。
MacPerl 5.6.1b1
http://dev.macperl.org/
036636501/10/14 08:57ID:???
失礼、やっと・・・、ベータになりました。に修正。
0367名無しさん@お腹いっぱい。01/10/15 22:34ID:???
>>361
gunzipさんが好きそうな話題ねん。
そいった蘊蓄聞きたい上げ。
0368名無しさん@お腹いっぱい。01/10/15 22:54ID:???
Perl/Tk出来る人いる?
カスタムウィジェットの作り方知りたいのだけど。
0369名無しさん@お腹いっぱい。01/10/16 03:09ID:4v7IUtKc
>>368
Perl/TKを使ったことのない俺が言うのもなんだが
Tk::UserGuideやTk::Widgetのドキュメントは読んだのか?
0370名無しさん@お腹いっぱい。01/10/18 12:51ID:???
すげえ!
3-D Stereogram, Self replicating source.
http://www.perlmonks.org/index.pl?node_id=118799

変態すぎ。
0371名無しさん@お腹いっぱい。01/10/18 13:16ID:???
>>370
何なのそれ。
0372名無しさん@お腹いっぱい。01/10/18 13:39ID:???
ほんとビクーリしたよ。ステレオグラム。
それも自分のソース使って表示。
で、そのステレオグラムであるところのPerlソースもそのまま動く。
アホ過ぎ。
0373名無しさん@お腹いっぱい。01/10/18 13:41ID:???
最後の4行で減点。
0374名無しさん@お腹いっぱい。01/10/19 01:06ID:???
意味わかんねーよ。
0375名無しさん@お腹いっぱい。01/10/19 01:35ID:JPPt49tb
>>370
すげー。すごすぎー。ソースそのままと実行後で
ステレオグラムのパターンが変わるでしょ?
それでもスクリプトがちゃんと動くのはなぜ?
セミコロンで調節してるんか?
もちろんコードを読む気はないが。
0376名無しさん@お腹いっぱい。01/10/19 01:59ID:???
>>375
そんでもって、実行結果の出力を更に実行すると自分自身への写像になってる。
う〜む。
0377名無しさん@お腹いっぱい。01/10/19 02:12ID:???
>>376
その2番目以降みたいな、いわゆる「不動点プログラム」なら、
まだわかるんですよー。
オリジナルと1回目の実行結果はパターンが違うけど
ソースコードはきっちり長方形に整形されてて、
それでも動作する。ほんと、よくやるよって感じ。
0378名無しさん@お腹いっぱい。01/10/19 03:15ID:???
分かんないしソースも読めないよぅ....(+_+
monksの中彷徨ってれば何か面白いのあるかなぁ....
0379名無しさん@お腹いっぱい。01/10/24 14:12ID:???
暇なので解析した。
意外とやってることは単純。
>>375 が言う、実行後でステレオグラムが変化するというのはどいうこと?

・実際のコードは各行の14文字目まで(15文字目は削除用の目印)
・16文字目以降は15文字目までのコピー
・DATAのステレオグラムを使ってコピーするときに少し変化を加えている
0380名無しさん@お腹いっぱい。01/10/24 14:14ID:???
#!/usr/bin/perl
# Copyright (c) Marcus Post, <[email protected]>

use strict;

# 前準備
# 本来は DATA から読んでいるが書き換えたのでファイルから。
# という大人の理由からファイルポインタを__DATA__の次に移動しておく
open(MONKS, $ARGV[0]) or die "逝ってよし!";
1 until ($_ = <MONKS>) =~ /^_/;



# 以下、実際のコード
my(@dataAreaForWork, @codeArea, @charsOfCode);

# __DATA__以降を読み込む
my @dataArea = @dataAreaForWork = <MONKS>;

# コード部分を読みこむ
seek(MONKS, 0, 0);
@codeArea = <MONKS>;
# __DATA__以降を捨てる
until (($_ = pop(@codeArea)) =~ /^_/) {};

# '__DATA__'を追加
unshift(@dataArea, $_);

# 最初の3行(コピーライトとか)を出力
foreach (1 .. 3) {
  print shift(@codeArea);
}
0381名無しさん@お腹いっぱい。01/10/24 14:14ID:???

foreach my $data (@dataAreaForWork) {

  my @charsOfData = split(//, $data);

  # 実際のコードは最初の14文字のみ
  # 15文字目は後で削除するときの目印 |zY!%xQ のどれか
  my $realCode = shift(@codeArea);
  $realCode =~ s/(.{15}).*/\1/;
  @charsOfCode = split(//, $realCode);

  # 最初の15文字を後ろにコピーする。
  # その際 DATA のステレオグラムを使ってちょっとランダマイズ
  # 本当は以下のようになっているので区切り文字の , を . に変換している
  #  q,コード,;
  #  # ごみの削除とか
  #  eval;
  my $i;
  foreach my $oneOrZero (@charsOfData) {
    $charsOfCode[$i + 15 - $oneOrZero] = (($charsOfCode[$i] eq ",") ? "." : $charsOfCode[$i]);
    $i++;
  }

  # 空文字はひとつ前の文字をコピー
  foreach my $i (1 .. 75) {
    if ($charsOfCode[$i] eq '') {
      $charsOfCode[$i] = $charsOfCode[$i - 1]
    }
  }

  print join("", @charsOfCode);
  print "\n";
}

print @dataArea;
0382Perl上級者01/10/26 16:02ID:???
何でも聞け。
0383名無しさん@お腹いっぱい。01/10/26 16:28ID:???
$fooRef = \$foo;
と
*fooGlob = *foo;
の違いを教えてちょ、上は$だけだ、とかじゃなくて
内部でどんな風にエイリアスされるのかが知り鯛DEATH
0384名無しさん@お腹いっぱい。01/10/26 16:30ID:???
あ、コイツ !!!!!!!!!!連発猿じゃん  (鬱
吐き気して来た
死ね!!
0385 != 382 01/10/26 16:56ID:???
連発猿?
0386 != 384  01/10/26 17:18ID:???
教えてください!!!!!!!!!! ←こう言う奴だろ?
彼は、〜〜級者、と言うキーワードに酷く敏感な様子 (p   
0387名無しさん@お腹いっぱい。01/10/26 17:42ID:???
むか〜し_gunzipさん(最近見かけないけど)が書いてた↓が参考になるかも。
http://www.angelfire.com/ak5/2ch-web-program/kako/979894521.html#825
0388名無しさん@お腹いっぱい。01/10/26 18:11ID:???
CGI.pm使ってるのってどうなの?
0389名無しさん@お腹いっぱい。01/10/27 00:20ID:e8mRTudG
ルーチンを関数にするののデメリットって何?
0390名無しさん@お腹いっぱい。01/10/27 01:58ID:???
関数呼び出しは非常に時間がかかる。
0391名無しさん@お腹いっぱい。01/10/27 18:37ID:???
ageageageage
0392名無しさん@お腹いっぱい。01/10/27 22:56ID:???
移転age
0393Perl上級車01/10/28 18:00ID:???
何でも聞け。
0394名無しさん@お腹いっぱい。01/10/28 18:57ID:xDgqA1mb
タイムスタンプでソート
ってどうやってやるんですか?
0395Perl上級社01/10/28 19:03ID:???
俺に相応しいことを聞け。
0396仕様書無しさん01/10/28 19:06ID:???
my $name = 'tinko pinpin';
1)
if($name eq 'tinko pinpin') {
 cnt++;
}
--------と
2)
cnt++ if($name eq 'tinko pinpin');

をループさせて速度を測ったら
1)21 wallclock secs (20.95 usr + 0.01 sys = 20.96 CPU)
2)10 wallclock secs (10.23 usr + 0.00 sys = 10.23 CPU)
くらい違いますが、内部ではどのような処理の違いがあるんですか?
アホな私にも分かるように教えていただけませんでしょうか?
0397Perl上級謝01/10/28 19:09ID:???
>>396
そんなことも分からんのか。とことん程度低いな(ワラ
039839601/10/28 19:10ID:???
教えて!!!!!!!!!!!!!!!!!!!!
0399名無しさん@お腹いっぱい。01/10/28 19:17ID:???
まともなスレッドに戻れよ...。
0400名無しさん@お腹いっぱい。 01/10/28 19:18ID:???
??????????????????????????????
?どれくらいの事ができたら「脱初心者」といえるのでしょうか?
??????????????????????????????
0401名無しさん@お腹いっぱい。01/10/29 01:20ID:???
>>396
どっかで見た質問。
0402名無しさん@お腹いっぱい。01/10/29 06:09ID:???
面白いね
0403あげ01/10/29 16:56ID:???
なにが?
0404[01/10/29 23:16ID:???
なにが?
0405名無しさん@お腹いっぱい。01/10/30 17:20ID:???
>>402
なにが?
0406名無しさん@お腹いっぱい。01/11/06 21:14ID:0STlIz2P
関数の処理の不可に関する日本のサイトあれば教えて欲しいです。
こんな処理するならこんなコードがベストだよ。みたいのとかです。
あと前でてましたけどこんな処理をすると内部ではこんな事がおきてるよ。
とかでもうれしいです。
0407名無しさん@お腹いっぱい。 01/11/07 00:16ID:???
関数って言うと漠然としすぎだなあ
結局アルゴリズムだと思うからム技のこのスレはBMかな・・・
http://pc.2ch.net/test/read.cgi/tech/967778156/l50
後、Cだけど診断室とか
http://www.pro.or.jp/~fuji/mybooks/cdiag/

後半は俺も知らない、正規表現エンジンの実装とか知りたくも無いし (汗;
ちょっとレス違いかなあ・・・
0408名無しさん@お腹いっぱい。01/11/07 00:33ID:???
サイトではないが

前半:
Perlクックブックを読む

後半:
ソースを読む

なんて。
0409名無しさん@お腹いっぱい。01/11/07 01:04ID:???
だれか解説キボン
0410名無しさん@お腹いっぱい。01/11/08 17:16ID:???
だれも分からないのかなぁ。
0411名無しさん@お腹いっぱい。01/11/09 01:43ID:???
>>408
いやそれで正しいでしょ。
結局ソース読まないと分からないことは多いし。

ま、個々の関数の処理効率なんかよりも、
書くプログラムのアルゴリズムが最適かどうかの方が、
全体の速度にはるかに寄与する。
アルゴリズムが最適でさらに速度を求めるならインライン C で書くべし。
0412名無しさん@お腹いっぱい。01/11/09 04:22ID:???
>>406
Perlメモ
http://www.din.or.jp/~ohzaki/perl.htm

わかりやすい Perl チューニングの話
              ミケネコ研究所
http://www.mikeneko.ne.jp/~lab/perl/tuning/

あとはログから_gunzip氏の発言拾うとか。
0413名無しさん@お腹いっぱい。01/11/10 23:53ID:???
パールのチューンアップについてもっと知りたいです
0414名無しさん@お腹いっぱい。01/11/11 01:37ID:???
use Benchmark;
use strict;

timethese(1, {
t1 => q{&addstr1;},
t2 => q{&addstr2;}
});

sub addstr1 {

    my($str) = '_' x 1000000;
    $str = '';

    foreach (0 .. 1000000) {
        $str .= '_';
    }

}
sub addstr2 {

    my($str) = '';

    foreach (0 .. 1000000) {
        $str .= '_';
    }

}

Benchmark: timing 1 iterations of t1, t2...
t1: 2 wallclock secs ( 1.97 usr + 0.00 sys = 1.97 CPU)
(warning: too few iterations for a reliable count)
t2: 3 wallclock secs ( 2.81 usr + 0.00 sys = 2.81 CPU)
(warning: too few iterations for a reliable count)
0415名無しさん@お腹いっぱい。 01/11/11 01:43ID:???
Cやれば良いのに (ボソッ
0416名無しさん@お腹いっぱい。01/11/11 10:25ID:???
んな程度の差違を気にするくらいならCで書けばいいのに。
0417名無しさん@お腹いっぱい。01/11/15 11:30ID:HBIil14t
「オブシェクト指向使えばいろいろ便利だ。」てのがよく言われてます。
掲示板程度ならオブジェクト使わないほうが効率いいんじゃないかと思うんですが,
どんな時に,どういう風に使えば便利ですか?
いいサンプルや解説ページとかあれば教えてください。
0418名無しさん@お腹いっぱい。01/11/15 11:50ID:???
憂鬱なプログラマでも読めば、perlerならRubyやるとか
>「オブシェクト指向使えばいろいろ便利だ。」
まあこう言うのはITオヤジのレベル、オブシェクト指向で彼女は出来ないし、
オブシェクト指向で奥歯に詰まったフライドチキンのカスは取れない
0419名無しさん@お腹いっぱい。01/11/15 12:35ID:???
>>370
何がどうすごいんだか分からないんですけど。
実行してもコードがでてくるだけだし。
■ このスレッドは過去ログ倉庫に格納されています