CGIに依存しないPerlの話題一般
■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
2001/05/31(木) 21:49ID:bKRSBFew・モジュール、オブジェクト指向プログラミング
・Perl6や.NET対応など
・各種GUIツールキット(Perl/Tk, Gtk-Perlなど)
・他言語による拡張(Inline::*, XS, Swigなど)
についてマターリと語り合うスレッドです。
#CGI関連の話題は、なるべく専用スレッドで。
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さんが好きそうな話題ねん。
そいった蘊蓄聞きたい上げ。
0368名無しさん@お腹いっぱい。
01/10/15 22:54ID:???カスタムウィジェットの作り方知りたいのだけど。
0369名無しさん@お腹いっぱい。
01/10/16 03:09ID:4v7IUtKcPerl/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:???何なのそれ。
0372名無しさん@お腹いっぱい。
01/10/18 13:39ID:???それも自分のソース使って表示。
で、そのステレオグラムであるところのPerlソースもそのまま動く。
アホ過ぎ。
0373名無しさん@お腹いっぱい。
01/10/18 13:41ID:???0374名無しさん@お腹いっぱい。
01/10/19 01:06ID:???0375名無しさん@お腹いっぱい。
01/10/19 01:35ID:JPPt49tbすげー。すごすぎー。ソースそのままと実行後で
ステレオグラムのパターンが変わるでしょ?
それでもスクリプトがちゃんと動くのはなぜ?
セミコロンで調節してるんか?
もちろんコードを読む気はないが。
0376名無しさん@お腹いっぱい。
01/10/19 01:59ID:???そんでもって、実行結果の出力を更に実行すると自分自身への写像になってる。
う〜む。
0377名無しさん@お腹いっぱい。
01/10/19 02:12ID:???その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:???# 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:???と
*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:???http://www.angelfire.com/ak5/2ch-web-program/kako/979894521.html#825
0388名無しさん@お腹いっぱい。
01/10/26 18:11ID:???0389名無しさん@お腹いっぱい。
01/10/27 00:20ID:e8mRTudG0390名無しさん@お腹いっぱい。
01/10/27 01:58ID:???0391名無しさん@お腹いっぱい。
01/10/27 18:37ID:???0392名無しさん@お腹いっぱい。
01/10/27 22:56ID:???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:???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)
くらい違いますが、内部ではどのような処理の違いがあるんですか?
アホな私にも分かるように教えていただけませんでしょうか?
0398396
01/10/28 19:10ID:???0399名無しさん@お腹いっぱい。
01/10/28 19:17ID:???0400名無しさん@お腹いっぱい。
01/10/28 19:18ID:????どれくらいの事ができたら「脱初心者」といえるのでしょうか?
??????????????????????????????
0401名無しさん@お腹いっぱい。
01/10/29 01:20ID:???どっかで見た質問。
0402名無しさん@お腹いっぱい。
01/10/29 06:09ID:???0403あげ
01/10/29 16:56ID:???0404[
01/10/29 23:16ID:???0405名無しさん@お腹いっぱい。
01/10/30 17:20ID:???なにが?
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:???いやそれで正しいでしょ。
結局ソース読まないと分からないことは多いし。
ま、個々の関数の処理効率なんかよりも、
書くプログラムのアルゴリズムが最適かどうかの方が、
全体の速度にはるかに寄与する。
アルゴリズムが最適でさらに速度を求めるならインライン C で書くべし。
0412名無しさん@お腹いっぱい。
01/11/09 04:22ID:???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 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:???0416名無しさん@お腹いっぱい。
01/11/11 10:25ID:???0417名無しさん@お腹いっぱい。
01/11/15 11:30ID:HBIil14t掲示板程度ならオブジェクト使わないほうが効率いいんじゃないかと思うんですが,
どんな時に,どういう風に使えば便利ですか?
いいサンプルや解説ページとかあれば教えてください。
0418名無しさん@お腹いっぱい。
01/11/15 11:50ID:???>「オブシェクト指向使えばいろいろ便利だ。」
まあこう言うのはITオヤジのレベル、オブシェクト指向で彼女は出来ないし、
オブシェクト指向で奥歯に詰まったフライドチキンのカスは取れない
0419名無しさん@お腹いっぱい。
01/11/15 12:35ID:???何がどうすごいんだか分からないんですけど。
実行してもコードがでてくるだけだし。
■ このスレッドは過去ログ倉庫に格納されています