CGIに依存しないPerlの話題一般
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001名無しさん@お腹いっぱい。
2001/05/31(木) 21:49ID:bKRSBFew・モジュール、オブジェクト指向プログラミング
・Perl6や.NET対応など
・各種GUIツールキット(Perl/Tk, Gtk-Perlなど)
・他言語による拡張(Inline::*, XS, Swigなど)
についてマターリと語り合うスレッドです。
#CGI関連の話題は、なるべく専用スレッドで。
0002_gunzip
2001/05/31(木) 22:19ID:???Perl5.7.1(devel)ではハッシュ関数(hv.h内のマクロPERL_HASH)が
変更されているようですね。
/* hv.h 49-62 */
#define PERL_HASH(hash,str,len) \
STMT_START { \
register const char *s_PeRlHaSh = str; \
register I32 i_PeRlHaSh = len; \
register U32 hash_PeRlHaSh = 0; \
while (i_PeRlHaSh--) { \
hash_PeRlHaSh += *s_PeRlHaSh++; \
hash_PeRlHaSh += (hash_PeRlHaSh << 10); \
hash_PeRlHaSh ^= (hash_PeRlHaSh >> 6); \
} \
hash_PeRlHaSh += (hash_PeRlHaSh << 3); \
hash_PeRlHaSh ^= (hash_PeRlHaSh >> 11); \
(hash) = (hash_PeRlHaSh + (hash_PeRlHaSh << 15)); \
} STMT_END
詳細は↓ここに記載されています。
http://burtleburtle.net/bob/hash/doobs.html
-----------------------------
・・・とか、こういった話題でいいのかな?
えと、とにかく初めのうちは積極的に寝たふりをお願いします。
#「俺はPerlをこんな風に活用している」とか、誰でも取り付きやすい話題があると賑わうのかな。
0003_gunzip
2001/05/31(木) 22:23ID:???正>積極的にネタ振りをお願いします。
森首相じゃあるまいし....
0004名無しさん@お腹いっぱい。
2001/06/01(金) 00:02ID:???うう…レベルが違う(汗
0005名無しさん@お腹いっぱい。
2001/06/01(金) 01:07ID:???http://bulknews.net/lib/doc-ja/exegesis2.ja.html
%hash{value} @array[0] ... なんか気持ち悪いなぁ(笑)
しかも
$hash_ref = %hash; # %hashのリファレンスを取得
$hash_ref{value}; # %hash{value}と同じ事
ってことも出来るらしい…。
ワケ分からなくなりそう(笑)
0006(・ε・
2001/06/01(金) 02:17ID:NgAAv9OY一括変換したり、秀のマクロで文字列変換するような作業を、スクリプト
でやってみようと思っています。
それで、Linuxのシェルスクリプトかperlを学ぼうを思ってるんです
が、貧乏なんで本が一冊しか買えません(^_^;)
bashで初めるシェルスクリプトか、オライリーさんのラマ本、、、、、
ん〜、どっちを買うべきだろう、、、、、、貧乏はいやだ〜
0007(・ε・
2001/06/01(金) 02:23ID:???消えますー。
0008名無しさん@お腹いっぱい。
2001/06/01(金) 03:13ID:A0sV3i8w「CGIに依存しないPerlの話題一般」にはあてはまるんでない?
俺としてはPerlのほうをお勧めするよ。普及率で言えば
シェル >> Perl
だけれど、Perlのほうができることが多いし、DOSのバッチ的な用途にも
Perlはすごく向いている。
0009_gunzip
2001/06/01(金) 06:46ID:???あう、ソースを眺めていたらたまたま気づいただけです.....。
気軽に逝きませう。
>>5
確かに訳分からなくなりそうだ.....。
今までの$foo->[$n] が $foo[$n] (or $foo.[$n])で、$foo{bar} が %foo{bar} か.......。
うう.......慣れるまでの辛抱か。
ところでis演算子っていい感じ....(この辺りは意見が分かれるのかな)
サブルーチンの名前付きパラメータも有り難い。
>>6-7
bashシェルプログラミングと、Perlが共に学べる(らしい)
http://www.amazon.co.jp/exec/obidos/ASIN/4886485243/249-4475496-7314707
のような本もありますよ。
(自分は持っていないので、薦めて良いのかちょっと自信がありませんが)
ちなみに、Shellモジュールを利用すれば、シェルスクリプトを書く感覚で
Perlスクリプトを書くことが出来ます。
#でもやっぱりシェルスクリプトも書けた方がいいです。(はい)
0010_gunzip
2001/06/01(金) 07:03ID:???Perl Power Tools: The Unix Reconstruction Project
http://language.perl.com/ppt/index.html
こんなのもあります。
Perlで書かれたcp,ls,diffコマンドなど色々揃っていますので、学習用にでも。
0011あげ
2001/06/01(金) 15:35ID:???0012(・ε・
2001/06/01(金) 19:29ID:NgAAv9OY8さんのおっしゃる様に取り合えずシェルはmanと睨めっこして
perlの本を買おうかな、、と思ったら、、、
>bashシェルプログラミングと、Perlが共に学べる(らしい)
良いッス、欲しいッス、直撃です(^ ^ )、同じ処理をbashとpealで
並べてくれてたりしたらいいなー、明日早速探しに行って見ます。
>Perl Power Tools: The Unix Reconstruction Project
こっちも凄いですね、厨房的には"perlって凄い"としか言えませんが (^^;;
しかも、かなりのコマンドがサポートされてるんですね。
頂いて、見てみます。
とても役立つご意見でした、有難う御座いました。
やっぱり聞いてよかったー
0013名無しさん@お腹いっぱい。
2001/06/07(木) 04:54ID:G2lWQh7Ihttp://backno.mag2.com/reader/BackBody?id=200106032250000000015670000
256バイトの掲示板とか、無理か。
ARGVをevalするのは、インチキのような……>ライフゲーム
0014名無しさん@お腹いっぱい。
2001/06/07(木) 10:08ID:???256バイトは少ないよなぁ。
せめて7行は欲しいところ。
ARGVをevalするのは反則。
IO::Socketをuseするのも反則。
0015名無しさん@お腹いっぱい。
2001/06/08(金) 15:39ID:???なんだけど、どうなの?
0016名無しさん@お腹いっぱい。
2001/06/08(金) 17:17ID:???7行あれば DVD のデコードができるもんね(w
0017名無しさん@お腹いっぱい。
2001/06/08(金) 20:49ID:???それしたの十六歳の少年だっけ?
0018名無しさん@お腹いっぱい。
2001/06/08(金) 21:13ID:???0019.pl
2001/06/09(土) 00:05ID:LnGQ.bng今日初めて気がついた…
#!/usr/bin/perl
use strict;
&set_foo;
my $foo;
print $foo;
sub set_foo{
$foo = 'bar';
}
__END__
うーん…変なの(++
0020名無しさん@お腹いっぱい。
2001/06/09(土) 18:55ID:edu.PDfoどうあるべきなの?
0021名無しさん@お腹いっぱい。
2001/06/09(土) 19:05ID:G7GneXHo#!/usr/local/bin/perl
use strict;
$foo = "bar";
my $foo;
print $foo;
__END__
ってやってみるとわかるよ。
やってることは同じように見えるけど実行結果が違う。
これの use strict をはずした奴もやってみると吉。
0022名無しさん@お腹いっぱい。
2001/06/09(土) 23:05ID:???特殊文字って何?
\/*$%#&"!とか?(m
0023名無しさん@お腹いっぱい。
2001/06/09(土) 23:13ID:???0024名無しさん@お腹いっぱい。
2001/06/10(日) 00:30ID:???>\/*$%#&"!とか?(m
スレお間違えですか?ここは
「CGIに依存しないPerlの話題一般」
です。
0025enhydra
2001/06/10(日) 18:01ID:5nh0OkNc大丈夫、100Kbyte前後しか増えないから。
0026名無しさん@お腹いっぱい。
2001/06/10(日) 18:33ID:???CGIスクリプトとして動作させる場合はかなりやばいんじゃ…。
…と、思ったが、CGI.pmは+700kb近いな…warnings程度は余裕か。
0027(-_-;;)
2001/06/10(日) 21:37ID:wIreiASQ俺はhttp://world.std.com/~aep/ptkdb/を使用してます。
0028名無しさん@お腹いっぱい。
2001/06/10(日) 21:41ID:???0029名無しさん@お腹いっぱい。
2001/06/10(日) 23:20ID:???0030名無しさん@お腹いっぱい。
2001/06/10(日) 23:59ID:???どうやったらメモリ使用量ってわかるの?
0031名無しさん@お腹いっぱい。
2001/06/11(月) 00:00ID:???Giants Uzeeeeeeeeeee Itteyoshi!!! の略?
0032名無しさん@お腹いっぱい。
2001/06/11(月) 00:15ID:ozjTMEXgなんだかわからないままWin2000でPerl/TKのmake中。。。
0033名無しさん@お腹いっぱい。
2001/06/11(月) 00:20ID:???Tcl/Tkは知らんから比べられないが、別に知らなくても良いんじゃないの?
…Perl/Tk使って何かした事は無いけどね(´∀`)
# Perl/Tk本はあるけどGUIプログラムを配布しようと思った事無いからね…
# 自分だけが使うツールにわざわざGUI付けるのもアホらしいし
0034enhydra
2001/06/11(月) 00:41ID:g88SXDIUtopとかlsこまんどのマニュアルをまんこまんどで見よ。です。
strictもwarningsもスピードなり消費リソースが気になるなら、コードをきれいにした後コメントアウトすれば済むし。おいら
は気にならないけど。
あとCGI.pm とか巨大なやつをWebアプリで使う時もmod_perlで親httpdにロードさせとけば子httpdで共有されるから実質的に
リソース(めもり)くわなくなるっすよね。
# おっとCGIよりなお話(汗)
0036enhydra
2001/06/11(月) 00:48ID:g88SXDIUいかん lsこまんどじゃ調べらんない(汁)
psコマンドのマニュアルをマンコマンドで見よ。の誤りっす。
0037名無しさん@お腹いっぱい。
2001/06/11(月) 00:51ID:???WIn2000ってぇとActivePerl?
ならPPMで一発じゃん?<Tk.pm
003835
2001/06/11(月) 01:50ID:???うぞ!? PPMに? あった〜 => http://www.ActiveState.com/packages/
ありがとー。
0039_gunzip
2001/06/11(月) 01:52ID:???-------------
sbrk()要求サイズ(PERL_DEBUG_MSTATS=1)
#(do nothing)
58392 bytes(6)
#use warnings;
284672 bytes(46)
#use CGI;
1232896 bytes(90)
0040_gunzip
2001/06/11(月) 03:15ID:???>>13
256と言えば....Ascii256倍シリーズのPerl版でないかなあ....。
あれのC版(10年前?)は良かったし。
>>15
↑も参考に。
-DDEBUGGING,-DDEBUGGING_MSTATSスイッチを付けてコンパイルしたPerlで
環境変数PERL_DEBUG_MSTATSを1以上に設定してスクリプトを走らせると、
Perlインタプリタが利用するメモリに関する情報がいろいろ取得できます。
>>27-
殆ど話を聞かないけれど、VisualPerlってどんな感じなのかな?
たしかVisual Studio.NET Betaを持っている人は落とせた筈だけれど......。
自分の場合、GUIベースのデバッガと言えばDDDとかを偶に使う程度で、
大抵の場合 perl -d でケリが付きます。
0041_gunzip
2001/06/11(月) 03:28ID:???#Gtk-Perlのサイトって皆無に等しいのが残念...。
リンク
http://projects.prosa.it/gtkperl/
http://personal.riverusers.com/~swilhelm/perlgtk/index.html
スクリーンショット
http://personal.riverusers.com/~swilhelm/gtkperl-tutorial/calendar.html#CALENDAR-FIGURE
http://personal.riverusers.com/~swilhelm/gtkperl-tutorial/spinbutton.html#SPINNER-FIGURE
http://personal.riverusers.com/~swilhelm/gtkperl-tutorial/tree.html#TREE-FIGURE
0042名無しさん@お腹いっぱい。
2001/06/11(月) 19:09ID:???Gtk-Perlって、Windows版はないよねぇ。
Gtkは移植されているんだから期待してるんだけど。
Perl/Tkなら、WindowsでもXでもちゃんと動くんで気持ちいい。
これでMac版があったらなぁ。
0043名無しさん@お腹いっぱい。
2001/06/11(月) 23:15ID:???んじゃ、自分でサイト立ててれば一挙解決ではでは?
0044名無しさん@お腹いっぱい。
2001/06/12(火) 20:24ID:???0045名無しさん@お腹いっぱい。
2001/06/12(火) 20:26ID:???0046_gunzip
2001/06/12(火) 20:41ID:???そこが残念なところだなあ.....。
ちなみに Gtk-Perl では、ちゃんとset_locale()呼んでおけば
日本語表示/編集共に問題なしです。
>>43
今作ってる所だょ。ヽ( ´ー`)ノ
>>44
34.1MBもあるが........。
0048rubbish_lister
2001/06/12(火) 20:46ID:???0049名無しさん@お腹いっぱい。
2001/06/14(木) 22:55ID:???select(*STDOUT{IO});
print STDOUT select(), "\n";
0050名無しさん@お腹いっぱい。
2001/06/15(金) 00:34ID:????なにがおかしい?
0051名無しさん@お腹いっぱい。
2001/06/15(金) 10:29ID:xtaBOgm2>>18
船渡し問題のURLきぼーん。
正規表現のバックトラックで解いたの?
「正規表現エンジンで論理プログラミング」の例ってどっかにないかな。
>>9
>今までの$foo->[$n] が $foo[$n] (or $foo.[$n])で、$foo{bar} が %foo{bar} か.......。
>うう.......慣れるまでの辛抱か。
Damian Conwayも「最初は変な感じがしたけど、慣れたらこっちの方が
イイ!」だそうです。
http://yetanother.org/damian/talks/Perl6.pdf
0052名無しさん@お腹いっぱい。
2001/06/15(金) 11:11ID:???船渡し問題
http://piza.2ch.net/test/read.cgi?bbs=tech&key=990503990
問題クレクレ
http://piza.2ch.net/test/read.cgi?bbs=tech&key=989687023
この2つだよ。
0054名無しさん@お腹いっぱい。
2001/06/15(金) 16:24ID:???見てきた。どういう家族だ。笑い。
0055名無しさん@お腹いっぱい。
2001/06/19(火) 05:48ID:???暴れてますなヽ(´ー`)ノ
0056名無しさん@お腹いっぱい。
2001/06/20(水) 00:58ID:???sub hoge{
static my $count = 0;
0057名無しさん@お腹いっぱい。
2001/06/20(水) 01:10ID:???どんなメリットが?
0058名無しさん@お腹いっぱい。
2001/06/20(水) 01:32ID:???グローバル変数みたいのを使いたくないから。
my $static = 0;
sub hoge{
if( .. ) $static++;
みたいのを良くやるので…。
何か良い方法あるのかな。(お手軽なやつで)
0059_gunzip
2001/06/20(水) 01:58ID:???#違うかな?
#!/usr/bin/perl
use strict;
{
# $countにはincr_count(),decr_count(),get_count()経由でのみアクセス可
my $count = 0;
sub incr_count{ $count++ }
sub decr_count{ $count-- }
sub get_count{ $count }
}
print get_count();
incr_count();
print get_count();
decr_count();
print get_count();
0060rubbish_lister
2001/06/20(水) 02:16ID:???無理かな?
0061名無しさん@お腹いっぱい。
2001/06/20(水) 02:32ID:???0062rubbish_lister
2001/06/20(水) 02:51ID:???package Static;
use 5.6.0;
use strict;
use base 'Exporter';
our @EXPORT_OK = qw/ static /;
sub TIESCALAR{
my $class = ref($_[0]) ? ref(shift) : shift;
my $self = [];
return bless $self, $class;
}
sub FETCH{
my $self = shift;
my $callline = (caller(1))[2];
return $self->[ $callline ];
}
sub STORE{
my $self = shift;
my $value = shift;
my $callline = (caller(1))[2];
$self->[ $callline ] = $value;
}
sub static($) : lvalue{
no strict 'vars';
local *staticvar = \$_[0];
tie $staticvar, __PACKAGE__;
$staticvar;
}
1;
__END__
0063rubbish_lister
2001/06/20(水) 02:52ID:???#!/usr/bin/perl
use Static qw/ static /;
static my $i = 0;
foreach (0 .. 10){
print count1(), "\n";
}
foreach (0 .. 10){
print count2(), "\n";
}
sub count1{ return $i++;}
sub count2{ return $i--;}
__END__
但し…ネタにしかならない。
0064rubbish_lister
2001/06/20(水) 17:18ID:???package Static;
use base 'Exporter';
@EXPORT_OK = qw/ static /;
use strict;
sub TIESCALAR{
my $class = ref($_[0]) || $_[0];
my $self = \do{ $_[1] };
return bless $self, $class;
}
my @values;
sub FETCH{ $values[ ${ $_[0] } ];}
sub STORE{ $values[ ${ $_[0] } ] = $_[1];}
my @vars;
sub static($) : lvalue{
no strict 'vars';
local *staticvar = \$_[0];
my($cline) = (caller(0))[2];
tie $staticvar, __PACKAGE__, $cline;
my $dumy;
$vars[ $cline ]++
? $dumy
: $staticvar;
}
1;
__END__
=head1 SYNOPSIS
use Static qw/ static /;
sub countup(){ static my $i = 0; return $i++ }
print countup, "\n" for(0 .. 10);
=cut
一連の駄レススマソ。
0065名無しさん@お腹いっぱい。
2001/06/20(水) 20:30ID:???なるほど。出現行数で変数を識別するのかー。
面白いっす。これってオリジナルのアイデア?
0066rubbish_lister
2001/06/20(水) 21:06ID:???>>62は思いついてすぐ作ったのでイマイチかな。
>>63は低速である事を覗けば実用化可能かな?
行番号で識別しているので"#line"などで行番号をいじると妙なことになりますが。
lvalueとtieを使うといろいろ遊べて楽しいですね。
0067_gunzip
2001/06/21(木) 22:44ID:???http://dev.perl.org/rfc/22.html
組み込みswitch-case文も導入(たぶん)ですね。
......とにかくC,C++,Javaみたいな"fall-through"がデフォルトでは無いようなので一安心。
# C# ではbreak,goto必須だし。
0068名無しさん@お腹いっぱい。
2001/06/22(金) 06:21ID:???0069_gunzip
2001/06/22(金) 06:45ID:???Perlのbool値はPL_sv_yes, PL_sv_noで表される。
/* perlvars.h */
PERLVARIC(GYes, char *, "1")
PERLVARIC(GNo, char *, "")
文字列リテラルさね。
0070名無しさん@お腹いっぱい。
2001/06/22(金) 21:10ID:???perldoc -q static
0071名無しさん@お腹いっぱい。
2001/06/25(月) 17:13ID:???0072名無しさん@お腹いっぱい。
2001/06/25(月) 18:06ID:..juuP4w0073名無しさん@お腹いっぱい。
2001/06/25(月) 23:28ID:???と、いうことは。。。
いまPerlの資格試験を新設したら受験料で大儲けかも?
いや、家元制度+段位制でもいいな。
Perl3級とか、Perl初段とかの免状を発行して大儲け。
0074名無しさん@お腹いっぱい。
2001/06/26(火) 00:11ID:???なんで世界規模のものを日本規模の制度にするんだよ(w
つーかネタか。
0075名無しさん@お腹いっぱい。
2001/06/26(火) 00:13ID:???0076名無しさん@お腹いっぱい。
2001/06/27(水) 16:13ID:Mv0nn73whttp://piza.2ch.net/test/read.cgi?bbs=tech&key=991994996&st=161
あっちの板の人は基本的にマルチリンガルだから、こういうの大好きなんだねえ。
おれとしては・・・面白そうだけど使わない、つーか使うテクがないなあ。
0077名無しさん@お腹いっぱい。
2001/06/27(水) 19:14ID:???殆んどいないと思うが...
0078名無しさん@お腹いっぱい。
2001/06/27(水) 19:51ID:???0079名無しさん@お腹いっぱい。
2001/06/27(水) 22:18ID:???0080rubbish_lister
2001/06/27(水) 23:54ID:???0081名無しさん@お腹いっぱい。
2001/06/28(木) 00:23ID:???0082名無しさん@お腹いっぱい。
2001/06/28(木) 12:17ID:???STLはPerl使いにはうれしい機能(連想配列モドキとか)がいろいろついてるのでぜひ覚えておくことをお勧めする。
0083_gunzip
2001/06/28(木) 16:15ID:???取りあえず使えるのは C,Perl,Java,C# とか。(C++は知らない)
その前はsed,awk(gawk)とかやってたけど、Perl憶えて以来不要になった。
---------
Perl for .NETって、Perlで書かれたコードを一度C#コードに変換してから
cscでコンパイルして実行モジュール、DLLを作るみたいだね。
0084名無しさん@お腹いっぱい。
2001/06/28(木) 16:49ID:???# 社内用にチョコチョコ作らされるけど
Perl・・・・厨房程度
PHP・・・・同上
VB・・・・同上
Ruby・・・・厨房以下
・
・
・
Mind・・・・挫折(ワラ
N88-Basic・・・・プロ級(ウソ
初めて作ったプログラムは FamilyBasic用ゲームプログラム。
0085S
2001/06/28(木) 18:18ID:???C … 消防
Prolog … 園児
って感じです。
0086名無しさん@お腹いっぱい。
2001/06/28(木) 20:34ID:???っていうかこの条件って誰か別の人が作ったゲームのヤツだ…
俺が見たやつはクリアするとアレなイベントが起きるっていうヤツだったけど。
#アレって何よってのは察してくれ…
…パクリ?
0087名無しさん@お腹いっぱい。
2001/06/28(木) 22:00ID:DSCSsXU2某所で長らく話題にのぼりながら、一向に実現されないやつだな。
本因坊は決まっているのになあ。
0088名無しさん@お腹いっぱい。
2001/06/28(木) 22:05ID:???0089名無しさん@お腹いっぱい。
2001/06/28(木) 22:06ID:DSCSsXU2え、そんな新しいものだったのか。
土人と宣教師みたいなトラディショナルなやつかと思ってたよ。
プログラミングの教科書にのってるわけじゃないの?
0090_gunzip
2001/06/28(木) 22:09ID:???提督 + 副官 + 謎の老人 + その友人 の4人バージョン
もしかしてそれのこと?
0091名無しさん@お腹いっぱい。
2001/06/28(木) 22:10ID:???|母がいないと父は娘に手を出す
|父がいないと母は息子に手を出す
|執事がいないと犬は家族を食い殺す
こんな問題のってる教科書があるかよ!
0092名無しさん@お腹いっぱい。
2001/06/28(木) 22:50ID:???いや、おいらが最初に見たやつは、砂漠を行く話で、
「父」:=「王」
「母」:=「女王」
「息子」:=「皇子」
「娘」:=「皇女」
「執事」:=「猛獣使い」
「犬」:=「猛獣」
「手を出す」:=「殺す」
だった。
王位継承問題がこじれて……ってな設定をすれば、
十分教科書に出せると思うが。
ちょっとsearch spaceとかprologとか
missionaries and cannibalsとかで
サーチしてみたけど出てこなかったなあ。
0093名無しさん@お腹いっぱい。
2001/06/29(金) 02:28ID:???中学校の数学サイトで発見!
http://www.edu-c.pref.kumamoto.jp/ws/kcmathws/zibunde/kawa2/kawa2.html
その「アレなイベントが起きる」とかいう問題を
中学教師がパクって無難な設定に変えた可能性も高いが。
0094名無しさん@お腹いっぱい。
2001/06/29(金) 12:11ID:???いや、大元のネタはその辺りだと思うんだが。
手を出す食い殺すってのは、半年以上前(多分)に既に使われてるネタだってことだ。
#つーかすれ違いスマソ
0095名無しさん@お腹いっぱい。
2001/06/29(金) 15:40ID:???「手を出す食い殺す」設定→あるあるー
と思ってしまう俺はなにかに毒されているでしょうか。
0096名無しさん@お腹いっぱい。
2001/07/02(月) 17:48ID:cRPRYcUw0097なな
2001/07/02(月) 20:18ID:???/(だった|で((御座|ござ)(い|居)ま)?した|であ(っ|りまし)た)(な)?ら(ば)?
|であれば|(である)?なら(ば)?/
…氏にそう。おれに日本語を教えてくれ。いやマジで。
0098Name_Not_Found
2001/07/02(月) 20:54ID:???ワラタ
0099名無しさん@お腹いっぱい。
2001/07/02(月) 21:17ID:???無修正です。
0100_gunzip
2001/07/03(火) 01:08ID:???デザインが変わったね。
0101名無しさん@お腹いっぱい。
2001/07/03(火) 12:24ID:fLxGSuZsuse Perl;でも話題になってた。
Perlのメインサイトがオライリーっぽくなりすぎで興ざめだってさ。
0102rubbish_lister
2001/07/03(火) 17:26ID:???矢印演算子?まさかね…。
0103名無しさん@お腹いっぱい。
2001/07/03(火) 21:19ID:fLxGSuZsああ、それperl6-languageとperl6-internalsで話題になってたなあ。
Simon Cozensが「~」を提案して論争になってた。
どう終結したんだろう。
……(メールアーカイブを検索中)……
うむー、どうにもなってないなー。
Larryが反応するまで決まらなさそうだ。
興味のある人は "The Perl6 Emulator" から続く話をどうぞ。
http://archive.develooper.com/perl6-language%40perl.org/msg07598.html
0104名無しさん@お腹いっぱい。
2001/07/04(水) 13:12ID:???"100" + "100" が 200 になるっつうのがそもそもの間違い。
0105rubbish_lister
2001/07/04(水) 16:20ID:???"~" ですか…。
$str = $str ~ $str; $str ~= $str;
うーん…なにか間違っているような気が(汗
素直に参照/メソッド起動はアロー演算子、文字列結合はドット演算子としておけばいいのに。
0106名無しさん@お腹いっぱい。
2001/07/04(水) 20:52ID:dDBXzh2.文字列連結と数値的加算という、意味も動作もまったく違うものに
同じ演算子を使うのは混乱の元だと思う。
演算子オーバーロードに関してはLarryが
数学記号は数学的意味を表わす場合のみにしましょうね
という指針を示している。「+」を使っていいのは複素数とか行列みたいな、
交換法則と結合法則を満たすもののみに限定されるべきという話。
確かに文字列の連結って可換じゃないし、
逆演算を「-」で無理矢理定義してもピンと来ない。
文字列の連結に「+」を使うというのを最初に考えついた人って誰?
その人が素直じゃなかったんだと思う。Smalltalkのころ?
「末尾への連結」に「<<」を使うことを考えついた人もえらい。
常人の発想ではない。狂っている。
ストリームへの出力と配列へのpushを、
「末尾への連結と見れば同じ」と考えてかどうか知らないが、
「<<」という同じ記号っていうのも発想がすごい。
「>>」はきっとその逆演算なのだろうと予想できるが、
popなのかunshiftなのか、はたしてどっち?
Perl6のswitch文(仮名)もこの話と同類の気狂い仕様な気がするな。
これがRubyだと「メソッド===で比較」って言い方になって、
polymorphismというカプセルに入った結果、
同じ気狂い仕様なのに美しく見えるのは不思議だ。
0107名無しさん@お腹いっぱい。
2001/07/04(水) 22:11ID:???\____ ____/
 ̄ ̄ ̄∨ ̄ ̄ ̄
〃┏━━ 、
| ノノソハ)))
(\リリ;´Д⊂#ヽ
(ニ⊂[#~~'∞"_ノ
/__∞_|
し'(_f)
0108Perl好き
2001/07/04(水) 22:54ID:???今までRuby信者に汚いと罵られようと、感覚的にとても解りやすい言語だと思ってたが、
アロー廃止、$@%の意味変更は滅茶苦茶な愚行だ。
でももう決定事項なんだろうな。ああ鬱。
マジでRubyに移ろうかしら。
0109名無しさん@お腹いっぱい。
2001/07/05(木) 02:33ID:NIXF4Exg0110名無しさん@お腹いっぱい。
2001/07/05(木) 03:07ID:f2quMIhg予想では再来年のPerl Conference合わせくらいじゃなかったっけ。
0111名無しさん@お腹いっぱい。
2001/07/05(木) 06:48ID:j7I9hWXA全くもって同感
0112shige
2001/07/05(木) 11:19ID:???イエイ!
0113106
2001/07/05(木) 15:25ID:???配列の連結にも「+」を使うからねえ……。
そういえばCでもポインタの加算という意味のまったく
違う仕事を「+」と書いていたなあ。
「Perlは様々な組込関数のデフォルト挙動を、
たくさん覚えないと使えないからイヤ」って意見をよく聞くけど、
「OO言語は一見同じ記号でもクラスによって全然違う動作をするんで、
たくさん覚えないと使えないからイヤ」とはあまり聞かないね。
むしろ「全然違う動作でも意識せず同じ記号で使える」とか利点として
紹介されている。
でもRubyの言語仕様書とか見てると、
OO言語って演算子オーバーロードなしには、
言語仕様も定義できないのかな、と思ってしまう。
JavaはC++の反省からか演算子オーバーロードできないけど、
結果としてなにがしかの利便性は失われているみたいだ。
Perl6になるとARRAYの「+」は連結になったりするのかなあ。
Larryが防波堤になってくれると信じてるんだけど。
OOスレ逝った方がいいな。スレ違いスマソ。
0114名無しさん@お腹いっぱい。
2001/07/05(木) 15:27ID:???ま、Perl6でもPerl5のコードが走るはずだし、それに期待するしか。
0115名無しさん@お腹いっぱい。
2001/07/05(木) 16:32ID:???0116名無しさん@お腹いっぱい。
2001/07/05(木) 18:07ID:???うーん……
0117名無しさん@お腹いっぱい。
2001/07/06(金) 05:20ID:dr/SZh9Uhttp://corn.2ch.net/test/read.cgi?bbs=php&key=991966646
0118名無しさん@お腹いっぱい。
2001/07/06(金) 06:45ID:???0119名無しさん@お腹いっぱい。
2001/07/06(金) 10:18ID:???0120名無しさん@お腹いっぱい。
2001/07/06(金) 22:49ID:???0121名無しさん@お腹いっぱい。
2001/07/08(日) 22:16ID:???0122名無しさん@お腹いっぱい。
2001/07/09(月) 02:39ID:???なにがかわったん?
0123名無しさん@お腹いっぱい。
2001/07/09(月) 02:53ID:???知らん。
俺も知りたいYO!
0124名無しさん@お腹いっぱい。
2001/07/09(月) 10:27ID:???0125名無しさん@お腹いっぱい。
2001/07/09(月) 11:06ID:nTmH2gQU試してみた人いる?
0126名無しさん@お腹いっぱい。
2001/07/15(日) 22:57ID:3qwmQFts0127名無しさん@お腹いっぱい。
2001/07/16(月) 01:33ID:OyRSiVOsでてるよー。
http://search.cpan.org/search?dist=perl-5.7.2
僕はあえてdevelに挑戦するつもりないけど...。
0128_gunzip
2001/07/16(月) 21:00ID:???入れてみたけれど、unicode周りが変更になった他は
大して変わっていないみたいだね。
最近CPAN2の存在を知った・・・
http://cpan2.org/
0129名無しさん@お腹いっぱい。
2001/07/16(月) 21:32ID:4EOT0rSw#!/usr/bin/perl
BEGIN{
use overload '<<' => sub{
my($self, $str) = @_;
print {$self} $str;
return $self;
};
my $stdout = bless \*STDOUT;
*out = sub(){ $stdout };
}
exit;
out << "==========終了済み==========" << "\n";
__END__
このコードなんですが、実行するとexit()しているのも関わらず
"終了済み"と印字されます。
$stdoutがグローバル変数だったり
out()をsub out(){$stdout}で宣言すると何もせず終了します。
これはどういうことなんでしょうか。
環境:
WindowsMe ActivePerl 5.6.0.623
0131_gunzip
2001/07/17(火) 06:47ID:???ふぅ。オプティマイザの副作用の気がするなあ。
Perlが与えられたスクリプトを実行する際、コンパイルと実行段階の間に
オプティマイズという段階があって、定数値の埋め込み、
余計なシンボルテーブル検索の削除等を行うことになっている。
例えば、
print 4 + 5;
は、始めのOPコードへのコンパイルの段階で
「4(const)と5(const)をスタックにプッシュ、次にスタックから二つ値を取り出し、
それらを加算(add)、その値をprintで標準出力に出力せよ」
というコードが生成されるのわけだけれど、
Perlのオプティマイザは4と5が数値定数であるから、これらを予め計算して
「9をprintで標準出力に出力せよ」
というコードに修正する。(Perlのオプティマイザの働きについては
他にも色々とあるので、詳しく知りたければop.cのpeep()でも眺めてくれ)
0132_gunzip
2001/07/17(火) 06:48ID:???で、今回の場合、問題の
out << "==========終了済み==========";
についてだけれど、(ちょいと端折った)
out はBEGINブロックのpadlist内に閉じこめられた$stdoutを常に返す
*プロトタイプが空の*サブルーチンなので、オプティマイザによって
その返す値 $stdout に置き換えられる。
(サブルーチン呼び出しに伴う負荷を押さえるために、プロトタイプが空であり、
かつ定数値を返すものはその値に置き換えられることになっている。
constantプラグマなどがその良い例。)
(但しこれは正確ではない。&をつけて呼び出されたものは置き換えられない事に注意。)
で、次
「$stdout (blessed "main")」<< "==========終了済み==========";
シフト演算子"<<"(Perl内部の"left-shift"コード)の子は
何れも定数であるため、オプティマイザは(上でも見たように)
これを予め実行した結果に置き換えようとし、その結果、オーバーライドされた
メソッド(3-7行目)が呼び出され、「"==========終了済み=========="」が出力される、
というわけ。
これらは全て**実行段階前**に行われるので、exit()やdie()の順序は意味を持たない。
試しに、
*out = sub(){ $stdout };
の()を外したり、後ろのout呼び出しに&プレフィックスをつけると、
表示されなくなることを確かめてみればいい。
#いつもながら、間違っている箇所があれば訂正してくれると嬉しい。
0133名無しさん@お腹いっぱい。
2001/07/17(火) 07:07ID:???0134名無しさん@お腹いっぱい。
2001/07/17(火) 07:34ID:???あなたマジすげえ。
0135129
2001/07/17(火) 14:56ID:???コンパイル時に実行される計算だったわけですか。
確かに-cスイッチの元で実行しても"終了済み"と印字されました。
しかし、"*out = sub(){...}"を"sub out(){...}"に変更すると
そのような置き換えは発生しないのですが、これは何故なんでしょうか。
お手数かけますが、教えてください。
>>133-134
激しく同意っす。
0136_gunzip
2001/07/17(火) 17:43ID:???>しかし、"*out = sub(){...}"を"sub out(){...}"に変更すると
ちょっと確認するけれど、これは
-----------------------------------
#!/usr/bin/perl
BEGIN{
use overload '<<' => sub{
my($self, $str) = @_;
print {$self} $str;
return $self;
};
my $stdout = bless \*STDOUT;
}
sub out(){ $stdout };
exit;
out << "==========終了済み==========" << "\n";
------------------------------------
のようにoutの宣言をBEGINブロックから外に出した場合だよね?
0137_gunzip
2001/07/17(火) 18:02ID:???#!/usr/bin/perl
BEGIN{
use overload '<<' => sub{
my($self, $str) = @_;
print {$self} $str;
return $self;
};
my $stdout = bless \*STDOUT;
sub out(){ $stdout };
}
exit;
out << "==========終了済み==========" << "\n";
------------------------------------
ならOKだが....。
サブルーチンがインライン化されて定数値に置き換えられるためには
そのサブルーチンのプロトタイプが空であり、かつ、その返す値が
単なる定数値(4とか"hello"とか)であるか、又は、
**レキシカルスコープを持ち、かつ他から一切参照されない**
(この場合の$stdoutがそう)スカラー値でなくてはならない。
0139名無しさん@お腹いっぱい。
2001/07/18(水) 07:51ID:???基本的な考え方は>>64と変わらないものの、
IDに安全な値を使っているのでTie::Staticの方がマトモか…。
しかし見ていて飽きないですね、CPAN。
0140_gunzip
2001/07/18(水) 23:41ID:???(Jcode.pm以外見たことがない)
0141名無しさん@お腹いっぱい。
2001/07/18(水) 23:49ID:???0142名無しさん@お腹いっぱい。
2001/07/18(水) 23:58ID:???CGIメーリングリストの人に何人かいなかった?
0143名無しさん@お腹いっぱい。
2001/07/19(木) 00:00ID:???0144名無しさん@お腹いっぱい。
2001/07/19(木) 00:01ID:???DBI MLのかわいさん (例のエクセルのやつとか、バーコードのやつ)とか
perl-ooのみやがわさん(macバイナリカッターとか)とか
20人ぐらいはいると思う。
# どうでもいいけど、梅田紀伊国屋コンピュータ書コーナー配置換え。
#もともとおかしかったけど、さらに逝って良しな書店になった。
#場所は便利なのになあ。
0145名無しさん@お腹いっぱい。
2001/07/19(木) 00:05ID:???といってもこのJcode.pm含めて3人しか知りませんが。
…しかも全部文字コード関係だし(^^;
http://search.cpan.org/search?dist=CGI-ConvertParam
http://search.cpan.org/search?dist=ShiftJIS-Regexp
http://search.cpan.org/search?dist=Jcode
ガンバレ日本人!
ところでcpan2とsearch.cpanって何処が違うんでしょ。
付加分散の為?
0146JAPU
2001/07/19(木) 00:30ID:???http://search.cpan.org/search?dist=Roman
0147_gunzip
2001/07/19(木) 05:57ID:???>>143 あ、ど忘れしてました。川合氏ですね。(バーコードも)
>>144
macバイナリカッターの方は初耳だった....。
梅田紀伊国屋といえば、何時行っても人が多い
&& コンピュータ書コーナーは隅っこで本も少な目という印象があるな...。
京橋紀伊国屋が出来てからは、大抵そこで済ますようになったし、
無ければ新地のジュンク堂に行けばいいということもあって、梅田の方には最近殆ど行かない。
>>145
いろいろ教えてくれてありがとう。
search.cpan2.orgもあるみたい.。(中身は何もないけれど)
http://search.cpan2.org/
やはり負荷削減のためか.....。
http://take23.org/news/2001/01/26/cpan2.xml
>>146 ありがとうございます。探せば色々と有るものですね。
# 自分も何か貢献出来るようなネタがあるかな...と思ったが....
# CPANを探せば大抵は揃っているようですね。
0148____________________
2001/07/19(木) 06:30ID:???$s = new A();
$s->foo = "hoge";
$s->bar *= 50;
(foo, barはメンバ)
みたいな書き方は出来ますか?
トリッキーなのでもイイです。
0149_gunzip
2001/07/19(木) 06:47ID:???lvalue属性を使えば簡単に実現出来るよ。
詳しくはperldoc perlsubの"lvalue subroutine"セクションや、
attributeプラグマのマニュアルを読んでくれ。
#!/usr/bin/perl -w
package Point;
use strict;
use overload q{""} => sub { sprintf("(%d,%d)", $_[0]->x, $_[0]->y) };
sub new
{
my $class = shift;
return bless { x => $_[0], y => $_[1] }, $class;
}
sub x :lvalue method
{
shift->{ x };
}
sub y :lvalue method
{
shift->{ y };
}
package main;
our $p = new Point(1, 15);
print "\$p = $p\n";
#X座標を5倍、Y座標に20代入
$p->x *= 5;
$p->y = 20;
print "\$p = $p\n";
0150名無しさん
2001/07/19(木) 07:42ID:???ここのShellExtCtrlってソフト
結構使いやすい
Windowsで.plファイルが.batみたいに使えるようになる
0151名無しさん@お腹いっぱい。
2001/07/19(木) 10:32ID:mCZ55RKwActivePerl付属の pl2bat じゃだめなの?
ドロップすれば @ARGVにファイル名が入るのは一緒だし。
0152名無しさん@お腹いっぱい。
2001/07/19(木) 19:00ID:???パイプ繋がるから。
0154わ、
2001/07/20(金) 03:51ID:O.8zSDuM0155名無しさん@お腹いっぱい。
2001/07/20(金) 06:56ID:C8dQMlbs最近perlを憶えたのですが、自分で色々課題を出して解こうとしています。
しかし記念すべき第一号の課題から躓いてしまっています・・・。
あるディレクトリ内にファイル名に全く統一性のないファイルが複数あるとします。
そのファイルのどれだか分からない一部のファイル群に『HOGEHOGE』という文字
があり、それを『FUGAFUGA』という文字に変更するにはどうすれば良いのでしょう
?HOGEHOGEという文字は一つのファイルに一度しか出てきません。
スクリプトを作ろうとしたのですがうまく行かず、結局ここの方に頼ることに・・・。
また、この作業をperlを使ってコマンドラインから実行する方法も是非。
0156名無しさん@お腹いっぱい。
2001/07/20(金) 07:39ID:???どちらかと言うとPerl初心者コーナーの方が適当だと思いますが。
とりあえずヒントだけ。
rename($oldfile => $newfile); # 名前変更
use IO::Dir;
@files = IO::Dir->new($dir)->read; # ディレクトリ$dirにあるファイル名全てを得る
0157名無しさん@お腹いっぱい。
2001/07/20(金) 12:26ID:???カレントディレクトリ(サブディレクトリは除外)限定の場合
0158155
2001/07/20(金) 18:30ID:69JZH5Is>>157
すみません。訊き方方が悪かったです。
HOGEHOGEはファイル名ではなく、ファイルの中に書いてある内容です。
0159名無しさん@お腹いっぱい。
2001/07/20(金) 20:27ID:???まずうまく逝かなかったスクリプトを上げるべきだと思うのだが、
いかがかな?
それが無いようであれば、「教えて君」と見なし、以後放置するよ。
0160155
2001/07/20(金) 23:36ID:8VNGZ9tA【Perl 】初心者コーナーPart5に移動しました。
0161名無しさん@お腹いっぱい。
2001/07/23(月) 23:33ID:D.yGMh3Q0162_gunzip
2001/07/25(水) 20:21ID:???Perl.NETはbeta3になっているけれど、試した人いるかな?
(今のところWindows2000,NTでしか動作しないそうなので試せない。)
Perl.NETで、MS Windows上でもPerlで単体実行ファイル(PEじゃないが)や、
DLLを作り、それを C#, C++,JScriptから呼び出したり、逆にC#, C++のクラスライブラリを
Perlから簡単に利用できるようになるらしいな。(実際は知らんが)
0163名無しさん@お腹いっぱい。
2001/08/05(日) 06:15ID:???pack(chr(++$*+$*+++$**$*.
$*),$=))+--$* .. ord(pack
(chr($*+$*+++$**$*.$*),$=
))+--$*+$*++-(($*-$***$*)
)+$*+++$***$*-$*---$**$*,
$***$***$**$*){push@_,$_}
;foreach($***$**$*+$*/$*,
$***$**$**$*+$**$*,$***$*
*$**$*+$*,$***$**$**$*+$*
*$*-$*/$*,$**$**$**$**$*-
$**$**$*+$*,$*-$*,$**$***
$**$*-$*-$*/$*,$**$***$**
$*-$*,$***$***$*+$**$*-$*
/$*,$**$**$*-$*/$*,$**$*,
$***$***$*+$*/$*,$**$**$*
*$**$*-$**$**$*+$*,$***$*
**$*-$*/$*,$**$*,$***$***
$*+$*/$*,$***$**$*+$*+$*/
$*,$***$**$**$**$*-$**$**
$*+$*,$***$**$*-$*/$*,$*-
$*,$*,$***$**$*+$*,$**$*,
pack(chr$**$**$**$**$**$*
+$**$*+$*/$*-$*,$_[$_]);}
こんなことして遊んでいる方とかいますか?
いたら是非あなたの作品を見せてください。
0164名無しさん@お腹いっぱい。
2001/08/06(月) 00:10ID:oWP36vTo改訂(日本語)は青だよね?
0165名無しさん@お腹いっぱい。
2001/08/06(月) 00:11ID:???参考書スレッドがありました。
そっちにコピペします。
0166名無しさん@お腹いっぱい。
2001/08/06(月) 12:33ID:???うーん、その手の話題はプログラム板とかのほうが食いつきがいいんでは?
回文プログラムとかトリッキーなプログラムとかのスレあるし。
0167名無しさん@お腹いっぱい。
2001/08/09(木) 03:07ID:bI3E6lI.http://www.cpan2.org
http://www.cpan2.com
0168名無しさん@お腹いっぱい。
2001/08/13(月) 14:23ID:???my ($name, $mail, $date, $contents) = split /<>/, $line;
ってやるよりも
$line =~ /(.*?)<>(.*?)<>(.*?)<>(.*?)/;
my ($name, $mail, $date, $contents) = ($1, $2, $3, $4);
ってやったほうが速いんですね。
見やすい、書きやすい以外のsplitを使う理由があれば教えてください。
また、もっと速い方法があるならばそちらも教えていただけませんか?
0169名無しさん@お腹いっぱい。
2001/08/13(月) 15:27ID:???嘘はいけません。
my ($name, $mail, $date, $contents) = split /<>/, $line;
こっちの方が圧倒的に早い。
データ量によっては、
my @data = split /<>/,$line;
の方が早い。
my は付けない方が早い。
ちなみにスレ違い。このような話題は初心者コーナーへ。
0170名無しさん@お腹いっぱい。
2001/08/13(月) 17:00ID:???別に嘘を言いたかったわけではなくて、
use Benchmark;
my $line = "name<>mail<>date<>contents";
timethese(100000, {
foo => sub { my ($name, $mail, $date, $contents) = split /<>/, $line },
bar => sub { $line =~ /(.*?)<>(.*?)<>(.*?)<>(.*?)/;
my ($name, $mail, $date, $contents)= ($1, $2, $3, $4); }
});
ってやったときに、barの方が速いという結果が出たから質問したんですが・・・・
これは何故ですか?
あと、どこまでが初心者コーナー行きかの線引きがわかりません。
私としては、初心者コーナーはリファレンスを引けばわかるようなことを
やるところだと思っていたのですが。
0171名無しさん@お腹いっぱい。
2001/08/13(月) 17:38ID:???use Benchmark;
my $line = "name<>mail<>date<>contents";
timethese(100000, {
bar => sub { my ($name, $mail, $date, $contents) = split /<>/, $line },
foo => sub { $line =~ /(.*?)<>(.*?)<>(.*?)<>(.*?)/;
my ($name, $mail, $date, $contents)= ($1, $2, $3, $4); }
});
ってやったときに、barの方が速いという結果が出るのですが、
何故だか分かりますか?(>>170 のfooとbarを入れ替えている)
>>初心者コーナーはリファレンスを引けばわかるようなこと
まさしく貴方は初心者コーナーへどうぞ。
0172名無しさん@お腹いっぱい。
2001/08/13(月) 19:51ID:???my ($name, $mail, $date, $contents) = split /<>/, $line
},
bar => sub {
$line =~ /(.*?)<>(.*?)<>(.*?)<>(.*?)/;
my ($name, $mail, $date, $contents)= ($1, $2, $3, $4)
}
#-----------------------#
Benchmark: timing 100000 iterations of bar, foo...
bar: 12 wallclock secs (10.19 usr + 0.00 sys = 10.19 CPU) @ 9817.40/s (n
=100000)
foo: 7 wallclock secs ( 5.93 usr + 0.00 sys = 5.93 CPU) @ 16866.25/s (
n=100000)
0173名無しさん@お腹いっぱい。
2001/08/15(水) 00:30ID:???# どうでっしゃろ。
package OpenSaver;
use strict;
use Carp;
use Symbol;
use constant SAVE_FH => 0;
use constant ARG_FH => 1;
use constant OPEN_MODE => 2;
my $pkg = __PACKAGE__;
sub new{
my $class = ref($_[0]) ? ref(shift) : shift;
@_ or croak("$pkg: usage $pkg->new(opned-FileHandle, file[, mode]");
my($fh, $file, $mode) = @_;
$mode ||= do{ $file =~ s/^([+<>]+)//; $1 || '<'};
my $self = bless [
gensym(),
qualify_to_ref($fh, caller),
_open_mode_string($mode)
], $class;
open $self->[SAVE_FH], "$self->[OPEN_MODE]&" . fileno($fh) or croak("$pkg: open error:$!");
open $self->[ARG_FH], "$mode$file" or croak("$pkg: open error:$!");
return $self;
}
sub DESTROY{
my $self = shift;
open $self->[ARG_FH], "$self->[OPEN_MODE]&" . fileno($self->[SAVE_FH]);
}
sub _open_mode_string {
my ($mode) = @_;
$mode =~ /^\+?(<|>>?)$/
or $mode =~ s/^r(\+?)$/$1</
or $mode =~ s/^w(\+?)$/$1>/
or $mode =~ s/^a(\+?)$/$1>>/
or croak "$pkg: bad open mode: $mode";
return $mode;
}
1;
__END__
#usage
use OpenSaver;
{
my $opensaver = new OpenSaver(STDOUT, 'test.txt', 'w') or die $!;
print "This is test.txt\n";
}
print "This is display\n";
0174名無しさん@お腹いっぱい。
2001/08/16(木) 00:03ID:???自分でも色んなコマンドもどき書いてるんだけど全然違います(-▽-;
モジュールの使い方とか参考になるなぁこれ、
0175恥ずかしながら
2001/08/17(金) 01:35ID:???それ故、オブジェクト指向的な書き方が未だに分からないのであります。
自分の書くコードはPerl4とPerl5がイビツに混じっているのであります。
逝ってよしでありますか?
0176名無しさん@お腹いっぱい。
2001/08/17(金) 10:43ID:xrVq7k..日本のPerlを書く人(というかCGIを書くのにPerlを使ってるヒトか)の9割方(感覚値)がそんな感じだろうから気にしないでいいよ。
裾野が広いから色々在るのは当然。んでもそのままだと、恥ずかしい思いをすることも在るので Effective Perlや perldoc perlstylを一読することを激しくお勧め。
http://www.ascii.co.jp/books/detail/4-7561/4-7561-3057-7.html
http://www.kt.rim.or.jp/~kbk/perl5.005/perlstyle.html
0177名無しさん@お腹いっぱい。
2001/08/19(日) 02:16ID:i6ZuuVgY0178名無しさん@お腹いっぱい。
2001/08/19(日) 02:36ID:???コンパイル可能(?)なPerl6でなら…誰かやるのかねぇ。
0179名無しさん@お腹いっぱい。
2001/08/19(日) 02:43ID:???カーネルとPerl処理系のみで、システムは全てPerlで書くとか。
ダメかなぁ。知識0厨房でスマソ。
でもこれだったらスゴック小さい&軽いOSができそうだけどなぁ。
0180名無しさん@お腹いっぱい。
2001/08/19(日) 03:54ID:???軽くはないでしょう・・
0181sage
2001/08/19(日) 16:15ID:i6ZuuVgYhttp://www.perl.org/
0182恥ずかしながら175
2001/08/20(月) 04:52ID:???ありがとうであります。
新しい書き方も取り入れて行こうと思う次第であります。
0185名無しさん@お腹いっぱい。
01/09/05 16:01ID:8Hg/qZ8ICのgetchar みたいなんすけど、、ARGV??
つーかプリント文が流れて逝くだけだし、、、俺ってあほですか?
0186名無しさん@お腹いっぱい。
01/09/05 16:09ID:dfrFd246うん。
#!perl
use constant PROMPT => '( ´∀`)>';
print PROMPT;
while (<>) {
chomp;
system $_;
print PROMPT;
}
__END__
0187名無しさん@お腹いっぱい。
01/09/05 17:09ID:jg.i3l1M逝って来ます アホだ。。。
0188名無しさん@お腹いっぱい。
01/09/06 20:41ID:???組み込み関数をかなり違う動作をする関数でオーバーライドするのってどうよ?
$s = new File::Stat('foo);
$t = new Time::Localtime(time);
$c = new ChdirSaver ('..');
などの方が読みやすく安全だと思うのだが。
0189名無しさん@お腹いっぱい。
01/09/07 11:56ID:.xfvPVkw同感。普通のコード書く時はそうですよね。
ただワンライナーを書く時はオーバーライドしてくれた方が便利という背景もある。
@EXPORT じゃなくて @EXPORT_OK に書いてくれてれば良いのにね。
0190名無しさん@お腹いっぱい。
01/09/07 14:36ID:BHawRKfcuse File::Stat ();
@EXPORT に入ってるのはあくまで「デフォルト」でEXPORTするだけです。
空リストをuseに渡せばOK。
$st = File::stat($file);
0192名無しさん@お腹いっぱい。
01/09/08 00:16ID:TqV0GOBs組み込み関数の名前をオーバーライドするってのは、
こんな使えない組み込み関数は捨てちまえ!俺のモジュール使え!という
モジュール作成者の自信をあらわすものだったりして。
0193名無しさん@お腹いっぱい。
01/09/08 23:45ID:UUPZ4HXg0194名無しさん@お腹いっぱい。
01/09/09 16:18ID:???cp ./tmp/hoge './tmp/h u" g a' "./tmp/target'dir"
こう言う入力がSTDINから有ったとして、これを上手に
@argment = ('./tmp/hoge','./tmp/h u" g a','./tmp/target'dir');
つまりShellに与えた時の引数の解釈と同じ動作がしたいのです。
正規表現で削ってみたりと苦戦してみたのですが、引数の数は不定な事も
有って完全にShellと同じ動きをするのは不可能な気がしています。
今は1byteづつ積み上げて解釈するしかないのかなと思ってます。
参考になるソースなんかは無いでしょうか。出来ればperlなら感激なんですが
よろしくお願いします。
0195194
01/09/09 16:31ID:???処理モードに入るんです、各コマンドのサブルーチンは大体出来ていて
例えば、
$./perlshell.pl cp ./tmp/hoge './tmp/h u" g a' "./tmp/target'dir"
こんな感じなら上手く行くのです(シェルが綺麗に@ARGVに収めてくれるので)
ところが$./perlshell.pl として起動して
perlshell$←入力待ち
cp ./tmp/hoge './tmp/h u" g a' "./tmp/target'dir"
とした時の<STDIN>からの入力の処理が出来ないのです。
ここに
0196名無しさん@お腹いっぱい。
01/09/09 16:40ID:???もう少しマトモかつ具体的な例を頼む。
0197194
01/09/09 17:08ID:???つまりShellをエミュレートしたいのだと思います。
tcshから、./perlshell.pl とタイプすると
perlshell$ こう言うプロンプトが出ます。
そこに
cp "dist1" "dist2" "dist3" "target" と入力した時の
<STDIN>からの入力を上手に配列(上なら("dist1","dist2","dist3","target"))
に収めたいのです。
今bashのソースを拾ってきたのですが、何故か心が重いです・・・
0198名無しさん@お腹いっぱい。
01/09/09 18:08ID:???と思いつつ少し考えてみる。
とりあえず
http://www.din.or.jp/~ohzaki/perl.htm#Tag_Remove
でも読みながら考えていろ。
0199194
01/09/09 21:46ID:???シェルのソース見てみたんですが、Cが殆ど読めないので良く分かりません
でした、ただそれらしきループが有ったんでやはり1byteづつ切り出してる
んだと思います。
取り合えずsubstrで1byteづつ切り出してるんですが、難しいです。
フラグだらけで訳が分からなくなってきた。
まずは ' の中では " が使える、" の中では ' が使える。
これを目指して頑張ってます。
パイプとリダイレクトはどうしようかなぁ、何か無理っぽいです。
0200名無しさん@お腹いっぱい。
01/09/09 21:53ID:NKqI5UNoprint `$cmd`;
で
$ perlshell rm -rf /
じゃだめなの?
0201198
01/09/09 22:18ID:???逝ってきます。
#!perl
my $command = q{cmd>foo.txt "double quote" '/single quote/' "cmd>foo.txt"};
print Dumper [parseline($command)];
sub parseline{
my $str = shift;
my $quoted_str = qr{(?:[^"' ]|"[^"]*"|'[^']*')*};
my $i = 0;
return grep{ $i++ % 2 }(split /($quoted_str)/o, $str);
}
__END__
0202JAPU@ページデザイン変更してみたり
01/09/09 22:35ID:???$arg = q/Sakura "Moe" "\"puni\"" 'hanya-n'/;
@arg = split /\0/, `perl -e 'print join "\\0", \@ARGV' $arg`;
print "$_\n" foreach @arg;
0203>>JAPUさん
01/09/09 22:53ID:???でもあまり暗いのは好きじゃないですね。鬱になりそう。
0204名無しさん@お腹いっぱい。
01/09/09 23:32ID:???psh (Perl Shell) っていうのがあるらしいんだが、参考にはなるか?
ttp://sourceforge.net/projects/psh/
0205194
01/09/10 01:25ID:???>>200 それはちょっと・・(笑
>>201
いえいえ、凄く参考になります。自分では何も思いつかないレベルなので
>>202
凄いトリックですね、こんなの絶対考えつかないです。
今回は、勉強がてらなるべくシステムを呼ばない前提なので、
最後の手段に保存させてもらいました。
>>204
大感謝です、これは凄い。
入れてみてビックリしました、完全にShellの動作をしてます
グロビングまで自前でやってる様です、きっとこの人は偏執狂だ(笑
同じ名前で情けないので dameshell に改名しました。
今、該当部分を探している所です。段々流れがつかめて来た気がします。
今日は寝るので、ある程度形になったらまた報告させてもらいます。
多謝です>みなさん
$arg =~ s/^\s*//;
if( $arg =~ /^"/ ){
if( $arg =~ s/^"((\\.|[^"])*)"// ){ push @args, &parse_meta( $1 ) }
else{ die "unmatched" }
}
elsif( $arg =~ /^'/ ){
if( $arg =~ s/^'([^']*)'// ){ push @args, $1 }
else{ die "unmatched" }
}
elsif( $arg =~ /^`/ ){
if( $arg =~ s/^`((\\.|[^`])*)`// ){ push @args, &parse_command( $1 ) }
else{ die "unmatched" }
}
elsif( $arg =~ s/^(\S+)// ){
push @args, &parse_meta( $1 );
}
else{
last;
}
}
うーん。この位なら正規表現一発で綺麗に書けそうだけど…
リダイレクトやパイプがないんじゃシェルとは…
0207名無しさん@お腹いっぱい。
01/09/10 10:19ID:7tqUQO.2#!perl
use Text::ParseWords;
@args = shellwords($strings);
__END__
0208194
01/09/10 15:53ID:???use strict;
&Main_block;
sub Main_block{
    my ($input,@output,$count);
    print "ひき数をいれてください\n";
    $input = <STDIN>;
    @output = &Parse_arg($input);
    $count = 0;
        foreach (@output){
            print '$ARGV'."[$count]\t$_\n";
            $count++;
        }
    exit;
}
0209194
01/09/10 15:54ID:2zI8oYIY#***** 引数を解釈して配列に入れる
sub Parse_arg{
    my ($input,$charnum,$char,$argpart,$count,$quot_flag,@out);
    $input = shift;
    chomp ($input);
    $charnum = length ($input);
        while ($count < $charnum){
            $char = substr ($input,$count,1);
            if (($char eq ' ')&&(!$quot_flag)){
                $char = '';
                    if ($argpart){push (@out,&Unquote($argpart))};
                $argpart = '';
            }
            elsif ((($char eq '\'')||($char eq '"'))&&(!$quot_flag)){
                $quot_flag = "$char";
            }
            elsif (($char eq $quot_flag)&&($quot_flag)){
                $quot_flag = '';
            }
            if ($count == (${charnum}-1)){
                $argpart .= $char;
                if (&Unquote($argpart)){push (@out,&Unquote($argpart));}
            }
            $argpart .= $char;
            $count++;
        }
    return (@out);
}
#***** クオートを取り去る
sub Unquote{
    $_ = shift;
    $_ =~ s/^\'([^\']*)\'$/$1/;
    $_ =~ s/^\"([^\"]*)\"$/$1/;
    return $_;
}
#**********************************
0210194
01/09/10 15:57ID:???>>206
いえいえ、**完全に**とか言ってしまいましたが、本当は
It's my dir と言うディレクトリを開けなかったのと不定な
引数の数に対応出来なかっただけなのです。 " の中では ' が
使える、逆もOK、"と' の中ではスペースが使える、区切り文字の
スペースは幾つでも良い。これ位が目標だったので
リダイレクトは本物の動作がよく理解出来てない厨房っぷりなので
今後の課題にしようと思います。
>>207
知らなかったです、>>204さんに教えて頂いたpshもそうでしたが
細かく機能別のサブルーチンに分けて、そこに投げて行くんですね。
今、sub parse_lineとにらめっこしてます。実は、モジュールはrootに
有るの位しか使った事が無いのです(汗)
恥かしいコードですが結果、上の様になりました。
本物のふるまいが理解出来てないので今一つですが、
一応目的は達しました。ループしてるのは効率的じゃないかも、、
まだ比較演算子の優劣が分からないのでカッコだらけですが
ご勘弁ください、変な所有ったら指摘してもらえたら嬉しいです。
ありがとうございました>みなさん。 ホント勉強になる!
この板は2chじゃないですよね 笑)
0211名無しさん
01/09/10 18:00ID:???0212超上級者
01/09/13 05:28ID:???それと、実行されている環境のバイトオーダーを知る方法は?
知ってる人はココに書きなさいね。
0213_gunzip
01/09/13 05:59ID:???use Inline C;
our @filesystems = ("/dev/sda1", "/dev/fd0", "/dev/cdrom");
foreach my $fs (@filesystems){
print "$fs: ", is_mounted($fs) ? "mounted\n" : "not mounted\n";
}
__END__
__C__
#include <mntent.h>
#define TABLE_FILE "/etc/mtab"
int is_mounted(char *fsname)
{
FILE *fp;
struct mntent *ent;
if((fp = setmntent(TABLE_FILE, "r")) == NULL)
return -1; /* error */
while((ent = getmntent(fp)) != NULL){
if( !strcmp(ent->mnt_fsname, fsname) )
return 1; /* found */
}
endmntent(fp);
return 0; /* not found */
}
0214_gunzip
01/09/13 06:03ID:???use Inline C;
sub is_little_endian2()
{
return pack("I", 1) eq pack("V", 1);
}
sub is_little_endian3()
{
return vec(pack("I", 1), 0, 1);
}
__END__
__C__
int is_little_endian1()
{
union {
int val;
char byte[sizeof(int)];
} u;
u.val = 1;
return u.byte[0] == 1;
}
0215超初心者
01/09/13 06:04ID:???unpack('s', pack('n',1));
戻り値で判断
0216_gunzip
01/09/13 06:13ID:???#このスレッドに書き込むのも久しぶりな気がする...。
#いつの間にか書き込み200を越えていて嬉しひ。
0217名無しさん@お腹いっぱい。
01/09/13 09:16ID:FCaipOx6flockが使えないなら、自動的に他のロックを使いたいのです。
0218名無しさん@お腹いっぱい。
01/09/13 12:59ID:skA46.9M/etc/mtabの中をみて、マウントタイプ判断すればいいんじゃない?
うちの環境になぜか入っていた Quota モジュールを使う手も。
use Quota;
print is_nfs(/home2/john/path) ? 'Danger!' : 'Safe';
sub is_nfs {
my $path = shift;
my $is_nfs = 0;
Quota::setmntent();
while (my @mntent=Quota::getmntent()) {
if( $path ~= /^$mntent[1]/ and $mntent[2] eq 'nfs'){
$is_nfs = 1;
last;
}
}
Quota::endmntent();
return $is_nfs;
}
flockが使えないファイルシステムは他にもあるでしょうから、
もっと調べないとダメだと思いますけどね。
CfgTie::TieMTab っていうモジュール使うと便利かも。
0219218
01/09/13 13:03ID:???0220_gunzip
01/09/13 15:42ID:???ちなみに、マウントされたファイルシステムのタイプ(nfs, ext2, msdos, etc...)を取得するには
mntent構造体のmnt_typeメンバを調べるだけでおっけいです。
--> getmntent(3), fstab(5)
#213のは、見つかった場合endmntent(FILE *)を呼ぶのを忘れてる...。
0221名無しさん@お腹いっぱい。
01/09/13 16:18ID:???0222JAPU@会社作ったにょ
01/09/13 16:47ID:???ただ、NFS だとうまくロック出来ない場合がある... らしい。
# 何種類佳乃組合わせでためしたけど、全部成功したので "らしい" としか...
0223217
01/09/14 13:09ID:???eval { flock(STDIN) };
if ($@) {
# my_flock
}
elsif (is_nfs("mypath/mylockfile") {
# my_flock
}
else {
# flock
}
てな具合でいきたいと思います。
>>222
># 何種類佳乃組合わせでためしたけど、全部成功したので "らしい" としか...
成功したっていうのは吐いた制御がちゃんとできているってことですか?
# 自分も実験できる環境がないので "らしい" でしかないんですよね。
0224名無しさん@お腹いっぱい。
01/09/14 13:22ID:???0225名無しさん@お腹いっぱい。
01/09/14 13:27ID:???0226名無しさん@お腹いっぱい。
01/09/14 17:56ID:???0227226
01/09/14 18:07ID:???0228名無しさん@お腹いっぱい。
01/09/14 23:38ID:???美凪組み合わせだとどうですか?
0229217
01/09/15 01:07ID:???NFSの自動判別とかしないでユーザに指定させるか、
flockは完全に無視して独自ロックだけをつかう方法が多かった
前者がLockFile::Simple、後者がFile::FlockDir、File::NFSLock
厨房は厨房らしく自動判別はやめて、ぬるく逝こうと思う。
0230PerlHacker
01/09/19 05:33ID:???ページを見ている人のパソコンのCD-ROMを排出させる方法をCGIでやるやり方を教えてください!!!!
ネットを探しまわったのですが見つかりませんでした。
0231名無しさん@お腹いっぱい。
01/09/19 05:45ID:???そいつの家まで逝って、手動で開けてやれ。
0233_gunzip
01/09/19 06:07ID:???まず/dev/cdromをアンマウントし、(面倒くさければsystem("umount /mnt/cdrom")とか。)
<linux/cdrom.h>で定義されているCDROMEJECTをioctl(2)に渡してやれば良い。
use Fcntl;
require 'linux/cdrom.ph';
sysopen(CDROM, "/dev/cdrom", O_RDONLY|O_NONBLOCK);
$status = ioctl(CDROM, CDROMEJECT);
のような感じ。(無論、これでは動かないが)
#'linux/cdrom.ph'は<linux/cdrom.h>をh2phで変換
0234_gunzip@Scheme初心者
01/09/19 06:23ID:???0235PerlHacker
01/09/19 07:05ID:???教えてください!!!!!
0236PerlHacker
01/09/19 07:08ID:???0237名無しさん@お腹いっぱい。
01/09/19 07:09ID:???Activeでも勉強して下さい!!!!!
ついでに首括って芯で下さい!!!!!!!!!!
0238PerlHacker
01/09/19 07:12ID:???0239PerlHacker
01/09/19 07:13ID:???よろしくお願いします!!!
0240名無しさん@お腹いっぱい。
01/09/19 07:14ID:???これを全部落してインストールする
↓
リモートデバイスマネージャ(RDM)のヘルプを良く読む
↓
RDMサンプルスクリプトが付いてるからそれを試してみる
↓
(゚Д゚)ウマー
0241名無しさん@お腹いっぱい。
01/09/19 08:53ID:???0242名無しさん@お腹いっぱい。
01/09/19 14:11ID:???誰かXML::RSS使ってる人いますかね?
自分のサイトでRSS使って更新情報吐き出そうと思っているのですが。
使い方教えれってんじゃないよ(w
0243名無しさん@お腹いっぱい。
01/09/19 17:33ID:???窓のサイズを途中で変更されると表示が変になったり、全く何も描画されなくなったり。
そこで質問なのだが、窓のサイズが変更されたことを知るにはどうすればいい?
0244243
01/09/19 17:35ID:???0245_gunzip@Scheme初心者
01/09/19 17:52ID:???UNIX BSD4.3,SVR4から追加されたシグナルSIGWINCHを使えばいい。
端末サイズの変更の際にカーネルから送られてくるから、適切なハンドラでもって応えてやればいい。(デフォルトでは'IGNORE'になっている)
0246_gunzip
01/09/19 18:21ID:???http://www.research.att.com/sw/tools/sfio/
0248名無しさん@お腹いっぱい。
01/09/20 22:53ID:BGTtPH/k#!/bin/sh
OLD=$1
NEW=$2
shift ; shift
for file in $*
do
sed "s/$OLD/$NEW/g ${file} > ${file}.tmp
mv ${file}.tmp ${file}
done
をhage.shとして
$ ./hage.sh \r\n \n *
を実行したのですが、\r\nのままです。どこが変なのでしょうか?
0249名無しさん@お腹いっぱい。
01/09/20 23:01ID:???>>248いい子だからUNIX板に池。
0250248
01/09/20 23:04ID:BGTtPH/k#!/bin/sh
OLD=$1
NEW=$2
shift ; shift
for file in $*
do
perl -pe "s/$OLD/$NEW/g" ${file} > ${file}.tmp
mv ${file}.tmp ${file}
done
をhage.shとして
$ ./hage.sh \r\n \n *
を実行したのですが、\r\nのままです。どこが変なのでしょうか?
これならここでいいでしょ?
0251名無しさん@お腹いっぱい。
01/09/20 23:22ID:???perl -i.bak -pe s/\r\n/\n/ *
ではイカンのか。
0252_gunzip
01/09/20 23:23ID:???0253名無しさん@お腹いっぱい。
01/09/20 23:23ID:???echo "\r\n"
0255名無しさん@お腹いっぱい。
01/09/21 08:12ID:???0256名無しさん@お腹いっぱい。
01/09/21 10:27ID:eCUa7iH.オレ使ってるよ。とか言ったとしてどうなるのよ?
0257名無しさん@お腹いっぱい。
01/09/21 10:49ID:???そこから話が盛り上がる可能性に期待して、とか?
0258_gunzip
01/09/25 04:46ID:???http://www.perl.com/pub/a/2001/09/12/wxtutorial1.html
wxWindows
http://www.wxwindows.org/
wxWindows-Perl
http://wxperl.sourceforge.net/
02591
01/09/25 05:00ID:7Zufx8jAhttp://members.tripod.co.jp/bingo852/
0260_gunzip
01/09/25 05:35ID:???また、特に何も手を加えずに日本語の表示も可能ですね。
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どうすれば良いのでしょう?
(例えば、コマンドラインで、パスワードを入力するときに、8文字なら8文字と決まっていて、
9文字目は入力しても、画面には表示されない。)
OS非依存が良いのですが、依存せざるを得ないのであれば、Win依存でお願いします。
(キーが押されたってことを検出できれば、それをループでまわせるとは思うんですが、
C言語のgetche や kbhitに相当するPerl関数がわからないんです。。とほほ。。。。)
厨な質問ですみません。(板違いなら、さらにごめんなさい)
0262名無しさん@お腹いっぱい。
01/09/27 15:46ID:WzgjwwkM以前、Windows ActivePerl に入れてみたら日本語が表示できなくて
いろいろ情報探したら、「マルチバイトに対応する予定はない」って
いうMLの記事を見つけたんであきらめたんですけど、表示できるのかぁ。
またちょっと試してみようかな。
0263名無しさん@お腹いっぱい。
01/09/27 20:08ID:OLVunqioないんじゃないか?
俺が知らないだけかも。
でもgetcheもkbhitもDOSやWindowsプラットホーム固有の関数だから
マルチプラットホームなPerlには実装されてないんじゃないかと思われ
0264[perl:2228]
01/09/27 21:41ID:???<STDIN>を使ってコマンドプロトコルから
入力した値をスカラー変数代入する処理で
プロトコルからの入力で、
何バイトまでしか入力ができない・・
っという風にしたいのですが、可能なのでしょうか?
もし可能であれば教えて頂きたいのですが。
0265_gunzip
01/09/27 21:46ID:???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_gunzip
01/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_gunzip
01/09/27 21:51ID:???{
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); # 確かめる暇もなく終わらないように。
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さんが好きそうな話題ねん。
そいった蘊蓄聞きたい上げ。
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, <marcus@marcuspost.com>
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:???何がどうすごいんだか分からないんですけど。
実行してもコードがでてくるだけだし。
0420名無しさん@お腹いっぱい。
01/11/15 13:48ID:???平行法で見ると#!がうき出て見える。
より目(交差法)で見ると引っ込んで見える。
0421名無しさん@お腹いっぱい。
01/11/15 16:56ID:???恥ずかしながら>>420のおかげで>>370がやっとわかった。
3Dってあるだろうがヴォケが!>俺
0422名無しさん@お腹いっぱい。
01/11/15 18:59ID:???0423名無しさん@お腹いっぱい。
01/11/15 19:16ID:???0424名無しさん@お腹いっぱい。
01/11/15 22:15ID:???0425名無しさん@お腹いっぱい。
01/11/15 22:34ID:???0426名無しさん@お腹いっぱい。
01/11/15 23:07ID:???0427名無しさん@お腹いっぱい。
01/11/15 23:16ID:???0428名無しさん@お腹いっぱい。
01/11/15 23:38ID:???リンクリスト繋いでるだけだろ?
0429名無しさん@お腹いっぱい。
01/11/15 23:45ID:???0430名無しさん@お腹いっぱい。
01/11/15 23:50ID:???そんなこと誰でも知ってるだろ。(爆笑)
0431名無しさん@お腹いっぱい。
01/11/15 23:58ID:???0432名無しさん@お腹いっぱい。
01/11/16 01:29ID:wuoKPRpJうん、じゃないと万年ヘタレどまりだからね。
0433名無しさん@お腹いっぱい。
01/11/16 02:38ID:???ソース読めとしか言えないなぁ・・・・
Perlは言語だけど、それ自体はCで書かれてるツールみたいなもん
だからね。
ドライバー(Perl書き)に求められるのは上手な車の運転
(常識的なコーディング作法)で、それはPerlに限った事じゃないだろ?
メカ(低レベルな内部構造)が知りたいならメカニック(C屋、asm屋)に
なってソース読むのが一番だよ
0434名無しさん@お腹いっぱい。
01/11/16 05:12ID:???0435名無しさん@お腹いっぱい。
01/11/16 17:16ID:???激しく同意
0436名無しさん@お腹いっぱい。
01/11/17 17:28ID:hx+Z154t先日、OSの再インストールしたんです。WindowsME。
そしたら何故かSOSが使えなくなってるんです。
で、よく見たらなんかそ err 02 とか出力してるんです。
もうね、アホかと。馬鹿かと。
お前な、再インストール如きでエラー吐いてんじゃねーよてんじゃねーよ、ボケが。
再インストールだよ、再インストール。
なんかバックアップし忘れたファイルとかあるし。一家4人で再設定か。これは関係ねーや。
よーしCygwinフルインストールだー、とか言ってるの。これも無関係だな。
お前な、頼むから動いてくれと。
SOSはな、今まで何の問題も無く動いてたんだよ。
ActivePerlのpl2batがいつ捨てられてもおかしくない、
IOリダイレクトは出来るわパイプは繋がるわ、そんな便利さがいいんじゃねーか。バッチファイルはすっこんでろ。
で、再度ダウンロードをしてきたところ、どうやら"#command /c perl ..."だと動くんです。
そこでまたぶち切れですよ。
あのな、command /cなんてきょうび流行んねーんだよ。ボケが。
得意げな顔して何が、command /c だ。
お前は本当にcommand /cが必要なのかと問いたい。問い詰めたい。小一時間問い詰めたい。
俺、何か設定し忘れてるだけとちゃうんかと。
ダレカタスケテ...
0437名無しさん@お腹いっぱい。
01/11/17 18:05ID:???上のような現象に困ってます。
識者の方助けてくだされ…
0438名無しさん@お腹いっぱい。
01/11/19 09:51ID:???日本語でそういうことをやってるサイトってないんですか?
0439名無しさん@お腹いっぱい。
01/11/22 14:39ID:5zsxNECC0440名無しさん@お腹いっぱい。
01/11/23 00:18ID:Xjh4pQJePerlからドライブのボリュームラベルを取得する方法ってありますか?
今のところsystemでdirさせて得てるからダサいんでなんとかしたいっす。
0441名無しさん@お腹いっぱい。
01/11/23 00:53ID:???ワラタ
最後の一行が大事ですな。
漏れはわからんです。。。
0442名無しさん@お腹いっぱい。
01/11/24 06:28ID:???Win32API
0443名無しさん@お腹いっぱい。
01/11/25 18:41ID:???Win32API::File
0444436
01/11/25 22:50ID:???0445名無しさん@お腹いっぱい。
01/11/25 23:09ID:???お〜、ありがとっすー
モジュール、便利なんですねぇ
0446檀那さん、名無しです
01/11/30 11:16ID:???誰かレビューしていただけないでしょうか。
レビューしていただける方がいらっしゃったら改めてここにURLを貼り付けます。
0447名無しさん
01/11/30 19:23ID:???誰もオメーに根性も勇気も期待してねぇーよ。CPANに
登録しねぇーならウゼェーから消えな。
0448名無しさん@お腹いっぱい。
01/11/30 21:22ID:???口先だけのヘタレが大きな口をきくなカスが。
>>446 例えどんな物でも、公開してフィードバックを得ようとするのは有益だと思われ。
ただ2chはどうかな...と思わないでもない。
0449名無しさん@お腹いっぱい。
01/11/30 21:32ID:???*.pmとかmod_perl MLとかperlMLのがいいんじゃない?
0450名無しさん@お腹いっぱい。
01/11/30 21:59ID:???ただ、似たようなモジュールがないかよーく確認してね。
ここに張っても誰かレビューしてくれるとは思うよ。
0451/名無しさん[1-30].jpg
01/12/01 21:19ID:???http://home.att.ne.jp/wind/love_cats/Time-JapanHolidays-0.03.tar.gz
0452名無しさん@お腹いっぱい。
01/12/03 08:25ID:ttBTmnrV0453名無しさん@お腹いっぱい。
01/12/03 10:21ID:???0454名無しさん@お腹いっぱい。
01/12/03 10:25ID:Jpx3osh/ずっと疑問だったんで、誰か教えてください>>453
0455むぎ茶
01/12/03 12:31ID:???スキル低いので細かいところしか指定できんです(_ _)
@ISA は use base のがかっちょいいかと。
@EXPORT よりは @EXPORT_OK のほうがいいのでは?
名前空間分かれてるほうがいいって人多いと思う
0456むぎ茶
01/12/03 12:34ID:???read_holiday_list だけど
use Time::JapanHolidays(holidaysList => "myHolidays.list");
ってして IMPORT で呼んどいてくれるとうれしいかも。
0457むぎ茶
01/12/03 12:39ID:???デフォルトのデータは日本の祝日だけど中身はそうじゃないんで
Time::Holidays.pm のほうがよいのでは?
あと Holiday だけじゃなく MemorialDay もはいってるから
そういう名前もいいかも
あとね日付のデータだけど デフォルトにマージする仕掛けも欲しいです
身近な記念日とかマージして登録できるとうれしい
0459名無しさん@お腹いっぱい。
01/12/05 03:02ID:???0460名無しさん@お腹いっぱい。
01/12/05 20:13ID:vhbZliPLいれようと思ったのですが、ppmでinstall GDGraph としてyesを選んでも
Error installing package 'GDGraph': Could not locate a PPD file for package GDGr
aph
というエラーが出ます。
どうすればいいんですか?
0461名無しさん@お腹いっぱい。
01/12/05 23:40ID:???http://www.geocities.co.jp/Bookend-Soseki/6187/xiaxiu/pg/5.html
0463名無しさん@お腹いっぱい。
01/12/12 06:28ID:???0464名無しさん@お腹いっぱい。
01/12/12 11:45ID:fZlaima3credentials\?\?\?\????????????°????????????????????????????????????´?°??????????±????????????????¶??¨??????????
?????¨??
\???\?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:fZlaima3credentialsメソッドがちゃんと動いていないみたいなんです。(使い方を間違ってるだけかもしれないので教えて下さい)
たとえば
サーバ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:I43ox8JPperldoc 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というふうに、第一引数に"ホスト名:ポート"と指定したらできました。
0468名無しさん@お腹いっぱい。
01/12/19 05:09ID:???0469あぼーん
NGNG0470名無しさん@お腹いっぱい。
01/12/20 20:30ID:???0471名無しさん@お腹いっぱい。
01/12/23 10:56ID:DF8u6Gm1sub 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:???0473デフォルトの名無しさん
01/12/23 11:30ID:gQHYl0sG何でだろ?リファレンスが有効だとスクラッチパッドって開放されないのかな・・・・
Perlのうんちくは全然分からないや。
個人的には凄く嫌だ(w
どなたか解説キボン
0474デフォルトの名無しさん
01/12/23 11:32ID:???でも気持ち悪いなぁ・・・・
0475名無しさん@お腹いっぱい。
01/12/23 13:35ID:???呼び出し元で使いたいからリファレンスを返すんでしょ。
使いたいものを返せばそれは使える、というのがPerl的なの。
>>473
>>472 がすでに全て解説している。
0476名無しさん@お腹いっぱい。
02/01/01 18:04ID:???0477名無しさん@お腹いっぱい。
02/01/02 00:03ID:0AIkB5pj二時間ほど粘ってみたがダメだった。無念じゃ…。
0478
02/01/02 10:03ID:XJ6nVU2Mどのモジュール?
mingw32とかはだめ?
あと、bcc32付属のmake使わずに、gnu makeつかえば、bcc32でもいけるかもね
0479名無しさん@お腹いっぱい。
02/01/02 13:19ID:???問題は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:???mingwはヘッダファイルのコンパイルは通りますが、
Makefileが全然ダメですね。
Config.pmのcc/ld/cppを分かる範囲で書き換えてもまだダメです。
mingwでコンパイルしたPerlがあればいいのかも…。
0481名無しさん@お腹いっぱい。
02/01/02 20:46ID:???0482デフォルトの名無しさん
02/01/03 02:15ID:???bcc32は独自拡張、独自縮小が甚だしいから(GCCもだけど ^^ )
素直にCygwin入れてgcc使った方が良いような。。。。
「,」引っ掛かりなんていかにもbccが原因っぽい
0483_gunzip@ブラウザ変ですよん
02/01/03 05:20ID:???うちの(久しぶりに立ち上げた)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:???< 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:???# "コマンドが見つからない"云々と文句を言われるかもしれないが、何の問題も無い
出来た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_gunzip
02/01/03 05:29ID:???何かの参考になれば、ということで。
#書き込める時と書けない時があるなぁ
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さん!
動いているのですが、C-x SPとかで ブレークポイントが設定できなかったり、
スタックさかのぼれなかったりしているんですがそんなもんなんですか?
0489_gunzip
02/01/03 23:03ID:???むむ..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コレのパッチかな。
http://homepage2.nifty.com/kipp/perl/build630bug/index.html
0492名無しさん@お腹いっぱい。
02/01/06 16:34ID:2f+STVY+諦めてcommand /cを通じて使っていたのですが、
ふと思いついたことがあって試したら当たりでした。
どうやらSOSはロングファイルネームは受け付けないみたいですね。
OSの再インストールをする際、PerlのパスをC:\PerlからC:\Perl5.6.1に変更したのが原因でした。
皆さんも気をつけてください。
0493名無しさん@お腹いっぱい。
02/01/07 23:43ID:BNEoib8dopen 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:???$fhをファイル名と判断しちゃってる感じ。
IO::Handleへのリファレンスをファイルハンドルと
判断しないっぽいですね。
truncate *$fh, 0 or die $!;
でいちおう回避。
0495493
02/01/08 00:37ID:???そうでしたか。また一つ賢くなれました。
ありがとうございました。
0497名無しさん@お腹いっぱい。
02/01/09 17:11ID:???じゃあそういうモジュール作って〜。
0498名無しさん@お腹いっぱい。
02/01/10 12:46ID:???これはどう?
0499名無しさん@お腹いっぱい。
02/01/10 12:48ID:???0500500GET
02/01/10 12:49ID:???0501名無しさん@お腹いっぱい。
02/01/11 09:42ID:IHYyu2/pCtrl+Cでファイルをクローズして終了したくて、
use sigtrap qw(die normal-signals);
END{close FH;}
のようにしてるけど、アプリケーションエラーになってしまう。(Win2K)
どうすればいいんだ。
0502名無しさん@お腹いっぱい。
02/01/13 10:01ID:???0503名無しさん@お腹いっぱい。
02/01/13 12:29ID:???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)
0504503
02/01/13 12:47ID:???ああ、>>501が言いたかったのは、
「dieでアプリケーションエラーになってしまう。(Win2K)」
ということか、、、逝ってくる。
0505501
02/01/13 15:34ID:???いえいえ、レスありがとです。
そっちの方もやってみたんですけど、 my_handler() の中で exit() するとやっぱり
アプリケーションエラーになってしまうんですよね。まあファイルクローズまでは
逝くので問題ないと言えばないのですが。
う〜ん、とりあえず我慢してこのまま使います^^;
ところでWinではキーボード入力待ちってできないのかなぁ? 他の環境用には
そういうモジュールがあったと思うけど…
0506名無しさん@お腹いっぱい。
02/01/13 20:13ID:???あるような気がするよ。
perl -MCPAN -e shell
でモジュール入れるときに、テストで入力待ちになるじゃん?
0507名無しさん@お腹いっぱい。
02/01/13 20:23ID:???0508名無しさん@お腹いっぱい。
02/01/17 01:21ID:???0509名無しさん@お腹いっぱい。
02/01/17 02:31ID:???0510プ
02/01/17 20:33ID:6zEN00QHsub func1()
{
my $ret = func2();
print "return code -> $ret \n";
}
sub func2()
{
eval {
return 1;
};
# if($@){} # <==
}
これさあ、コメント外すと返却値が無くなんだけど
分かる人居ます?
0511名無しさん@お腹いっぱい。
02/01/17 20:44ID:???0512名無しさん@お腹いっぱい。
02/01/17 20:59ID:???eval内のreturnはevalから抜けるだけだよ。
でreturnした値はevalの返り値になる。
0513プ
02/01/17 21:00ID:6zEN00QHif($@){return 100;}
だとどうなの
0514名無しさん@お腹いっぱい。
02/01/17 21:41ID:???なにがどうなの?
$@に何も入ってないんだから変わらないよ。
たぶんあなたの望んでいる動作は、
sub func2()
{
my $ret = eval {
return 1;
};
return $ret if $ret;
if($@){}
}
こういうことでしょ?
ところで、検証してて思ったけど、
if って評価した値が偽、かつelseがないと評価した値が返るのね。
sub func { if(0){} }
だと 0 が返る。どうでもいいけど。
0515heno
02/01/17 23:08ID:oR04RU/Zみたいのですが、ファイルの変更時刻を得るにはどのようにすれば
良いのでしょうか?
0516名無しさん@お腹いっぱい。
02/01/17 23:33ID:???0517515
02/01/17 23:33ID:???0519名無しさん@お腹いっぱい。
02/01/18 03:40ID:Z2zR15g40520名無しさん@お腹いっぱい。
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:???0522名無しさん@お腹いっぱい。
02/01/18 05:34ID:???ほれ。
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ありがとうございます。
一応modules@perl.orgのアーカイブは漁ってるのでSocket::PassAccessRightsの存在は知っていたのですが、
このモジュールはXS使ったモジュールなんですよね。
でIPC::SysVやIPC::Msgだけでなんとかならないかなー、と試行錯誤した結果質問させてもらった次第です。
でも当たり前に考えてファイルディスクリプタのアドレスっちゅーか番号を得る必要があるのですが、Perlのファイルハンドルはそこらへんが抽象化されてるので現行のPerlだけでは無理なんですよね。
おとなしくSocket::PassAccessRights使います。
あー、ディスクリプタパッシングとは何ぞやってヒト向けに説明付けると、異なるプロセス同士でファイルやソケットハンドルを受け渡しする方法のことです。
0525日下部圭子 ◆ib749tYo
02/01/18 14:40ID:???"/sage/524" wrote in message
news:2ch.comp.web-programming.991313362.524@2ch.net...
> 数十万エントリぐらい256バイトデータがあるのですが、連想配列使うのはマヅイ
ですか?
テストデータを作って実験することをお勧めします。
数百Mもメモリをつんでいるマシンなら、大丈夫だとはおもいますが。
----------------------------------
||//
(@_@) Kusakabe Keiko
----------------------------------
0526名無しさん@お腹いっぱい。
02/01/18 20:54ID:???foreachとか?(笑)
whileで読み込みつつ回すのはだめなんですか?
0527名無しさん@お腹いっぱい。
02/01/18 23:21ID:fgthOeGGfj::void
はどこにあるんでしょうか?
CPANを探しても有りませんでした
0528名無しさん@お腹いっぱい。
02/01/18 23:23ID:???まじかよ!
どんなモジュールなの?
0529heno
02/01/19 13:55ID:WCPxz8Ug0530名無しさん@お腹いっぱい。
02/01/19 15:07ID:???stringsって? 同様って何と?
もっと具体的に書いてください。
0531529
02/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と同様な処理をPerlで作ればいいわけだが、
割合簡単そうですね
File::strings とかあるかなってCPAN見たけどなかった
0533529
02/01/19 17:21ID:WCPxz8Ugなるほど (^_^ ;;)
ここのあたりをPerlで実装すれば良さそうですね。
#define ISSTR(ch) (isalnum(ch) || ispunct(ch) || \
(isspace(ch) && (!iscntrl(ch) || ch == '\t')) || \
(isascii(ch) && isprint(ch)))
#私も始め strings() という関数があるのではないかと思っていました・・・
0534529
02/01/19 18:22ID:???思いましたが、今回は個別に置換 (s/\x00// 等) して済ませてしまい
ました。
コメントありがとうございました。
0535名無しさん@お腹いっぱい。
02/01/25 03:32ID:llLEjDhTwindoze上で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
0536535
02/01/25 03:59ID:???逝ってきます。
0537名無しさん@お腹いっぱい。
02/01/27 02:12ID:Sw8wyViQhttp://www.thinkgeek.com/stuff/apparel/321a.shtml
0538名無しさん@お腹いっぱい。
02/01/27 09:55ID:???そうかなぁ?なんか色合いがタクっぽくてやだなぁ。
もっと粋な色使いにして( ゚д゚)ホスィ…
0539名無しさん@お腹いっぱい。
02/01/28 09:32ID:???Child Processの方は子供に欲しいぞ。誰かクレ。
0540名無しさん@お腹いっぱい。
02/01/31 22:34ID:???0541名無しさん@お腹いっぱい。
02/02/02 11:12ID:+ALef/KRの使い方わかるかたいますか?
ttp://www.perl.com/CPAN/modules/by-module/BSD/
time()を使うときに精度UPできるようなのですが、
readme読んでも使い方がわかりません・・・・。
0542名無しさん@お腹いっぱい。
02/02/02 11:23ID:???使い方は組み込み関数のtimes()と同じだよ。
0543541
02/02/02 11:33ID:+ALef/KRじゃ、use BSD::resource;
とだけ宣言して、普通にtimes()を使えばいいってことですか。
0544名無しさん@お腹いっぱい。
02/02/02 11:35ID:toL+Z2MW( 人>>538 _)
|ミ/ ー◎-◎-) そうかなぁ?なんか色合いがタクっぽくてやだなぁ。
(6 (_ _) ) もっと粋な色使いにして( ゚д゚)ホスィ…
_| ∴ ノ 3 ノ
(__/\_____ノ
/ ( || ||
[]__| |さくら命 ヽ
|[] |__|_538______)
\_(__)三三三[□]三)
/(_)\::::::::::::::::::::::::/
(_____):::::/:::::::/
(___[]_[]
0545名無しさん@お腹いっぱい。
02/02/02 11:42ID:???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
0547541
02/02/02 20:05ID:+ALef/KRありがとうございました。
でも、timesってopen2で処理してもらってる時間は計測してくれないのね。
鬱市
0548名無しさん@お腹いっぱい。
02/02/02 20:16ID:2Jw7igNJAの2乗=Bの2乗+Cの2乗ですが、
BとCの値を入れて計算が終わったとして、
ルートAの出し方がわかりません。
お助け下さいませ・・・
0549名無しさん@お腹いっぱい。
02/02/02 20:23ID:BTZXmzNssqrt(expr) で平方根。
0550名無しさん@お腹いっぱい。
02/02/02 20:40ID:2Jw7igNJありがとうございます。うまくいきました!
0551名無しさん@お腹いっぱい。
02/02/02 22:15ID:lgb4aC0Kそんなんでいいんかい?
perkの問題じゃなくて数学の問題だろ
0552名無しさん@お腹いっぱい。
02/02/02 22:35ID:2Jw7igNJいえ、CGIに依存しないPerlのお話だったんです。
sqrt関数がわかんなかったんです。
0553デフォルトの7子
02/02/03 00:54ID:juTMfXhdでperl APIを使用したCプログラミングをしようと思っています。
Cのソース上で
#include <perl.h>し
VC付属のコンパイラ CL.EXEで
>cl -I\Perl\lib\CORE perltest.c
とすると以下のようなエラーが出てしまいます。
おそらくperl.hで名前解決が出来てないためだと思うのですが、
ご存知の方アドバイスをよろしくお願いします。
**************************
\Perl\lib\Core\perl.h(797) : warning C4273: 'win32_strerror' :
しています。DLL にエクスポートされていると仮定します。
\Perl\lib\Core\dosish.h(111) : warning C4005: 'Stat' : マクロが再定
\Perl\lib\Core\win32.h(305) : 'Stat' の前の定義を確認し
\Perl\lib\Core\perl.h(1755) : error C2061: 構文エラー : 識別子 'pe
ンタックスエラーを起こしました。
\Perl\lib\Core\perl.h(1755) : error C2059: 構文エラー : ';'
\Perl\lib\Core\perl.h(1756) : error C2061: 構文エラー : 識別子 'pe
スエラーを起こしました。
\Perl\lib\Core\perl.h(1756) : error C2059: 構文エラー : ';'
\Perl\lib\Core\perl.h(1757) : error C2061: 構文エラー : 識別子 'pe
エラーを起こしました。
\Perl\lib\Core\perl.h(1757) : error C2059: 構文エラー : ';'
\Perl\lib\Core\perl.h(1758) : error C2061: 構文エラー : 識別子 'pe
ラーを起こしました。
\Perl\lib\Core\perl.h(1758) : error C2059: 構文エラー : ';'
\Perl\lib\Core\perl.h(2246) : warning C4273: 'win32_crypt' : DL
ています。DLL にエクスポートされていると仮定します。
\Perl\lib\Core\perl.h(2356) : warning C4273: 'win32_environ' :
しています。DLL にエクスポートされていると仮定します。
\Perl\lib\Core\perlvars.h(22) : error C2061: 構文エラー : 識別子 '
ックスエラーを起こしました。
\Perl\lib\Core\perlvars.h(22) : error C2059: 構文エラー : ';'
\Perl\lib\Core\perlvars.h(39) : error C2061: 構文エラー : 識別子 '
タックスエラーを起こしました。
\Perl\lib\Core\perlvars.h(39) : error C2059: 構文エラー : ';'
0554デフォルトの7子
02/02/03 01:49ID:juTMfXhd自己レスです
結局コマンドラインをあきらめてVC
のIDEでインクルードパスを
C:\Perl\lib\COREにしたらあっさり出来ました。
しかし今度はたったこれだけのソースがメモリエラー
実行できず・・・・
道は遠いなあ
#include <EXTERN.H>
#include <perl.h>
static PerlInterpreter *my_perl;
int main(){
SV *pvalueSV;
pvalueSV = newSViv(132);
return 1;
}
0555名無しさん@お腹いっぱい。
02/02/03 01:53ID:+IXT+7Wcがんばれ!
0556デフォルトの7子
02/02/03 03:11ID:NWocp2usありがとう!
頑張ってる!
でも
newSViv(132);
なぜこれがエラーになるのかがわからんです・・・・
参考ソースもすくないね・・perlAPIは・・
0557名無しさん@お腹いっぱい。
02/02/03 10:17ID:GN3WrqUChttp://www.t.ring.gr.jp/pub/lang/perl/CPAN/modules/00modlist.long.html#ID22_MicrosoftW
0558名無しさん@お腹いっぱい。
02/02/03 11:46ID:???インタープリタの初期化しないと駄目だ。
0559singleton
02/02/04 13:32ID:8LIPl4QIforeach (1..3) {
print Foo->getInstance(), "\n";
print Singleton->getInstance(), "\n";
}
package Singleton;
my %instances;
sub getInstance {
my $class = shift;
return $instances{$class} ||= $class->_new();
}
sub _new {
return bless {}, shift;
}
package Foo;
use base q/Singleton/;
-----------
Foo=HASH(0x80efc1c)
Singleton=HASH(0x80efc34)
Foo=HASH(0x80efc1c)
Singleton=HASH(0x80efc34)
Foo=HASH(0x80efc1c)
Singleton=HASH(0x80efc34)
0560名無しさん@お腹いっぱい。
02/02/04 14:28ID:???面倒くさいってアンタ…数文字だけタイプ数が変わるだけじゃん。
車輪の再発明をしたいならせめてもっとマシな物を作らないと。
例えば、Class::Singletonの_new_instanceを
sub _new_instance {
my $instance = bless { }, shift;
$inctance->_init(@_)
return $instance;
}
とでもすれば、_init()さえ定義すれば良いようになるだろ?
0561名無しさん@お腹いっぱい。
02/02/05 16:41ID:slTopwFT面倒って意味。
それに、Class::Singletonだと、$YourSingletonClass::_instanceでカプセルかが
破壊できちゃうのが何となく嫌。
レキシカル変数だと大丈夫だよね。
あと、_initは貼る時に削っただけでやってます。
0562名無しさん@お腹いっぱい。
02/02/12 23:36ID:gr8exDbOなどしてカレントディレクトリのモジュールを取り込んでいるケースに
違うディレクトリから
perl /html/test.cgi
などしてスクリプトを実行使用とすると、
カレントディレクトリが違うので
can't locate ./jcode.pl at /html/test.cgi line 2
などとなりますよね。
このような場合はどのようにして実行できますでしょうか?。
perl /html/test.cgi -I/html/
としてみても結果は同じでした。
0563名無しさん@お腹いっぱい。
02/02/12 23:40ID:???フルパス。
0564名無しさん@お腹いっぱい。
02/02/12 23:41ID:???絶対パスで指定する。
0565564
02/02/12 23:42ID:???0566undef
02/02/13 07:31ID:???あ、中学校の範囲じゃない?
0567562
02/02/13 08:07ID:2kRNjnhVレスありがとうございます。
すみません。少々説明不足でした。
もちろんフルパスでの指定というのがありますが
ソースコードを変更しないで実行したいのです。
perlスクリプトの方ではなくWEBサーバを書いているので。
Apacheなんかだとperlがどこにあってもカレントディレクトリの
スクリプトを実行できますよね。
0568名無しさん@お腹いっぱい。
02/02/13 10:51ID:???フルパスとか相対パス指定なんてダサいことしてるからそーなる。
use lib '/path/to/lib';
require 'jcode.pl';
ってすれば万事休す。もしくは
use FindBin;
use lib "$FindBin::Bin/../lib";
require 'jcode.pl';
な。とりあえず絶対パスはなんて言ってる奴は*論外*。クソな配布スクリプトを参考になんかしてると、一緒に腐っちゃうぜ。
なんなら .htaccessで
SetEnv PERL5LIB /path/to/lib
で済ましても良いし。
0569名無しさん@お腹いっぱい。
02/02/13 11:01ID:RcZE7nBSプログラム言語ができても国語ができないようで。残念。
0570名無しさん@お腹いっぱい。
02/02/13 13:37ID:???0571名無しさん@お腹いっぱい。
02/02/13 23:03ID:???0572名無しさん@お腹いっぱい。
02/02/13 23:21ID:???0573名無しさん@お腹いっぱい。
02/02/13 23:22ID:???結局絶対パス。大したこと無いね。
0574名無しさん@お腹いっぱい。
02/02/14 13:12ID:???スレ読んでる?
> use FindBin;
> use lib "$FindBin::Bin/../lib";
0575名無しさん@お腹いっぱい。
02/02/14 13:15ID:???0576名無しさん@お腹いっぱい。
02/02/14 20:23ID:???0577環境変数
02/02/14 23:47ID:s7CAF/TSプログラムは、どうすれば良いのでしょうか?
たとえば、
MS-DOSプロンプトで、「SET」とすると環境変数が出てきます。-(1)
次に、そのまま、何らかのPerlプログラムを実行。
再び、そのプロンプトで、「SET]で環境変数を表示。-(2)
この(1)と(2)で違う状態にしたいのです。(Perlで環境変数を変える)
よろしくお願いします。
0578名無しさん@お腹いっぱい。
02/02/15 00:14ID:???確か無理。
0579名無しさん@お腹いっぱい。
02/02/15 19:40ID:8vhXaga7自分、結構好きだったりするんですけどね、こいうの。
$date_time = sprintf "%04d/%02d/%02d %02d:%02d:%02d\n", sub{$_[5]+1900,$_[4]+1,@_[3,2,1,0]}->(localtime);
0580名無しさん@お腹いっぱい。
02/02/15 19:44ID:???元々C言語な人なんで複数行+sprintfですな。俺は。
0581名無しさん@お腹いっぱい。
02/02/15 20:06ID:???自分のサイトでも載せてるし、実際に使ってます、そんなの。
0582名無しさん@お腹いっぱい。
02/02/15 20:18ID:???そうですか、自分もCからPerlに入ったんで最初は違和感あったんですけど
いちいち中間変数を考えるのが面倒になったときこっちが便利になってきました。
>>581
はい、おっしゃるとおり、そんなのです。
他に使っている人がいて安心しました。
そんなん蛇道とかいわれなくてよかったです。
0583581
02/02/15 23:26ID:???誤解があったようなので。
> そんなの
「そういうの」って言った方が良かったね。
悪意はまったく無いので。スマソ
ちなみに私はPerl厨なので、俗に言うトリッキーな書き方が大好きです。
0584賛成の反対の反対ナノだ!
02/02/16 02:29ID:???のでわたしは使いません。
0585582
02/02/16 10:22ID:???いぇいぇ、わざわざすみませんです。
Perlコードのパズル感覚は私も面白くてはまるたちです。
>>584
やはり、そいった御意見もありますよね、ふむふむ。
ここは、使い分けということですよね。
処理時間が短さが重要な処理で、かつ大量の日付表示処理の繰り返し
とかやる場合は、オーバーヘッドの少ない方法を使うわけですね。
ちょっとしたレポートに作成日付をつけるぐらいの処理だったら
>>579に示した方法でもいいですよね。
0586名無しさん@お腹いっぱい。
02/02/16 11:37ID:???型変換は必要ないし0fillとか桁削りも簡単。
0587名無しさん@お腹いっぱい。
02/02/16 13:05ID:???手動フォーマットよりsprintf()の方が圧倒的に高速だが…俺のやり方がまずいんだろうか。
それともオーバーヘッドの意味が俺の考えている小物と違うのかな。
WinME perl5.6.1 ActivePerl 631
メモリ320MB CPU Duron 800MHz
#!perl -w
use Benchmark;
my @tm = localtime time;
sub timef1{
($sec, $min, $hour, $day, $mon, $year) = @tm;
$year += 1900;
$mon++;
$_ = sprintf '%d/%02d/%02d %02d:%02d:%02d', $year, $mon, $day, $hour, $min, $sec;
}
sub timef2{
($sec, $min, $hour, $day, $mon, $year) = @tm;
$year += 1900;
$mon++;
($mon < 10) and ($mon = "0$mon");
($day < 10) and ($day = "0$day");
($hour < 10) and ($hour = "0$hour");
($min < 10) and ($min = "0$min");
($sec < 10) and ($sec = "0$sec");
$_ = "$year/$mon/$day $hour:$min:$sec";
}
timethese 100000 => {
sprintf => \&timef1,
handformat => \&timef2,
};
__END__
結果
Benchmark: timing 100000 iterations of handformat, sprintf...
handformat: 6 wallclock secs ( 5.38 usr + 0.00 sys = 5.38 CPU) @ 18587.36/s (n=100000)
sprintf: 1 wallclock secs ( 0.82 usr + 0.00 sys = 0.82 CPU) @ 121951.22/s(n=100000)
0588名無しさん@お腹いっぱい。
02/02/16 13:06ID:???0589名無しさん@お腹いっぱい。
02/02/16 21:23ID:???といった文字列から、別のファイルに保存してある
http://hoge.hoge.jp/hoge/
といった文字列にマッチしていればそのマッチした部分を削除
してくれるような操作をしたいのですが、どうすればうまく行くでしょうか?
= 置換したい文字列が動的に変化する時、":" や "/"のエスケープは
どうするとよいのでしょうか?
0590名無しさん@お腹いっぱい。
02/02/16 22:17ID:???0592589
02/02/16 22:43ID:SkVhVlKIする場合、今まではエディタを使っていたのですが、perl
だとどうするのだろうかと・・・
0593名無しさん@お腹いっぱい。
02/02/16 23:04ID:???0594589
02/02/16 23:25ID:???あれ?
open LIST, "tmp.list";
while (<LIST>) {
s/$hoge//;
print;
}
これで素直に動きました(汗)
ありがとうございました・・・
0595名無しさん@お腹いっぱい。
02/02/16 23:27ID:???$hogeは?
0596名無しさん@お腹いっぱい。
02/02/17 00:11ID:???sprintfが重いってのはここを含めた一部の馬鹿板に於いて定説
ベンチも取らずに講釈並べるのが特徴です
>>584は馬鹿板育ちだからそっとしてあげよう
0597名無しさん@お腹いっぱい。
02/02/17 01:53ID:???587ではないですが、私はラリーウォールさんがそういってるからいちおう信じてます。
0598587
02/02/17 10:58ID:???なるほどね。
まぁお偉いさんがなんと言っていようと、俺は簡単かつ高速な方法を使うよ。
もちろん、ラリーの言葉を軽視するつもりはない。
printの代わりにprintfを、変数展開演算子の代わりにsprintfを使う事はないさね。(今までそんな事をしたことはないが)
0599名無しさん@お腹いっぱい。
02/02/19 14:02ID:O1s5GzF/0600名無しさん@お腹いっぱい。
02/02/19 14:09ID:uqUI0/lz0601名無しさん@お腹いっぱい。
02/02/19 15:30ID:???0602名無しさん@お腹いっぱい。
02/02/20 16:03ID:???ま、ラクダ本の「効率の問題」の節を参照ってこった。
なにごとも、やりくちがひとつでないのがPerl流だからな。
0603名無しさん@お腹いっぱい。
02/02/22 00:48ID:???0604メモ
02/02/23 10:58ID:???>>483-485を参照にConfig.pmいぢって、Makefile.PLして、
出来たMakefileのラスト、848行目辺りの
(TAB)$(PERL) -p -e "s/~DRIVER~/$(BASEEXT)/g" < $(DBI_DRIVER_XST) > $(BASEEXT).xsi
これを
(TAB)$(PERL) -p -e "s/~DRIVER~/$(BASEEXT)/g" $(DBI_DRIVER_XST) > $(BASEEXT).xsi
とする。(ダイヤモンドINPUTをリダイレクトじゃなく引数で渡す)
これでOKだった。
0605名無しさん@お腹いっぱい。
02/02/23 21:51ID:47XfJGkYprint B::Deparse->new->coderef2text(sub { 'foo' })
0606名無しさん@お腹いっぱい。
02/02/25 10:07ID:9PcQp5qzdefine.pl
$a = 1;
#このファイルの中では
require "define.pl";
main.cgi
print "$a";
すると変数$aにアクセスできますよね
しかしこれをuse strictで使いたい場合
全ての変数をmyしたいのですが、
define.plの中で
my $a = 1;
とするとmain.cgiからアクセスすることが出来なくなってしまいます。
c言語ならばmain.cgiでexternすればよいと思うのですが、
Perlではこのようなケースをどう扱うのが良いでしょうか?
define.pl
でpackage define;
my $a = 1;
してからmain.cgiで
$define::a
すればアクセスはできるようですが
が、できればパッケージプレフィクスは無しで同じmainパッケージ内変数として
扱いたいです。
両方のファイルをpackage main;して
同じパッケージにすればパッケージ変数無しで扱えるだろうと思いましたが、
ダメでした。
0607名無しさん@お腹いっぱい。
02/02/25 16:22ID:???思いっきり初心者の質問じゃねーか。
まず前提としてuse strictを使う時は$aと$bはやめとけ。$cはよし。
この忠告の意味が分かっているなら、使っても良いが。
1)
# define.pl
use vars qw($foo);
$foo = 1;
#end
# main.pl
BEGIN{ require 'define.pl' }
use strict;
print $foo
#end
2)
# define.pl
$foo = 1;
#end
# main.pl
require 5.006;
require 'define.pl';
our $foo;
print $foo;
他にもあるが、これがメジャーな方法だろう。
0608名無しさん@お腹いっぱい。
02/02/25 18:45ID:WcXyiJAeのようにして実行するperlスクリプトから
perlのパスを取り出すにはどうしたらよいでしょうか?
system('which perl' | > temp.dat);
のようにしてtemp.datを読み出せばわかるのでしょうが
どーにもスマートじゃない気がしています。
またWIN環境の場合はwhichが効かないので困ってしまいます。
何かいい知恵をお貸しください
0609名無しさん@お腹いっぱい。
02/02/25 18:54ID:???自分自身をファイルとして開く。
1行目を取得
/^\#\!(.*)perl$/
で、$1参照w。
自分自身のパスを保持している変数はあるがね。
0610名無しさん@お腹いっぱい。
02/02/25 20:22ID:z9RUeTDe殆どの場合
use Config;
print $Config{perlpath};
で逝けるぞな。
0611名無しさん@お腹いっぱい。
02/02/25 21:22ID:???それはそうと、Perl5.8.0は5月にリリース予定らしいぞ
http://slashdot.jp/article.pl?sid=02/02/23/0816236
0612名無しさん@お腹いっぱい。
02/02/25 23:24ID:???0613名無しさん@お腹いっぱい。
02/02/25 23:27ID:???出来る。
0614名無しさん@お腹いっぱい。
02/02/26 00:35ID:???どうやるんですか?
0615名無しさん@お腹いっぱい。
02/02/26 00:38ID:???ふつうにやる。
0616名無しさん@お腹いっぱい。
02/02/26 16:32ID:???0617>611
02/02/26 18:50ID:TKOzsqbn$^XはActivePerlだと
C:\Perl\lib\Perl
という風に表示されるのですが、
Linux上のPerlだと
単にPerlになってしまって全体のパスが見えないですね・・・うーーむ。
・・・やっぱwhich perlかな・・・
0618名無しさん@お腹いっぱい。
02/02/26 18:57ID:???system() or eval()
0619名無しさん@お腹いっぱい。
02/02/26 19:26ID:TKOzsqbnつまり
system("which perl")
すると言うことですよね?
その場合system("which perl|> temp);
してtempをopenすることになると思うのですが、
もっとシンプルに戻り値を受けたり出来ないものでしょうか・・・
0620猫に真珠 ◆eKrEwpMs
02/02/26 19:39ID:???print `/usr/bin/which perl`;
0621名無しさん@お腹いっぱい。
02/02/26 20:52ID:???うう、そういうモジュールがあるのか、知らなかった。
あなたは神。ありtがとう
0622名無しさん@お腹いっぱい。
02/02/26 21:15ID:???スマートじゃないけど直感的。
open(DATA,"which perl |");
パイプ知らない人・・・?
0623名無しさん@お腹いっぱい。
02/02/26 21:20ID:???実際にやってみた?
0624猫に真珠 ◆eKrEwpMs
02/02/26 21:24ID:???なぜかスクリプト中からwhich perlとしても、戻り値は獲得できません。
そういう場合は、大抵の環境に/usr/bin/whichというコマンドがありますので、
`/usr/bin/which perl`とコマンドで出力させれば、perlの位置も獲得できます。
0625名無しさん@お腹いっぱい。
02/02/26 22:05ID:TKOzsqbn遣り方を組み合わせてみたらできました。
open (DATA,"/usr/bin/which perl");
my @list = <DATA>;
するとperlのパスを読み出すことができますね。
でもこれだとwin32環境と切り分ける必要がありますね。
やはりそれは必須なのかな、どのみち・・。
if ($^O =~ /MSwin/){$path = $^X;}
else {
open (DATA,"/usr/bin/which perl");
$path = <DATA>;close(DATA);
}
こんな感じにしてみました。
0626猫に真珠 ◆eKrEwpMs
02/02/26 22:08ID:???なんで620は完全無視なの?さみしい。
0627asdfghjkl
02/02/26 22:21ID:???print join("\n",@INC);#謎
0628名無しさん@お腹いっぱい。
02/02/26 22:32ID:???きみそのコテハンパスワードにしてないよねまさか?(笑)
0629名無しさん@お腹いっぱい。
02/02/26 22:56ID:???0630asdfghjkl
02/02/26 23:58ID:???一応自称厨房という事で
ドーデもいいアカウントはこのパスかもなー
http://www3.chachacha.ne.jp/~indicate/cgi-bin/img0000064.jpg
たまには息抜きしろや
0631名無しさん@お腹いっぱい。
02/02/27 00:58ID:???公開済みの物を、公開しようかなも無いだろう。
<html><head>
<meta http-equiv="robots" content="none">
<meta http-equiv="Content-Script-Type" content="text/javascript">
<meta http-equiv="Refresh" content="4;url=?mode=go">
<title>Redirect...</title></head><body>
しばらくお待ちください...
<form name="temp" style="position:absolute;visibility:hidden;" method="POST">
<input type="hidden" name="mode" value="go">
<textarea name="cps"></textarea></form>
<script language="JavaScript"><!--
eval('document.temp.cps.createTextRange().execCommand("Paste");');
temp.action = location.protocol + "//" + location.host + location.pathname;
setTimeout("temp.submit();",100);
//--></script>
</body></html>
0632名無しさん@お腹いっぱい。
02/02/27 06:35ID:???それで解決する問題、たくさんあるじゃん。
0634名無しさん@お腹いっぱい。
02/02/27 08:52ID:???シンプルだけど個人的に嫌いだからパイプ使う。
0635asdfghjkl
02/02/27 19:33ID:???バレタ(ヶヶヶ
んーま、JS実行できる環境でやってみな。
結構面白い事起こるから。
暇つぶしに作ってみただけだが…Perl関係なくなってるな。
0636名無しさん@お腹いっぱい。
02/02/27 21:52ID:???0637名無しさん@お腹いっぱい。
02/02/28 03:21ID:CSTVGk7Dソラリスで実行しているのですが、
rmdir ("$data_dir/$del_uid.bak")
|| &Error::error ("admin.cgi","Can't remove dir $data_dir/$del_uid.bak", "$!");
なぜか実行時にこのコードがエラーになります。
||がいけないのかと思い下の行をコメントアウトしてみたら動きました。
さらにユーザー認証用にパスワードを暗号化して格納しているのですが、
ソラリスでは認証がきちんと出来ません
crypt ($pass, &Salt);
sub Salt {
my @chr = qw (a b c d e f g h i j k l m n o p q r s t u v w x y z
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
0 1 2 3 4 5 6 7 8 9 . /);
my $s1 = int (rand 63); my $s2 = int (rand 63);
return "$chr[$s1]$chr[$s2]";
}
このようにパスワードを作って、
sub CheckUserPasswd {
my ($uid, $pass) = @_;
my $user_db = &HashDB::Retrieve ("$user_db_name");
my $rh_USER = $user_db->GetHash ('USER');
if (!defined ($rh_USER->{"$uid"})) { return 0; } ## No such user !
my $crypted_pass = $rh_USER->{"$uid"}->{'PASSWD'};
if ($crypted_pass) { $pass = crypt ($pass, substr ($crypted_pass, 0, 2)); }
else { $pass = ""; }
if ($pass eq $crypted_pass) { return 1; } ## checking passwd OK !
return 0; ## No match !
}
このルーチンで照合しているのですが、
ソラリスで正確に動かない理由ってわかりますでしょうか?
どなたか情報をお願いいたします。
0638名無しさん@お腹いっぱい。
02/02/28 12:21ID:???"a".."z"みたいにまとめれ
0639名無しさん@お腹いっぱい。
02/02/28 22:35ID:???$data_dirのパーミッションとcgiのEUIDをチェックしれ。
パスワードの方は自分で書いたコードで弾いてるんだからいくらでもデバッグの方法はあるだろう。
つかこれくらい自己解決できないならとっとと転職しろ。
0640nobodyさん
02/03/07 20:53ID:vU2mkrSg0641nobodyさん
02/03/11 20:58ID:no4qCKmY文字コードを操作するものらしい、ってのはわかるけど、それ以上の事はわからん。
なんかH2ZとかTrとかあるし。文字コード変換なのかな?
0642nobodyさん
02/03/15 04:16ID:8bz6oWFz『http://』で始まり、『.jpg』で終るという行が1万行続きます。
で、この中で
http://pinktower.com/で始まるもの以外のURLをDUP_CHECK_FILE.txt.origに書
き出すという処理をコマンドラインで行おうとしています。
でもうまく行かない・・・。
とりあえずこんな感じでもういっぱいいっぱいです。
perl -i.orig -p -e '!/^http\:\/\/pinktower\.com\/(.*?)\.jpg$/' DUP_CHECK_FILE.txt
これだとDUP_CHECK_FILE.txtのファイルの内容がすべて
DUP_CHECK_FILE.txt.origにコピーされるだけなんです。
お願いします。
0643nobodyさん
02/03/15 04:31ID:???pスイッチだと全部出力しちゃうので,
nスイッチにして 'm|^http://pinktower.com/| or print'とするとか。
0644nobodyさん
02/03/16 01:50ID:???これでうまく行きました。
>>643
ありがとうございます。
いろんなスイッチがあってちょっと混乱気味。
それ、ちょっと試してみます。
色々学ばねば・・・。
0645nobodyさん
02/03/22 00:33ID:K4fa0ysYxcopyのオプション(/i)が効きません。
#!/perl
system("xcopy /i C:/test1.txt C:/test2.txt");
perlがxcopyを実行する時に/iのスラッシュがバックスラッシュに
置き換えられているんだと思うのですが、
これを回避する方法はあるのでしょうか。
既出ならすんません
0646645
02/03/22 01:09ID:???/iちゃんと効いてます。
逝ってきます。
0648nobodyさん
02/03/23 16:07ID:J43Ft5+8モジュールのインストールについての質問です。
>>460-462
と似た状況なのですが、
Activeperlがなぜか2つインストールされているNTサーバで
(5.6.1ですが、buildは626と629)
ppmによるインストールがうまくいきません。
適合するパッケージを使っているにもかかわらず
「このperl構成(MSWin32)じゃ使えない」ってエラーが来ます。
2つあるのがまずいんでしょうか?
できれば2つのままでインストールできるようにしたい
(片方アンインストールした時に何かあるとマズーなので)のですが。
入れたいモジュールはDBI関係です。
CPANや直コピーでも大丈夫でしょうか?
0651Dream ★
02/03/24 19:09ID:???はい。
原因不明の障害がでて、どっちが悪さしているのか
わからない状況になるよりは、一度きれいにして、
なんかトラブルがあったら誰が悪さしているのか、
わかる状況になっていないと困ると思います。
0652nobodyさん
02/03/27 14:44ID:???1.0.0から始まったとしてこの3桁はそれぞれどのような意味をもっていて
もしどこか1つが10になったら繰り上がるんでしょうか?
例えばバグの修正をしていて1.0.1〜1.0.9まできて
その次はどのように表記したらいいんでしょうか?
0653nobodyさん
02/03/27 14:55ID:???1.0.91とかわりと普通
0654nobodyさん
02/03/27 15:25ID:???1.0.9の次は1.0.10、みたいに単純に数が大きくなってくのをよく見る気がする。
0655nobodyさん
02/03/27 16:59ID:???・メジャーバージョン
・マイナーバージョン
・リリース番号
・ビルド番号
リリース番号、ビルド番号は省く場合も多い
それぞれ0以上の値をとる整数値
決まりはないけど伝統的なルールは色々あるね。
知りたきゃ検索すれ。
0656nobodyさん
02/03/27 18:04ID:???1.1.1になるの?それとも1.1.0にクリアされるとか・・?
完全にそう、っていうのじゃなくていいので
一般的にどうだとか、そんな感じに教えていただければありがたいのですが。
KENT WEBの場合はどんな感じなんでしょうか?
0657nobodyさん
02/03/27 19:53ID:???0658名無しさん@お腹いっぱい。
02/03/31 20:19ID:T8l4eNTu@ARGV から与えたファイルの中身を(行単位でなく)スカラー変数の
中に押し込んで文字列置換をしたいのですが、今までだと
while(<>){ $data = "$data$_" }
とやっていました。もっとスマートなやり方は無いでしょうか?
(きっとあるはず・・・)
0659nobodyさん
02/03/31 20:33ID:???0660名無しさん@お腹いっぱい。
02/03/31 20:44ID:???ヒントをありがとうございました。
$_=join '',<>; で逝けました。
0661nobodyさん
02/04/01 14:56ID:s5HvuRgHぐわーっ
"Comprehensive Java Archive Network"って有ったら欲しいな。マジで。
0662nobodyさん
02/04/02 08:00ID:RKDNLMgYワラタ
2日になったのに残ってる…と思ったらあちらさんはまだ1日か。
0663あぼーん
NGNG0664nobodyさん
02/04/05 03:45ID:4R486XR6Perlの話題はやっぱこっちかなと思ったので。
早速ですが、拡張正規表現の(?>パターン)の使い方が分かりません。
Perl5から実装されているはずなのですが、らくだ本にも載ってません。
少ない情報から使い方を判断するに、
m/(?>パターン1)パターン2/ だと、
パターン1にマッチしたもの以外でパターン2にマッチしたもの
のような感じだと思うのですが違いますか?
0665nobodyさん
02/04/05 08:13ID:???> 最短マッチを行う独立した部分正規表現です。このパターンにマッチした部分の
> 文字列は、(?>パターン)のあとのマッチ対象からは除去されます。これを利用
> すると、マッチしないパターンの識別が高速化されます。
0666664
02/04/05 09:46ID:Qaev8skvでも使い方まで載ってないんだなぁ。
0667nobodyさん
02/04/05 09:58ID:???削除するかもってことだから、使わないのが吉かと。
使い方はperlreを参照。
http://www.perldoc.com/perl5.6.1/pod/perlre.html#(-%3epattern)
0668nobodyさん
02/04/05 10:02ID:???0669nobodyさん
02/04/05 10:07ID:???ケコーン!
↑これが一発で変換できてしまうのが悲しい。
2ちゃんに書けば書くほどATOKがバカになっていく。
0670nobodyさん
02/04/06 01:51ID:XOUDqeQ1SendToにPerlスクリプトを入れてバッチ処理みたいなことを
させたりということはできないんですか?
0671nobodyさん
02/04/06 05:23ID:???実際にわたしはそれをやっていますが、できなかったの? 実際にやってみたの?
やったかどうかも書いてないが、ネタか?
0673nobodyさん
02/04/07 00:32ID:1v+8pn8Gちなみにwin2kなんだけど
関連付けても出来なかったんだけど?
0675673
02/04/07 00:35ID:???0677nobodyさん
02/04/07 00:38ID:???@hogehoge.pl %*
とか
@perl hogehoge.pl %*
でもいいけど。
hogehoge.plは見つけられるようにしてくれ。
自分もバッチファイルで対応してるけど、これが普通なの?
いちいちバッチファイル作るの面倒くさい。
9x系の時は、PIFファイルを置いてたけど。。。
>>675
フォルダやファイルを引数にして、スクリプトを実行
させる場合は、SendTo が便利。
0680nobodyさん
02/04/07 11:16ID:???たとえば、アクセス数をグラフ化したり、ここの
http://www.yakin.cc/
転送量のグラフみたいなものだけど、こういうのの生成って
やっぱしCかなんかで書いているのかなぁ?
このあたりをお聞かせ下さい。
0682nobodyさん
02/04/07 11:24ID:???重いけど、難があるほどじゃないから、まぁいいか、と。
さんくす。
perl\bin\pl2bat.bat だよね。
これって、Perlスクリプト自体をバッチファイルに埋め込んで
実行させるのか。何か強引だな。
>>677
やっぱり単純にperlスクリプトを呼び出すだけの一行バッチファイルを
SendToフォルダに置くのが一番シンプルなのか。。。
参考
http://www.kt.rim.or.jp/~kbk/perl5.005/perlwin32.html#item_Perl
http://www.harukaze.net/~mishima/perl/faq/perlwin32faq/perlwin32faq4j.html#What_s_the_equivalent_of_the_she
0684nobodyさん
02/04/08 02:45ID:???Win2000用らしいけど
http://www.vector.co.jp/soft/winnt/util/se230667.html
試してないからどんなやつかは知らんが
説明みるかぎりバッチファイル化の手間を省いてくれそうな感じだが
0686nobodyさん
02/04/10 09:49ID:???0687nobodyさん
02/04/10 10:11ID:qeJW7E0pえーー(;´Д`)
0690nobodyさん
02/04/16 02:22ID:???全て0にするには、
$var = 0 ;
@array = (
[ $var , $var , $var ] ,
[ $var , $var , $var ]
) ;
は分かるのですが、列数と行数を与えて初期化
するのはどのようにしたらいいのでしょうか?
$retsu = 5 ;
$gyou = 3 ;
$var = 0 ;
・・・ここから行き詰まってます。
ヒントでもお教え下さいませ。
0691注意
02/04/16 02:28ID:???0692やさしいお兄さん
02/04/16 02:41ID:???ネタでも敢えて...
$zero= 0; $col= 5; $row= 2;
$rec= [($zero) x $col];
push(@set, $rec) while ($row--);
0693_gunzip
02/04/16 02:43ID:???>>690ってネタなんですか?
ネタ(?)にマジレス格好悪いが...
>>690
-------
#!/usr/bin/perl
use strict;
my $row = 3;
my $col = 5;
my $init = 0; # 初期値
my @array = map { [ ($init) x $row ] } 0 .. $col;
--------
0694_gunzip
02/04/16 02:45ID:???0695やさしいお兄さん
02/04/16 02:49ID:???ほんとは
push(@set, [($zero) x $col]) while ($row--);
ってやらないと同じアドレスを参照するから気を付けて!
0696やさしいお兄さん
02/04/16 03:01ID:???row と col の意味が逆だし、0 .. $col だと1つ多いと言ったか言わないか
のうちに送信するテスト。
0697_gunzip
02/04/16 03:02ID:???訂正。
0699nobodyさん
02/04/16 03:22ID:???0700469
02/04/16 03:32ID:???0701nobodyさん
02/04/16 03:51ID:???落ち込むなって(w
0702nobodyさん
02/04/16 19:56ID:MZwt7T+rWin32::APIを使うことまでは分かったんだけど
実際にどうやったらいい?
0703nEtA
02/04/16 21:06ID:???0704702
02/04/16 21:51ID:MZwt7T+r↑使えるの?
0705nobodyさん
02/04/17 05:28ID:???そうなのかなぁ。ローカルのPerl5.005に入れなおしてみます。
>Threadモジュールは5.xxx用でv5.6.xでは使えないみたいです。
0706702
02/04/17 06:28ID:pOnMDwcjActivePerlの5.005(_03)にはThreadモジュール自体が入っていない。
ActivePerlの5.6.1ではThread.pmは入ってるみたいだけど、
>The Thread extension requires Perl to be built in a particular way to
>enable the older 5.005 threading model. Just to confuse matters, there
>is an alternate threading model known as "ithreads" that does NOT
>support this extension. If you are using a binary distribution such
>as ActivePerl that is built with ithreads support, this extension CANNOT
>be used.
って書いてある。
まったく、Threadくらい実装しろや>ActivePerl
0707702
02/04/17 06:42ID:pOnMDwcj>Perl/5.004_50あたりから対応が入ってるんですが
だそーです。
結局ActivePerlではThreadモジュールは使えないってことですな。
0708702
02/04/17 07:24ID:pOnMDwcj思っていたんだけど、今、ActivePerl-5.6.0(.611)を入れてみた。
するとThread使えるみたい。
なんかお騒がせしました。
0709702
02/04/17 10:47ID:???エラー表示が、変わったからできたかと思ったんだけど・・・
今は、全てのバージョンを当たって確かめてます。
もうsageで。
0710702
02/04/17 12:04ID:???Thread使えませんでした。(まったく何なんだよ)
というわけでWin32::APIを使った方法でしかスレッドプログラミングは
できないのではないでしょうか?
0711nobodyさん
02/04/17 15:01ID:???Threadは使えないよ。
perldoc perlthrtut
を見よ。
0712702
02/04/17 18:41ID:???もうThreadいいや。丸1日つぶしたわ。あほくせー。
0713nobodyさん
02/04/17 19:06ID:???0714702
02/04/17 19:59ID:???Windows2K+ActivePerl+Perl/Tkで
CSVからデータを読み込んで、メールを一括送信するツールを作ろうかと。
その時に、メールの送信ループ部分をバックグラウンドで動かさないと
固まってしまうんですよ。
あと、送信処理をマルチスレッドにしれば、同時に複数のメールを
送れるから処理時間が短く済むかなと思ったのです。
0716age
02/04/18 00:37ID:???マウスホイール聞かない。
0717_gunzip
02/04/18 00:50ID:???マウスホイールは使えるよ。
#!/usr/bin/perl -w
use Tk;
use strict;
my $mw = new MainWindow();
my $text = $mw->Scrolled("Text", -scrollbars => 'e',
-width => 30, -height => 20)->pack();
setup_mouse_wheel($text);
$text->insert('end', "Mouse Wheel Test -- line $_\n") for 1..300; # てすと
Tk::MainLoop();
sub setup_mouse_wheel #(Tk::Widget $widget)
{
my $widget = shift;
if ($^O eq 'MSWin32') { # 窓さんの場合
$widget->bind('<MouseWheel>' =>
[ sub { shift->yview('scroll', -(shift() / 120) * 3, 'units') }, Ev('D') ]
);
} else { # Xの場合、コレでいけると思う。たぶん
$widget->bind('<4>' => sub { shift->yview('scroll', -3, 'units'); });
$widget->bind('<5>' => sub { shift->yview('scroll', +3, 'units'); });
}
}
0718nobodyさん
02/04/18 00:53ID:???日本語入れる時にインライン変換が使えないのだが。。。
日本語化されていないから諦めるしかない?
0719_gunzip
02/04/18 02:07ID:???Progressbarウィジェットと、進捗情報を表示するLabelウィジェットを
載せたモーダルダイアログを出しておいて、適宜更新する方法では駄目だろうか?
それが面倒なら、
$mw->repeat(1000 => sub { $mw->update() } );
で1秒ごとに強制的に更新するとか。
外部コマンドを実行する際は、Tk::IOか、またはTk::Eventのfileeventメソッドを利用することで、
ディスクリプタへの入出力が可能になる/閉じられるまでブロックせずに待つことが出来るが、
そういう話ではない?(comp.lang.perl.tkでは、コレ関係の質問が一番多いと思うので...)
>>718
MS-Win版の場合は出来ないと思う。出来るようにする方法も知らないなぁ。
日本語化パッチを当てたX版では出来るはず。
0720nobodyさん
02/04/18 03:24ID:???ありがとう。。。素直に諦めます(涙
Perl2exe で GUI アプリを作ろうかなぁと色々試行錯誤していたのですが、
普通のGUIアプリレベルで作るのは難しそうですね。
ちょっと我慢すれば問題ない気もしますけど。
0722nobodyさん
02/04/19 23:12ID:???0723nobodyさん
02/04/20 11:40ID:M8cSsXMoβ版とかもまだなの?
0724nobodyさん
02/04/20 11:45ID:M8cSsXMo最高のGUI環境ってやっぱPerl/TKなんすかね?
もっと、Win32モジュールとか使ってVC++とかで使うような
GUIを使えないかな?
0726_gunzip
02/04/20 12:21ID:???Win32::GUIと、The GUI-Loftなんかどうですか?
http://www.bahnhof.se/~johanl/perl/Loft/
以下、個人的ぼやき
Perl/Tk ・・・ 結構使ってきたけど、なんか外見がダサイという人が周りに多い。
Gtk-Perl ・・・ 最近はこっち。Windows版なし。
本家Gtk+はWidnwosにポートされているから可能なのだろうが。
PerlQt ・・・ 使いやすくて好きだけれど、Perlバインディングは開発停止中みたい。
QtのWindows非商用版は2.3でとまってるなぁー。
wxPerl ・・・ Windows版では日本語表示できない
(NT系列ではunicode+unifontで出来るという噂を聞いたが真偽不明)
ボタン一つ利用するのに、いちいちサブクラス化するのは面倒か。
Win32::GUI, FLTK, FOX ・・・ 使ったことがない。
後二者は日本語表示を可能にするパッチが転がってました。
0728nobodyさん
02/04/20 14:46ID:???サンクス!
確かにPerl/Tkはダサい。ただ簡単に使えるのがいいけど。
Win32::GUIは前々から気になってたんだけど勉強がてら
使ってみます。
>>727
なるほど。
まあ調べてみたら5.8.0は今年の5月にリリースらしいから
待ってみます。
0729_gunzip
02/04/21 10:11ID:???....(以下略)
http://www.prima.eu.org/
スクリーンショット http://www.prima.eu.org/big-picture/
0730nobodyさん
02/04/21 13:49ID:???http://camelbones.sourceforge.net/index.html
0731nobodyさん
02/04/21 18:51ID:kERwwP8q0733_gunzip
02/04/21 20:04ID:???配色を変えてみたり($toplevel->setPalette())、ボーダーの値を変更してみたりってのは?
その際、いちいちコードの中にオプションの値を埋め込むのではなく、.Xdefaults
形式のファイルに纏めておいて、$toplevel->optionReadfile(filename, priority)
で読み込むと楽ちん。
0734nobodyさん
02/04/22 07:01ID:LmMZGpbzウインドウの左上に表示されるTkのアイコン(?)がダサいよね。
あれ他のアイコンに変えられないかな?
-------------
|TK
-------------
|
|
|
|
0735_gunzip
02/04/22 21:19ID:???my $image = $mw->Pixmap(-file => "title.xpm");
$mw->Icon(-image => $image);
# ないし、$mw->iconimage($image);
0736_gunzip
02/04/22 21:21ID:???でもよろし
0737nobodyさん
02/04/22 21:28ID:???0739nobodyさん
02/04/23 01:14ID:???0740nobodyさん
02/04/23 04:50ID:???0744nobodyさん
02/04/23 19:37ID:???0745nobodyさん
02/04/23 23:55ID:???http://pc.2ch.net/test/read.cgi/php/990178547/67
0747nobodyさん
02/04/24 07:44ID:ZzM1BfC2素人考えでは、アパッチにモジュールとして組み込んで使うと理解している
のですが、なんだかPHPはメジャーでmod_perlはマイナーな気がします。
何か決定的な違いみたいなのがあるのでしょうか?
0749nobodyさん
02/04/24 08:37ID:???だから
1) 一旦コンパイルしてメモリ上にロードされたモジュール類はApacheの子プロセスがexitするまでそのままメモリに残ってる
2) ApacheのAPIをPerlから使える
3) Apacheのフレームワーク内の随所にPerlで書いたハンドラーを組み込める
自分はPHP使いじゃないので知らないがPHPにも同様のものがあるのかも
しれん。でももし言語としてのPHPの話をしているのならそもそも比較自体がナンセンス。
0750nobodyさん
02/04/24 12:13ID:???0751nobodyさん
02/04/24 23:07ID:z19r++98作りたいのだが、サンプルないですか??
0755あぼーん
NGNG0756nobodyさん
02/04/25 13:27ID:vqNaBvlX「./Configure」の後の「make」でエラーになってしまいます。
エラーは最後の行にこんな感じで表示されてました。
make: *** [miniperl] エラー1
Linaxにさわって間もないので、よくわからないのですが、
何かしなければいけないのでしょうか?
0757nobodyさん
02/04/25 13:58ID:???まぁ、rpmにしたところで、apt-getにはかなわんな。
0758nobodyさん
02/04/25 19:17ID:???0759nobodyさん
02/04/26 03:29ID:???それだけじゃわからんので答えられないが、perl5.6.0はよしとけ。
コンパイルするんだったらちゃんとwww.perl.comから
perl5.6.1(stable.tar.gz)をひろってきなさいな。
0760756
02/04/26 07:26ID:xOSV8XDg一応、www.perl.comから落としたstable.tar.gzなんですよ。
しょうがないので、perl5.005_03.tar.gzにしたら大丈夫でした。
0761759
02/04/26 07:37ID:???ということはそれはperl5.6.1のはずだけど・・・ただの間違い?
できれば5.6.1のほうがいいよ。大分違うから。
次からはどこでこけたのかしっかり書き出すべし。
0762nobodyさん
02/04/28 03:22ID:W+plYXX70763nobodyさん
02/04/28 03:26ID:???0767ぺるにゃん
02/04/28 19:48ID:gfGqCBjT>foreachの計算量とか。
何のことですかにゃ???
そういえば、はるか昔、Perl 5.005 くらいか、
foreach (1..1000000)
とやったときに、巨大な配列を作らないようにしました。
という仕様変更を見ましたが、これってどういう仕組みなのかどなたかご存知ですか?
( ) の中を変数展開することなしに、foreach ループを実行するってことなのかなぁ。
そんなことができるんだったら、foreach (@big_array) も効率は悪くない。
そうではなくて、
「foreach ( 数字..数字 ) はよく使われる書法だから、この場合のみ最適化した」
というのであれば、foreach (@big_array) の効率が上がったわけではないのにゃ…。
0768nobodyさん
02/04/28 20:54ID:???昔はforeach(1..1000000)は内部的に
@array=(1..1000000);
foreach (@array)
って風に一回配列を作ってからforeachにかけてたんじゃないかな。
だからまず@arrayを作るのに時間がかかって、@arrayを評価するのにも時間がかかって…みたいな。
ちなみに
use Benchmark;
@array = 1..100000;
timethese(1000,{
'array'=> q{ foreach (@array) { $_ } },
'0..10'=> q{ foreach (1..100000) { $_ } },
});
Benchmark: timing 1000 iterations of 0..10,array...
0..10: 131 wallclock secs (131.49 usr + 0.00 sys = 131.49 CPU) @ 7.61/s (n=1000)
array: 152 wallclock secs (152.09 usr + 0.00 sys = 152.09 CPU) @ 6.58/s (n=1000)
うちだとこんな結果が出た。Win98 perl5.6.1 CPU466MHz
0769_gunzip@訂正歓迎
02/04/28 22:06ID:???>>767
>「foreach ( 数字..数字 ) はよく使われる書法だから、この場合のみ最適化した」
ちょっと追加しますが、'a' .. 'z' なども最適化の対象です。
>>768
>って風に一回配列を作ってからforeachにかけてたんじゃないかな。
>だからまず@arrayを作るのに時間がかかって、@arrayを評価するのにも時間がかかって…みたいな。
付け加えるなら、@array分メモリも食います。
>>768さんのベンチマークで前者の方が早いのは、for (1..100)型は
内部でループカウンタを再利用する最適化を行っているので、
毎回カウンタSVの生成破棄にかかる時間を節約することができるからでしょう。
(とはいえ、わずかな時間ですから気にする必要は全くありません)
0770768
02/04/28 22:51ID:???面白いなぁ。
0771nobodyさん
02/04/28 23:43ID:???0772nobodyさん
02/04/29 08:55ID:???0773nobodyさん
02/04/29 09:08ID:???0774nobodyさん
02/04/29 09:27ID:???`kill -KILL _gunzipのPID` if $user eq '_gunzip';
0775nobodyさん
02/04/29 13:27ID:5LS+M/nghaxa?
0776nobodyさん
02/04/29 14:09ID:???0777nobodyさん
02/04/29 14:12ID:NmdFgil6お前が消えるまでこのスレッドを荒らす
0779あぼーん
NGNG0780nobodyさん
02/04/29 14:43ID:???perl/tkで「何か」を作ることは出来る?
0781nobodyさん
02/04/29 16:10ID:D6ncuE9Tブラウザで言うところのTextAreaに長文の文章入れると文字化けしません?
文章コピーしてTextAreaに貼り付けた瞬間に文字化けします。
Linux+Perl5.005_03+Perl/Tk800.23+日本語パッチ、なんですけど。
↓ソースはこんな感じ。
$ta2=$mw->Scrolled(
"Text",
-scrollbars => 'se',
-height => 5,
-width => 35,
-wrap => 'none',
)->pack();
0782nobodyさん
02/04/29 17:08ID:???昔一瞬作ろうと思ったけどすぐ止めた。
変な形のWindowの作り方がわからなかったから。
まぁ、四角い箱の中で動くのならなんとかなるんじゃないか?
俺は作らないけど。
0783nobodyさん
02/04/29 20:03ID:NmdFgil6お前らには無理
0784nobodyさん
02/04/29 20:18ID:???ごくろうさま
0785nobodyさん
02/04/29 20:33ID:???http://www.geocities.co.jp/SiliconValley-PaloAlto/2514/
頑張れ。>780
0786782
02/04/29 21:27ID:???とりあえずブックマークした。ありがとー。
と言うわけで頑張れ>780
0787nobodyさん
02/04/29 21:43ID:NmdFgil60789702
02/05/02 03:49ID:bk99oFiJどうしても、Threadが使いたかったので、Linuxに、perl5.005_03を
5005threadでコンパイルしました。
LWPモジュールを使って、CSVファイルから読み込んだ複数のURLに
GETするということをやっているのですが、これをThreadを使って、
同時にやると「セグメントエラー」を起こしてしまいます。
実際にエラーが起きているのは、HTTPリクエストを送って、
サーバーからのレスポンスを待っている部分です。
#HTTPリクエスト
$ua=new LWP::UserAgent;
$ua->agent($user_agent);
$ua->timeout($timeout);
$req=new HTTP::Request('GET',$url);
↓ここから
$res=$ua->request($req);
if($res->is_error)
{
print("$url($floor) => エラー [$time]\n");
return(1);
}
$body=$res->content;
↑ここまで
0790702
02/05/02 03:53ID:bk99oFiJすれば回避できるのですが、それではThreadにした意味がありません。
何か対処法はないものでしょうか?
0791nobodyさん
02/05/02 04:02ID:???cygwin perlでfork()使うとか、Win32::Processじゃダメなの?
0792nobodyさん
02/05/02 04:23ID:Opu6NMoF0793702
02/05/02 04:46ID:bk99oFiJではなくて、サブルーチン単位で処理を並列化したいのです。
(うまく言えてるかな?)Win32::Threadみたいなモジュールないですかね?
あと、上記789の問題は、LWPモジュールが並列処理に対応した作り方に
なっていないのではないかと勝手に考えているのですが・・・
どうなんでしょうか?
0794nobodyさん
02/05/02 05:20ID:???0795nobodyさん
02/05/02 06:54ID:???0797nobodyさん
02/05/02 11:34ID:???違ってたらスマソ。
そもそもLWPってthread-safeだったっけ。
5.005でthreadオンにしてコンパイルすると、
$_が大域変数からレキシカルに変わるけど、その辺大丈夫?
あと、これは念のため聞くだけだけど、各スレッドごとにuaをひとつ作ってるよね。
0798702
02/05/02 18:06ID:???>スレッドの独立性または排他処理は万全?
排他処理なんですけど、よく分かってないと思います。
スレッド内でmy宣言した変数に関しては排他処理してません。
グローバル変数に関しては、排他処理をしています。
スレッド内から呼び出すサブルーチンは排他処理をしていません。
(そのサブルーチン内で使う変数は全てmy宣言しているからです。)
こんな感じでいいでしょうか?
>>797
>そもそもLWPってthread-safeだったっけ。
thread-safeで作ってないとアウトなわけですね。
>5.005でthreadオンにしてコンパイルすると、
>$_が大域変数からレキシカルに変わるけど、その辺大丈夫?
特に問題ないと思います。
>あと、これは念のため聞くだけだけど、各スレッドごとにuaをひとつ作ってるよね。
はい。
0799nobodyさん
02/05/03 10:14ID:6+RS1vf90801nobodyさん
02/05/03 10:48ID:6+RS1vf9必死だな(w
0803nobodyさん
02/05/03 10:53ID:6+RS1vf9お前がな。
0804nobodyさん
02/05/03 13:21ID:???お前、perlがあると現れるな。
どうせperlしかわかんねーんだろ。
しかもこういう無意味な荒らししか出来ないし。
……同情するよ。
0805nobodyさん
02/05/03 13:25ID:6+RS1vf9php no sure ni itte kimasu!
0806nobodyさん
02/05/03 13:29ID:6+RS1vf90808nobodyさん
02/05/03 13:49ID:6+RS1vf90809nobodyさん
02/05/03 13:59ID:???もうこねぇよ!
また来る。
0810nobodyさん
02/05/05 04:04ID:???0811nobodyさん
02/05/06 01:59ID:???0812nobodyさん
02/05/06 11:09ID:???かちゅ動作test
0814nobodyさん
02/05/06 18:32ID:???申し訳ない。
明らかにログ詰まり起こしてそうだったので、
以下のテストに使わせて貰いました。
2ちゃん専用ブラウザ「かちゅ〜しゃ」Part63
http://pc.2ch.net/test/read.cgi/software/1020404962/607
0815nobodyさん
02/05/07 21:20ID:PMyxHEA3[回答]
っていう文字列を含む
テキストファイルの文字コードを
eucからjisに変換したんですけど
”[回答]”の部分だけ変換されません。(前のコードのまま)
これってバグですかね?
0818[perl:3137]
02/05/07 22:31ID:???Perl Q&A MLととマルチポストかよ。最悪だな。
0819nobodyさん
02/05/07 22:45ID:???0820nobodyさん
02/05/07 23:36ID:???http://pc.2ch.net/test/read.cgi/hp/1016938825/256
0821nobodyさん
02/05/07 23:38ID:???0822nobodyさん
02/05/08 07:50ID:WRPrJe8Iなんとか通す方法ないですかね〜
0825nobodyさん
02/05/09 08:09ID:x/QZinB2CEのPerlではPerlIDEというスクリプト打ち込み&実行用のインターフェースが
あるんですが、これがSJISになってしまうみたいです。EUCのスクリプトを直接
Perlに関連付けて実行したら日本語とおりました!ありがとう!
0826nobodyさん
02/05/17 23:27ID:KFbMHMgY0827nobodyさん
02/05/18 10:43ID:???0828nobodyさん
02/05/19 09:48ID:0aeIvu6E0829nobodyさん
02/05/19 14:12ID:???0830Perlしさん
02/05/20 01:18ID:???0831nobodyさん
02/05/20 08:51ID:???リファレンスをファイル等に保存できるような形に変換する。
以下StorableのSYNOPSISよりコピペ
use Storable;
store \%table, 'file';
$hashref = retrieve('file');
use Storable qw(nstore store_fd nstore_fd freeze thaw dclone);
# Network order
nstore \%table, 'file';
$hashref = retrieve('file'); # There is NO nretrieve()
# Storing to and retrieving from an already opened file
store_fd \@array, \*STDOUT;
nstore_fd \%table, \*STDOUT;
$aryref = fd_retrieve(\*SOCKET);
$hashref = fd_retrieve(\*SOCKET);
# Serializing to memory
$serialized = freeze \%table;
%table_clone = %{ thaw($serialized) };
# Deep (recursive) cloning
$cloneref = dclone($ref);
# Advisory locking
use Storable qw(lock_store lock_nstore lock_retrieve)
lock_store \%table, 'file';
lock_nstore \%table, 'file';
$hashref = lock_retrieve('file');
0832nobodyさん
02/06/02 14:47ID:???http://search.cpan.org/search?dist=perl-5.8.0-RC1
個人的に心配なのはExtUtils::MM_Win95。
これ、バグがあんだよね。どうしたもんだろ。
0833nobodyさん
02/06/02 14:47ID:Jwd6tv1U08341
02/06/03 01:32ID:???0835lo
02/06/04 18:37ID:???08361
02/06/04 19:55ID:???0840nobodyさん
02/06/04 23:17ID:???お前みたいな偽善者とか、な。
うざいコテハンを全員追い出して殺ったんだから、少しは感謝しろ。
一年以上たってもPART2にも行かないスレが糞スレ以外の何なんだよ。え?言ってみろ(p
0841nobodyさん
02/06/04 23:19ID:???0842nobodyさん
02/06/04 23:23ID:???0844nobodyさん
02/06/05 13:00ID:???って元々使ってなかったからイイけど。
0845nobodyさん
02/06/05 17:36ID:???終了
----------------------------------------------------------------
0846nobodyさん
02/06/05 17:36ID:???終了
----------------------------------------------------------------
0847nobodyさん
02/06/05 22:00ID:???846 がウザ書き込みを行いました。
0848nobodyさん
02/06/08 23:38ID:???0849nobodyさん
02/06/09 16:18ID:???できないなら黙ってろ。
0851nobodyさん
02/06/09 17:16ID:???誰と混同しているのかは知らんが。
0852nobodyさん
02/06/10 07:57ID:???0853nobodyさん
02/06/15 14:19ID:???0854nobodyさん
02/06/15 14:29ID:AknjTxRC先程お願いしましたが、まだ削除されていません
事実無根です
早急に削除して下さい
http://kaba.2ch.net/test/read.cgi/company/997171282/699
215 名前:削除屋三太郎 ★ :01/10/20 12:09 ID:???
>>213-214
http://www.2ch.net/guide/adv.html#saku_guideに、
>法人・公的機関の取り扱い
>原則放置
> 法人・企業については、社会・出来事カテゴリ内では、批判・誹謗中傷、
>インターネット内で公開されている情報、インターネット外のデータソースが不明確なもの、は全て放置です。
とありますので、放置とさせていただきます。
260 : :01/10/23 10:54 ID:iMDesK4O
> 法人・企業については、社会・出来事カテゴリ内では、批判・誹謗中傷、
>インターネット内で公開されている情報、インターネット外のデータソースが不明確なもの、は全て放置です
おいおい、データソースが不明確だからこそ削除するんだろうが(苦笑
0855nobodyさん
02/07/05 00:17ID:???08561
02/07/05 23:31ID:St7kmpIx0857japh ◆J.5V8ta6
02/07/10 16:13ID:SqtQZzsyhttp://slashdot.jp/article.pl?sid=02/07/10/057238&mode=nested
寄付したいけど金がない…
0858nobodyさん
02/07/10 16:54ID:lBfYsgML例えば100ページのファイルの中に書かれている文字を探し出して
該当する箇所の全部を一気に変換したいんです
文字列aaaa→文字列bbb
perl入ってるし、サーバー起動してMS-DOSで
処理したいディレクトリに移動してから
perl -i.bak -e "s/aaaa/bbb/g" *.txtしてもできませんでした
漏れ使い方間違ってるでしょうか?
.cgi書き換えの場合は、
perl -i.bak -e "s/aaaa/bbb/g" *.cgi
ですよね?
それからそのディレクトリの下のサブディレクトリまで一気に変換するには
どうしたらよいでしょうか?
0859japh ◆J.5V8ta6
02/07/10 21:29ID:???-pスイッチが抜けてるのと、
command.com(多分cmd.exeも)はワイルドカードの解釈をしない為だね。
ワイルドカードの解釈は、適当なモジュール作って実行前にuseさせるようにすれば良し。
面倒ならコレ(使ったこと無いけど);
http://search.cpan.org/search?mode=module&query=AutoGlob
0860858
02/07/10 23:06ID:???レス有難うございます。
そうですか、他の場面でもワイルドカード解釈しなくて変だなぁと思っていたところありました。
勉強になりました。
0861 ◆LZJ2qcRk
02/07/18 13:38ID:DwV2l5uYBarkley_DBへのtieが出来なくなっちゃって困ってるんです。
use DB_File;
tie(%db,"DB_File","./filename",O_CREAT|O_RDWR,0666) | die;
で5.005_3で動いていたのが、5.6.1ではそのまんまdieしちゃってるんです。
perl -d使ってもtie出来ない理由がわからないんです。
どこチェックすればいいんでしょう。
0862861
02/07/18 13:39ID:???0863名無しさん@お腹いっぱい。
02/07/18 14:58ID:???の間違いじゃないの?
0864861
02/07/18 15:34ID:DwV2l5uYあ、そうです。そうなってます。
0865nobodyさん
02/07/18 15:38ID:???バージョンアップしたのはPerlだけ?
dbパッケージがアップグレードされちゃったりしてると
db_dump-1.85+db_load(名前はうろ覚え)とかでDBを作り直さないと
いけないよ。
0866nobodyさん
02/07/18 15:42ID:DwV2l5uYdbアップグレードしてしまった可能性あります。
いま使っているdbというか、dbのファイルがどのバージョンで作られたものか
調べる方法ないでしょうか。
いちおう現dbはdb2_dumpで出力可能でした。
0867j
02/07/18 16:07ID:24XEpTfj0868nobodyさん
02/07/18 16:11ID:???Linuxとかだったら file filename ででない?
これまたうろ覚えで申し訳ないのだけど。
でもdb2_dumpで読み込めるんだったらまず1.85あたりだと思うけど。
とりあえずdb_dump-1.85(だかなんだか)で読み込めるかどうか
やってみたら?
0869nobodyさん
02/07/18 16:27ID:DwV2l5uYHASH Version 5ってでました。
db2_dump old_file | db_load new_file
したら file new_fileはHASH Version 7って出たので
これでたぶんアップデートは出来たんだと思いますが
このnew_fileも読み込めませんでした。
ちなみにこのへんのファイルはどれをえらんでも
db_dump185 filename では
invalid argumentがでてしまいます。
0872nobodyさん
02/07/18 16:45ID:DwV2l5uYそれ(863)は確認済み、というか転記ミスだったので。
$!ってエラーの原因ですね。
いまdieで$!出力するように書き換えたら
Invalid Argument at dbmview.pl line 10
って出ました。dbm_dump185のinvalid argumentと似てますね。
この辺かな。
0873861
02/07/18 16:48ID:DwV2l5uYhttp://member.nifty.ne.jp/hippo2000/perltips/db_file.htm
にInvalid argumentについての説明がありました。
でもここから解決はまだ遠そうだな。
0874861
02/07/18 20:19ID:???こちらも解決してない。うみゅう。
0875861
02/07/18 21:06ID:???DB_File version 1.84の
tie(%db,"DB_File","test_db")で新規にDBを作ると、
file test_db の結果は
Berkeley DB 1.85 (Hash, version 2, native byte-order)となる。
DB_File version 1.65で同様にDBを作ると、
file test_DBの結果は
Verkeley DB(Hash, version 5, native byte-order)となる。
そんなわけで、version 1.84ではversion 1.65で作ったDBは読めない。
データベースのダウングレードかDB_Fileのダウングレードが必要なのか?
(なんでこうなるのかはまだ不明。)
0876861
02/07/19 00:09ID:???自分がCPANに頼り切りっていうのこと、あまりこの問題に深く関われないことを
考慮して、とりあえずperl5.005に戻しました。悔しいけどこれで問題解決。
こんど5.6にするときは、DB関係はテキストに書き出しておこう。
0877nobodyさん
02/07/19 10:00ID:???こんなこと出来ますか?
具体的には
$num = 10;
for ($i = 1 ; $i <= $num;$i++){
などとしてこの中で
$iの値に応じたスカラー変数
$hoge1 $hoge2‥とかが使えるようにしたいんだけど
どうしたらいいんでしょう?
0878nobodyさん
02/07/19 10:14ID:???@num
0879nobodyさん
02/07/19 10:20ID:???$num =10;
for ($i = 1 ; $i <= $num;$i++){
eval "\$hoge$i = $i";
print "$i\t";
print "${'hoge'.$i}\n";
}
おかげで出来たよ 神様ありがとう。
0882????????
02/07/20 23:25ID:SBT6j5SN0883nobodyたん
02/07/21 00:14ID:???気になるのはこの点だな。
- バイナリー非互換:
主に PerlIO の導入により、 Perl 5.8 は以前の Perl 5 XS モジュール
との互換性がありません。XSを含むモジュールに関しては、再コンパイル
の必要がある点に留意してください。もちろんスクリプトに関しては以前
の Perl 5 との互換性が保たれています(以下に挙げる例外を除く)。
で、いまのところこんな感じで入っている。
/usr/bin/perl = 5.005
/usr/local/bin = v5.6.1
/usr/local/perl5.8/bin/perl = v5.8.0
うーむ。
0884nobodyさん
02/07/21 00:15ID:???0885nobodyさん
02/07/21 08:13ID:???0887nobodyさん
02/07/21 08:36ID:???次スレは要らないな。
0889nobodyさん
02/07/21 09:05ID:???自作自演と決めつけるな妄想野郎
0891nobodyさん
02/07/21 09:09ID:???___
. |(・∀・)|
. | ̄ ̄ ̄ ジサクジエン共和国
△
△l |
__△|_.田 |△_____
|__|__門_|__|_____|_____
0892nobodyさん
02/07/21 09:12ID:???まあ、せいぜいのこのスレで馴れあってテクださい。
0894nobodyさん
02/07/21 09:19ID:???まさにお馬鹿の典型書き込みで終了ですか。
その程度が程度の高いことを何ひとつ書けない
オマエの言い訳なら初めから来るなよ。
0895nobodyさん
02/07/21 09:23ID:???分析結果。
無数 件の該当事例が見つかりました。
自分が不利になったため捨てぜりふを書き逃げ出す。
厨房の典型的な逃げパターンです。
0896nobodyさん
02/07/21 09:28ID:???なんつーか以前のメンバーは何処逝ったね?
0897nobodyさん
02/07/21 09:33ID:???2chでまともな話をしようとする方が馬鹿げてると思いますがね。
貴方にとって有益でも、周りの人間から見れば低レベルで下らないことでしかない時も多いですからね。
可哀想な人だ。
0904nobodyさん
02/07/25 07:03ID:???0905nobodyさん
02/07/26 11:51ID:JxVLPbo8XSを使用してperlとCとの構造体のデータのやりとりをしたいんですが。
例えば
C側定義構造体
typedef struct data{
char aa[20];
char bb[20];
int cc;
} DATA;
というものを定義して
samp::samp1(DATA *aaa)
で受け取りたいと。
typemap T_PTROBJ
でマッピングした場合、perl側のデータの記述は
どのように行えばいいんでしょうか?
@aaa = ("11","111".1,"22","222",2);
@aaa = (["11","111".1],["22","222",2]);
この二つはためしてみてだめだったわけですが
0906nobodyさん
02/07/26 11:52ID:???Perlでパケットの受信及びデータ解析を勉強しているんですが、
IPヘッダの中の ある1バイトの中に3ビットと5ビットの2つのデータが
入っていて、それをビット単位で分割する方法が分からないんです。
今のところ $OneByte という変数に
その1バイトのデータを格納しているのですが。。。
どなたかご存知の方がいらっしゃいましたらご指南お願いします。
0912nobodyさん
02/07/26 17:03ID:???君みたいな糞厨房は消えた方がいいよ。
なにを勘違いしているのかは知らないが。
俺は>905の意図することが分かりづらい、と言っている。
>samp::samp1(DATA *aaa) #これは何? CでもなしPerlでもなし。C++ならこう書けるが。
> typemap T_PTROBJ # 何をマッピングしたのか書いていない。
>@aaa = (["11","111".1],["22","222",2]); # これは何を意図しているのか。
#aaメンバに11,bbに111,ccに1が入って...ということなのか。これでうまくいくはずはないが。
0913nobodyさん
02/07/26 17:10ID:???0917906
02/07/26 21:07ID:???あ なるほど。。ビットをシフトさせるんですね
全然思いつきませんでした。。(汗
昨日からずっと悩んでいただけに凄く嬉しいです。
ありがとうございました。
この板には1年振りぐらいに来たんですが、
ログを見ていると以前よりも煽り、叩きがひどくなっていて
正直質問しようか迷ったんですが。。
まだまだ親切な方がいるんですね また来ます。
0918nobodyさん
02/07/26 22:22ID:X9MpLpMfええとちゃんと書きます。ただしXSソースになりますが
0919905
02/07/26 22:41ID:X9MpLpMf--------------------------
#include <stdio.h>
(中略)
typedef struct data{
char aa[20];
char bb[20];
int cc;
} DATA;
MODULE = samp PACKAGE = samp
void
samp1(aaa)
DATA *aaa
CODE:
while(0){
//構造体のデータ処理
}
----------[eof]-----------
typemap(データ型定義ファイル)
--------------------------
DATA *<tab>T_PTROBJ
----------[eof]-----------
ここまでがxsのソースと、perlとの受け渡しのデータ型定義です
0920905
02/07/26 22:41ID:X9MpLpMftest.pl
--------------------------
#/use/local/bin/perl
use samp;
#Cの(xsの)ソースに引き渡すデータを作成(仮に$aaa)
&samp1($aaa)
----------[eof]-----------
起動をかけるのはtest.plで、呼び出すのが、samp::samp1()になります。
要は、perlのソースから、Cにデータを渡して処理したいのですが、その
データを構造体で受け渡ししたいということです。そのときperl側でのデー
タの定義はどうすればよいか教えて欲しかったのです。
単に要素を配列に入れるだけでは、アンマッチが発生するようです。
"自分で"書かなきゃいけないんだよ。大変だけど、Perlはそこまでは面倒を見てはくれないよ。
とりあえずtypemapファイルの構文を勉強してください。
ExtUtilsディレクトリにあるデフォルトのtypemapも参考になるよ。
0923nobodyさん
02/07/27 08:18ID:klNDdAyCtelnetを使えないレンタルサーバで使いたいので、
同じフォルダに入れるだけで使える手軽な日付計算ライブラリないですかね?
0924nobodyさん
02/07/27 20:55ID:???ファイルのタイムスタンプを変更したいのですが、可能でしょうか?
5.7はビルド出来たんだけど…。やっぱり無理せずActivePerlを待とう。
>>924
可能か否か、という答えが欲しいの?そりゃ可能だけど。
でも多分知りたいのは可能か否か、じゃ無くてutime()関数のことだよね。
Perl初心者スレでは、スレ違いを指摘したんじゃなくて、
その質問の仕方が悪い、ということを指摘されたんだと思うよ。
0926924
02/07/28 01:20ID:???>その質問の仕方が悪い、ということを指摘されたんだと思うよ。
そのままの質問だったので、書かなくても解る事をだらだら書いてうざがられるよりは良いかと思ってました・・
ボキャブラリーが少なくて申し訳ないです。
0927
02/07/28 08:14ID:0sVNzuOfDigest::MD5 をインストールしないでできますか?
CGI で使おうと思っているのですが、同じディレクトリに
上記に付属の MD5.pm を置いて use MD5; とか記述
するだけではできませんよね?
rfc1321 の日本語版は読んでみたのですが、全然
わかりませんでした。
0928nobodyさん
02/07/28 10:16ID:???多分動く。がんがれ。
0930nobodyさん
02/07/30 23:42ID:ZOuiEpQs通常であればシェルで
edquota ユーザー名 (Enter)
でエディタが起動して
Disk quotas for user okada (uid xxx):
Filesystem blocks soft hard inodes soft hard
/dev/hdax xxx xxxx xxxx xx x x
上記のテンプレートを編集する事になるのですが、
これを Perl のスクリプトで変更することはできないのでしょうか?
exp) perl ./edquota.pl ユーザー名 blocks値 soft値 hard値 inodes値 soft値 hard値・・
Linux Slackware8.0
Perl5.6 を使用しております。
それでは宜しくお願いいたします。
0931nobodyさん
02/08/05 22:26ID:???なんてのがあるらしい。使ったことはないけど。
0932マルチです
02/08/09 23:54ID:yPKlUuWH↑人がいません
Perl6でのファイルの開き方がわかりません。
おしえて!
0933nobodyさん
02/08/10 01:37ID:???そんなドラスティックな変化は望んでないんだが・・・
@arry[0]
%hash{key}
う〜ん
0934nobodyさん
02/08/10 01:42ID:???どのRFCが新しいのか分からん
後方互換性頼りで良いじゃん
0935nobodyさん
02/08/10 01:49ID:???0936932
02/08/10 01:51ID:???自分がいまテストしてるPerl6はParrotにふくまれてたやつで
昨日からopen関数が実行できねーよ!みたいな。
0937nobodyさん
02/08/10 02:30ID:???世の中の人間はアンタの50年来の嫁じゃ無いんだから
言葉に乗せなきゃ何言いたいのか解らないよ
そんなに大変ならPERL6のMLに投げてみ
HELP PLZ!!!! ってさ
0939932
02/08/10 02:37ID:???これが俺には何を言ってるのかわからん
0941nobodyさん
02/08/10 04:02ID:SdI5yvJjopen FH,file;
でいいみたいだよ
がんばってね★ミ
0942nobodyさん
02/08/10 04:21ID:???ここguzipが居なくなって廃れたなあ
みんなPerl6入れてるの?
早くParrotでスピード上げて遊びたいな
0943932
02/08/10 04:45ID:???"arse error [line 2]: Invalid statement near "open FH,"my4.p6";
Can't call method "tree" on an undefined value at ./perl6 line 183.
============================================================
[my5ofile.p6]
sub main(){
open FH,"my4.p6";
print "ujgh\n";
}
0944_gunzip
02/08/10 05:21ID:???my $fh = open $path : mode => 'r' or die "Can't open";
とします。
parrot-latest(8/9現在)では、open関数は"not yet implmented"です。
0946nobodyさん
02/08/10 15:27ID:???死ねよお前
0947nobodyさん
02/08/10 15:30ID:???死ねよお前
0948nobodyさん
02/08/10 15:43ID:???死ねよお前
0949148
02/08/10 15:51ID:???0950nobodyさん
02/08/10 16:18ID:???常数(use constant)を別モジュールにまとめて利用しようとしたのですが、
呼び出し元ではその常数を使えますが、別に呼び出しているモジュールでは
strict subsに引っ掛かってしまいます。
no strict subsをするしか無いのでしょうか。
0951nobodyさん
02/08/10 16:21ID:???0952nobodyさん
02/08/10 16:27ID:???0953nobodyさん
02/08/10 22:43ID:M8XpcEtN>>951
スペース確保出来次第アップします。
今はまだアップロードできる場所ありません。
ちなみに常数モジュールでは、
package Hoge;
use strict;
use base qw(Exporter);
@Hoge::EXPORT = qw(
const1;
);
use constant const1 => 0;
1;
みたいにして、本スクリプトおよび、
そこから呼び出されるモジュールでuseして、双方で利用しています。
>>952
そのモジュールでもuseしているのですが・・・
0954nobodyさん
02/08/10 23:30ID:???何か勘違いしてる予感。
それだと多分no strict 'subs'しても期待する動作はしないでしょ。
ちなみにmainパッケージで定数を定義すれば常に"::"接頭子で参照できるよ。
普通は個別にimportした方がいいけどね。
package main;
use constant TRUE => 1;
package hoge;
print ::TRUE;
0956nobodyさん
02/08/12 18:48ID:???がいつの間にかリニューアルしてるのね
0957Dream ▼
02/08/15 06:25ID:???0959エロ助
02/08/15 11:30ID:h1WzO6+xhttp://www.kemokemo.com/products/picchabo/picchabo203.lzh
上(掲示板CGI)に下(ランダム広告CGI※呼び出しによりSSI使用しない方)を設置したいのですが『インターネットサーバーエラー』になります。(;_;)
一通りパーミッション設定などを説明どうりやってみたのですが設置できないんです。。(;_;)なぜでしょう??(;_;)
どうか教えていただけないでしょうか。。(;_;)
また呼び出しのときの記述が『require 'rand.pl'; rand::main($Op1,$Op2,$Op3);』を記述しろと書いてあったので正確に記述したのですが『インターネットサーバーエラー』になってしまうんです。。(;_;)
『$buffer』でも記述したんですがだめでした。
http://taihei.cc/pc/cgis/random.html
http://taihei.cc/pc/cgis/randban11.lzh
0960nobodyさん
02/08/15 11:34ID:???0961nobodyさん
02/08/15 14:35ID:oToZdaAw全然ファイルが落ちてこない
0962nobodyさん
02/08/16 12:47ID:???適切なミラーを使うべし。
http://www.cpan.org/SITES.html
0963nobodyさん
02/08/16 18:12ID:yy/Fieutmy ($To,$Sub,$Name,$Value) = @_;
my $FromMailAddr = 'test@test.com';
my $msg;
my $smtp;
if ($MailServerActive){
$smtp = Net::SMTP->new('192.168.2.2');
if (!$smtp){
$msg = "SMTPサーバ[$Server]との接続に失敗しました\n";
$msg = jcode($msg)->sjis;print $msg;exit;
}
$Sub = jcode($Sub)->mime_encode;
$Name = jcode($Name)->mime_encode;
$Value = jcode($Value)->jis;
$smtp->mail($FromMailAddr);
$smtp->to("$To");
$smtp->data();
$smtp->datasend("Content-Transfer-Encoding: 7bit\n");
$smtp->datasend("Content-Type: text/plain; charset=\"iso-2022-jp\"\n");
$smtp->datasend("From:\"$Name\"\n");
$smtp->datasend("To:$To\n");
$smtp->datasend("Subject:$Sub\n");
$smtp->datasend("\n");
$smtp->datasend("$Value\n");
$smtp->dataend();
$smtp->quit;
return 1;
}
return 0;
このようにしてるのになぜかjphoneのメアドで受信したときのみ
タイトルが "=?ISO-2022-JP?Bッテ感じに文字化けします・・・・ナゼでしょう?
0964nobodyさん
02/08/17 13:27ID:???0968967
02/08/19 00:23ID:???こっちでどうぞ
http://pc.2ch.net/test/read.cgi/php/1024741312/
http://hiero_pl.tripod.co.jp/
0971mad-p ◆FaOqqhYM
02/08/20 01:15ID:???Linux Conferenceかjus勉強会でParrotについて講義してください。
おながいします。
0973nobodyさん
02/08/20 01:30ID:???print 'HIT' if vec($a,4,1);
でHITと表示されるのはPerlでは普通なのですか?
0974nobodyさん
02/08/20 05:55ID:???ネタ?それともvecのマニュアルも読めない馬鹿?
0975nobodyさん
02/08/20 08:01ID:5HfNqmVJ例えば
$a = { b => { c => { d=> { e => "f" } } } };
で、
$b = $a->{b}; $c = $a->{b}{c}{d}; とあって、
&rel($b,$c) で "{c}{d}" とか返してくれるような(表記方法は何でもいいんだけど)
0978nobodyさん
02/08/20 12:04ID:???0979mad-p ◆FaOqqhYM
02/08/21 00:10ID:???ガクーリだよ。
しかし、Parrotを実際にコンパイルしてる人に
例会でも会ったことないので、正直どんな感じか教えてホスイ。
>>936
図星です。すんまそん。
おいらは勉強会とかでえらそうなこと言ってるけど、
ApoとExe(とRFCとperl6-language)あたりから知識得てるだけなんで。
0980nobodyさん
02/08/21 00:22ID:???オープントリップって言うのは適当に考えたもんだから気にしないでいい
cygwinがありゃコンパイルはできるはずなんだがなぁ〜。
==perl初心者コ−ナーpart14のメモ
*.p6 //perl6 のコード ->parrot/languages/perl6/perl6[perlスクリプト] 使用
*.colac //C#っぽい ->parrot/languages/cola/colacc.exe 使用
*.imc //.,,pasmとなにが違うの? ->parrot/languages/imcc/imcc.exe 使用
*.pasm //、、、アセンブラ? ->parrot/assemble.pl 使用
*.pbc //perl byte Code ->parrot/parrot.exe 使用
0981メモ
02/08/21 00:25ID:???./colacc.exe kusokote.colac =>a.imc
./imcc.exe a.imc =>a.pasm
./assemble.pl a.pasm => a.pbc
./parrot.exe a.pbc [実行]
[perl6 の流れ]
./perl6 test.p6 ->test.imc test.pasm test.pbc 生成 ->test.pbc [実行]
*assemble.pl自体はXSとかつかったPerlスクリプトでないのでActivePerlでも実行できた(はず)
perl6もActivePerlで動きそうだけどまぁ試したときは動かんかった。
(コンパイルしたオブジェクトコード参照してる?)
まぁassemble.plが動けばparrot.exeを試すことぐらいはできるはず。
0982nobodyさん
02/08/21 00:48ID:???ホント、ゴキブリみたいだな(大爆笑)
0983nobodyさん
02/08/21 02:18ID:oahOU1tj暗号化(ぱっと見無意味な文字の羅列に見える程度でOK)して、
別のサーバーで復号化するようなスクリプトってかけますかねぇ?
できれば、日時かなにかを暗号キーにして、1時間程度時間が経過すると
その文字列が無効になるような感じがよいのですが・・・
時間はntpdである程度シンクロしていて、多少のずれているときはあきらめるとして。
0984nobodyさん
02/08/22 14:05ID:ZyNFWurgtr/a-zA-Z/Za-zA-Y/ とかやって、1時間毎に Za-zA-Y 部分ずらす、とか。
そのオフセット・有効時間ともに保存しておく、とか。
0986983
02/08/23 00:12ID:???でも、ずらすのって、
%word(00,"Za-zA-Y"
,01,"YZa-zA-X"
,02,"X-Za-zA-W"
,03,"W-Za-zA-V"
,04,"V-Za-zA-U");
tr/a-zA-Z/$word{$time}/;
こんな感じですかね、、24パターンくらいなら大丈夫かな?
0987mad-p ◆FaOqqhYM
02/08/23 13:36ID:DBSoD3F/tr///の変換リストには変数展開が使えないので、eval使ってね。
0988名無しさん@Meadow
02/08/23 14:15ID:???Crypt::OTP
レス数が950を超えています。1000を超えると書き込みができなくなります。