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

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

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

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

#CGI関連の話題は、なるべく専用スレッドで。
0060rubbish_lister2001/06/20(水) 02:16ID:???
overloadを使えばstatic変数であるかのように振舞う変数を作成できるような気がする。
無理かな?
0061名無しさん@お腹いっぱい。2001/06/20(水) 02:32ID:???
まずはやってみせることだ。
0062rubbish_lister2001/06/20(水) 02:51ID:???
楽なtieにしてしまった。

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_lister2001/06/20(水) 02:52ID:???
ある一定の条件の下でstaticに見える変数を宣言可能。

#!/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_lister2001/06/20(水) 17:18ID:???
# static.pm
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:???
>>62-64
なるほど。出現行数で変数を識別するのかー。
面白いっす。これってオリジナルのアイデア?
0066rubbish_lister2001/06/20(水) 21:06ID:???
オリジナルです。
>>62は思いついてすぐ作ったのでイマイチかな。
>>63は低速である事を覗けば実用化可能かな?
行番号で識別しているので"#line"などで行番号をいじると妙なことになりますが。

lvalueとtieを使うといろいろ遊べて楽しいですね。
0067_gunzip2001/06/21(木) 22:44ID:???
>>51
http://dev.perl.org/rfc/22.html
組み込みswitch-case文も導入(たぶん)ですね。
......とにかくC,C++,Javaみたいな"fall-through"がデフォルトでは無いようなので一安心。
# C# ではbreak,goto必須だし。
0068名無しさん@お腹いっぱい。2001/06/22(金) 06:21ID:???
print文の成功した場合の戻り値1って数値1?文字列"1"?
0069_gunzip2001/06/22(金) 06:45ID:???
>>68
Perlのbool値はPL_sv_yes, PL_sv_noで表される。
/* perlvars.h */
PERLVARIC(GYes, char *, "1")
PERLVARIC(GNo, char *, "")

文字列リテラルさね。
0070名無しさん@お腹いっぱい。2001/06/22(金) 21:10ID:???
>>56

perldoc -q static
0071名無しさん@お腹いっぱい。2001/06/25(月) 17:13ID:???
Perlの資格試験ってある?
0072名無しさん@お腹いっぱい。2001/06/25(月) 18:06ID:..juuP4w
無いんじゃないかなヽ(´ー`)ノ
0073名無しさん@お腹いっぱい。2001/06/25(月) 23:28ID:???
>>71-72
と、いうことは。。。
いまPerlの資格試験を新設したら受験料で大儲けかも?
いや、家元制度+段位制でもいいな。
Perl3級とか、Perl初段とかの免状を発行して大儲け。
0074名無しさん@お腹いっぱい。2001/06/26(火) 00:11ID:???
>>73
なんで世界規模のものを日本規模の制度にするんだよ(w

つーかネタか。
0075名無しさん@お腹いっぱい。2001/06/26(火) 00:13ID:???
黒帯きぼーん(藁
0076名無しさん@お腹いっぱい。2001/06/27(水) 16:13ID:Mv0nn73w
>>1にも書いてあるInline.pmがプログラム技術板で話題になってるよ。
http://piza.2ch.net/test/read.cgi?bbs=tech&key=991994996&st=161

あっちの板の人は基本的にマルチリンガルだから、こういうの大好きなんだねえ。
おれとしては・・・面白そうだけど使わない、つーか使うテクがないなあ。
0077名無しさん@お腹いっぱい。2001/06/27(水) 19:14ID:???
マルチリンガルって.....というかPerl一筋の人間は
殆んどいないと思うが...
0078名無しさん@お腹いっぱい。2001/06/27(水) 19:51ID:???
みんなどんな言語使ってる?
0079名無しさん@お腹いっぱい。2001/06/27(水) 22:18ID:???
C,C++,Perlとか。アマチュアよん。
0080rubbish_lister2001/06/27(水) 23:54ID:???
Perlしか知らないPerl厨房でーすヽ(´ー`)ノ
0081名無しさん@お腹いっぱい。2001/06/28(木) 00:23ID:???
Perlの他には、VC++(MFC)を少々たしなむ程度。STLってなに?
0082名無しさん@お腹いっぱい。2001/06/28(木) 12:17ID:???
>>81
STLはPerl使いにはうれしい機能(連想配列モドキとか)がいろいろついてるのでぜひ覚えておくことをお勧めする。
0083_gunzip2001/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用ゲームプログラム。
0085S2001/06/28(木) 18:18ID:???
C++ … 厨房
C … 消防
Prolog … 園児

って感じです。
0086名無しさん@お腹いっぱい。2001/06/28(木) 20:34ID:???
>>54
っていうかこの条件って誰か別の人が作ったゲームのヤツだ…
俺が見たやつはクリアするとアレなイベントが起きるっていうヤツだったけど。

#アレって何よってのは察してくれ…

…パクリ?
0087名無しさん@お腹いっぱい。2001/06/28(木) 22:00ID:DSCSsXU2
>>73
某所で長らく話題にのぼりながら、一向に実現されないやつだな。
本因坊は決まっているのになあ。
0088名無しさん@お腹いっぱい。2001/06/28(木) 22:05ID:???
某所?
0089名無しさん@お腹いっぱい。2001/06/28(木) 22:06ID:DSCSsXU2
>>86
え、そんな新しいものだったのか。
土人と宣教師みたいなトラディショナルなやつかと思ってたよ。

プログラミングの教科書にのってるわけじゃないの?
0090_gunzip2001/06/28(木) 22:09ID:???
光栄の大航海時代4に出てきたな・・・
提督 + 副官 + 謎の老人 + その友人 の4人バージョン

もしかしてそれのこと?
0091名無しさん@お腹いっぱい。2001/06/28(木) 22:10ID:???
>>89
|母がいないと父は娘に手を出す
|父がいないと母は息子に手を出す
|執事がいないと犬は家族を食い殺す
こんな問題のってる教科書があるかよ!
0092名無しさん@お腹いっぱい。2001/06/28(木) 22:50ID:???
>>91
いや、おいらが最初に見たやつは、砂漠を行く話で、
「父」:=「王」
「母」:=「女王」
「息子」:=「皇子」
「娘」:=「皇女」
「執事」:=「猛獣使い」
「犬」:=「猛獣」
「手を出す」:=「殺す」
だった。

王位継承問題がこじれて……ってな設定をすれば、
十分教科書に出せると思うが。

ちょっとsearch spaceとかprologとか
missionaries and cannibalsとかで
サーチしてみたけど出てこなかったなあ。
0093名無しさん@お腹いっぱい。2001/06/29(金) 02:28ID:???
>>92
中学校の数学サイトで発見!
http://www.edu-c.pref.kumamoto.jp/ws/kcmathws/zibunde/kawa2/kawa2.html
その「アレなイベントが起きる」とかいう問題を
中学教師がパクって無難な設定に変えた可能性も高いが。
0094名無しさん@お腹いっぱい。2001/06/29(金) 12:11ID:???
>>89
いや、大元のネタはその辺りだと思うんだが。
手を出す食い殺すってのは、半年以上前(多分)に既に使われてるネタだってことだ。

#つーかすれ違いスマソ
0095名無しさん@お腹いっぱい。2001/06/29(金) 15:40ID:???
「トラやライオンが船をこぐ」設定→うそくせー
「手を出す食い殺す」設定→あるあるー
と思ってしまう俺はなにかに毒されているでしょうか。
0096名無しさん@お腹いっぱい。2001/07/02(月) 17:48ID:cRPRYcUw
Perl6について語ろう!
0097なな2001/07/02(月) 20:18ID:???
日本語の「〜なら○○」を正規表現しようと書き始めたら泥沼だった。

/(だった|で((御座|ござ)(い|居)ま)?した|であ(っ|りまし)た)(な)?ら(ば)?
|であれば|(である)?なら(ば)?/

…氏にそう。おれに日本語を教えてくれ。いやマジで。
0098Name_Not_Found2001/07/02(月) 20:54ID:???
>>97
ワラタ
0099名無しさん@お腹いっぱい。2001/07/02(月) 21:17ID:???
http://www.kabeya.net/linklink/navi.cgi?links=23
無修正です。
0100_gunzip2001/07/03(火) 01:08ID:???
http://www.perl.com/
デザインが変わったね。
0101名無しさん@お腹いっぱい。2001/07/03(火) 12:24ID:fLxGSuZs
>>100
use Perl;でも話題になってた。
Perlのメインサイトがオライリーっぽくなりすぎで興ざめだってさ。
0102rubbish_lister2001/07/03(火) 17:26ID:???
そういえばPerl6では文字列連結演算子はどうなるんでしょ。
矢印演算子?まさかね…。
0103名無しさん@お腹いっぱい。2001/07/03(火) 21:19ID:fLxGSuZs
>>102
ああ、それ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:???
>>103 最初から素直に "+" にしとけば問題なかったものを…。
"100" + "100" が 200 になるっつうのがそもそもの間違い。
0105rubbish_lister2001/07/04(水) 16:20ID:???
>>103
"~" ですか…。
$str = $str ~ $str; $str ~= $str;
うーん…なにか間違っているような気が(汗

素直に参照/メソッド起動はアロー演算子、文字列結合はドット演算子としておけばいいのに。
0106名無しさん@お腹いっぱい。2001/07/04(水) 20:52ID:dDBXzh2.
>>104
文字列連結と数値的加算という、意味も動作もまったく違うものに
同じ演算子を使うのは混乱の元だと思う。

演算子オーバーロードに関してはLarryが
 数学記号は数学的意味を表わす場合のみにしましょうね
という指針を示している。「+」を使っていいのは複素数とか行列みたいな、
交換法則と結合法則を満たすもののみに限定されるべきという話。

確かに文字列の連結って可換じゃないし、
逆演算を「-」で無理矢理定義してもピンと来ない。

文字列の連結に「+」を使うというのを最初に考えついた人って誰?
その人が素直じゃなかったんだと思う。Smalltalkのころ?
「末尾への連結」に「<<」を使うことを考えついた人もえらい。
常人の発想ではない。狂っている。

ストリームへの出力と配列へのpushを、
「末尾への連結と見れば同じ」と考えてかどうか知らないが、
「<<」という同じ記号っていうのも発想がすごい。
「>>」はきっとその逆演算なのだろうと予想できるが、
popなのかunshiftなのか、はたしてどっち?

Perl6のswitch文(仮名)もこの話と同類の気狂い仕様な気がするな。
これがRubyだと「メソッド===で比較」って言い方になって、
polymorphismというカプセルに入った結果、
同じ気狂い仕様なのに美しく見えるのは不思議だ。
0107名無しさん@お腹いっぱい。2001/07/04(水) 22:11ID:???
    うぐぅ〜!意味わかんないよぉ〜!
   \____          ____/
               ̄ ̄ ̄∨ ̄ ̄ ̄
            〃┏━━ 、
            |  ノノソハ)))
       (\リリ;´Д⊂#ヽ
       (ニ⊂[#~~'∞"_ノ
         /__∞_|
          し'(_f)
0108Perl好き2001/07/04(水) 22:54ID:???
Perl6、なんかすげえ嫌なものになりそう。
今までRuby信者に汚いと罵られようと、感覚的にとても解りやすい言語だと思ってたが、
アロー廃止、$@%の意味変更は滅茶苦茶な愚行だ。

でももう決定事項なんだろうな。ああ鬱。
マジでRubyに移ろうかしら。
0109名無しさん@お腹いっぱい。2001/07/05(木) 02:33ID:NIXF4Exg
Perl6っていつリリースなんですか?
0110名無しさん@お腹いっぱい。2001/07/05(木) 03:07ID:f2quMIhg
>>109
予想では再来年のPerl Conference合わせくらいじゃなかったっけ。
0111名無しさん@お腹いっぱい。2001/07/05(木) 06:48ID:j7I9hWXA
>>108
全くもって同感
0112shige2001/07/05(木) 11:19ID:???
Ruby最高!
イエイ!
01131062001/07/05(木) 15:25ID:???
Rubyはねえ、加算と文字列連結の他に、
配列の連結にも「+」を使うからねえ……。
そういえばCでもポインタの加算という意味のまったく
違う仕事を「+」と書いていたなあ。

「Perlは様々な組込関数のデフォルト挙動を、
たくさん覚えないと使えないからイヤ」って意見をよく聞くけど、
「OO言語は一見同じ記号でもクラスによって全然違う動作をするんで、
たくさん覚えないと使えないからイヤ」とはあまり聞かないね。
むしろ「全然違う動作でも意識せず同じ記号で使える」とか利点として
紹介されている。

でもRubyの言語仕様書とか見てると、
OO言語って演算子オーバーロードなしには、
言語仕様も定義できないのかな、と思ってしまう。

JavaはC++の反省からか演算子オーバーロードできないけど、
結果としてなにがしかの利便性は失われているみたいだ。

Perl6になるとARRAYの「+」は連結になったりするのかなあ。
Larryが防波堤になってくれると信じてるんだけど。

OOスレ逝った方がいいな。スレ違いスマソ。
0114名無しさん@お腹いっぱい。2001/07/05(木) 15:27ID:???
>>108
ま、Perl6でもPerl5のコードが走るはずだし、それに期待するしか。
0115名無しさん@お腹いっぱい。2001/07/05(木) 16:32ID:???
なんか暗くなったね。
0116名無しさん@お腹いっぱい。2001/07/05(木) 18:07ID:???
確かにマンセーマンセーと騒ぐ気にはなれない…。
うーん……
0117名無しさん@お腹いっぱい。2001/07/06(金) 05:20ID:dr/SZh9U
気分転換にPerl/Tk2chブラウザでも応援するか。

http://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:???
ActivePerl v5.6.1.628
なにがかわったん?
0123名無しさん@お腹いっぱい。2001/07/09(月) 02:53ID:???
>>122
知らん。
俺も知りたいYO!
0124名無しさん@お腹いっぱい。2001/07/09(月) 10:27ID:???
perl6はやくでないかなー
0125名無しさん@お腹いっぱい。2001/07/09(月) 11:06ID:nTmH2gQU
5.7.2ってもう出たっけ?
試してみた人いる?
0126名無しさん@お腹いっぱい。2001/07/15(日) 22:57ID:3qwmQFts
age
0127名無しさん@お腹いっぱい。2001/07/16(月) 01:33ID:OyRSiVOs
>>125
でてるよー。
http://search.cpan.org/search?dist=perl-5.7.2

僕はあえてdevelに挑戦するつもりないけど...。
0128_gunzip2001/07/16(月) 21:00ID:???
Perl5.7.2、コンパイルしてXSデバッグ用ディレクトリに
入れてみたけれど、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
0130_gunzip2001/07/17(火) 05:56ID:???
>>129
何故だろう?ちょっと調べてみる。
0131_gunzip2001/07/17(火) 06:47ID:???
>>129
ふぅ。オプティマイザの副作用の気がするなあ。

Perlが与えられたスクリプトを実行する際、コンパイルと実行段階の間に
オプティマイズという段階があって、定数値の埋め込み、
余計なシンボルテーブル検索の削除等を行うことになっている。

例えば、
print 4 + 5;
は、始めのOPコードへのコンパイルの段階で
「4(const)と5(const)をスタックにプッシュ、次にスタックから二つ値を取り出し、
それらを加算(add)、その値をprintで標準出力に出力せよ」
というコードが生成されるのわけだけれど、
Perlのオプティマイザは4と5が数値定数であるから、これらを予め計算して
「9をprintで標準出力に出力せよ」
というコードに修正する。(Perlのオプティマイザの働きについては
他にも色々とあるので、詳しく知りたければop.cのpeep()でも眺めてくれ)
0132_gunzip2001/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:???
_gunzipたん萌え
0134名無しさん@お腹いっぱい。2001/07/17(火) 07:34ID:???
>>_gunzip
あなたマジすげえ。
01351292001/07/17(火) 14:56ID:???
なるほど!
コンパイル時に実行される計算だったわけですか。
確かに-cスイッチの元で実行しても"終了済み"と印字されました。

しかし、"*out = sub(){...}"を"sub out(){...}"に変更すると
そのような置き換えは発生しないのですが、これは何故なんでしょうか。
お手数かけますが、教えてください。


>>133-134
激しく同意っす。
0136_gunzip2001/07/17(火) 17:43ID:???
>>135
>しかし、"*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_gunzip2001/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がそう)スカラー値でなくてはならない。
01381292001/07/17(火) 18:16ID:???
あれ?
ぬぬ、>>137のつもりでしたが確かに>>137ならOKでした。
勘違いだったらしいです。スミマセソ。
0139名無しさん@お腹いっぱい。2001/07/18(水) 07:51ID:???
お、今search.cpan.orgをみるとTie::Staticなるモジュールが。
基本的な考え方は>>64と変わらないものの、
IDに安全な値を使っているのでTie::Staticの方がマトモか…。
しかし見ていて飽きないですね、CPAN。
0140_gunzip2001/07/18(水) 23:41ID:???
日本人でCPAN登録者って居るのかな....?
(Jcode.pm以外見たことがない)
0141名無しさん@お腹いっぱい。2001/07/18(水) 23:49ID:???
perl に付いては凄いがメール欄は凄くない(・∀・)
0142名無しさん@お腹いっぱい。2001/07/18(水) 23:58ID:???
>>140
CGIメーリングリストの人に何人かいなかった?
0143名無しさん@お腹いっぱい。2001/07/19(木) 00:00ID:???
SpreadSheet::ParseExcelも日本人
0144名無しさん@お腹いっぱい。2001/07/19(木) 00:01ID:???
>>140
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って何処が違うんでしょ。
付加分散の為?
0146JAPU2001/07/19(木) 00:30ID:???
こんなのもあるぞ。
http://search.cpan.org/search?dist=Roman
0147_gunzip2001/07/19(木) 05:57ID:???
>>142 いや、 CGIメーリングリストには入っていないので....。
>>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:???
Cの構造体みたいな書き方で
$s = new A();
$s->foo = "hoge";
$s->bar *= 50;
(foo, barはメンバ)
みたいな書き方は出来ますか?
トリッキーなのでもイイです。
0149_gunzip2001/07/19(木) 06:47ID:???
>>148
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:???
http://hp.vector.co.jp/authors/VA017578/software.html
ここのShellExtCtrlってソフト
結構使いやすい
Windowsで.plファイルが.batみたいに使えるようになる
0151名無しさん@お腹いっぱい。2001/07/19(木) 10:32ID:mCZ55RKw
>> 150

ActivePerl付属の pl2bat じゃだめなの?
ドロップすれば @ARGVにファイル名が入るのは一緒だし。
0152名無しさん@お腹いっぱい。2001/07/19(木) 19:00ID:???
pl2batよりはSOSを奨励したい。
パイプ繋がるから。
01531482001/07/19(木) 23:16ID:???
>>149
Thanks!
0154わ、2001/07/20(金) 03:51ID:O.8zSDuM
sa
0155名無しさん@お腹いっぱい。2001/07/20(金) 06:56ID:C8dQMlbs
こんな質問、いいのかな・・・。

最近perlを憶えたのですが、自分で色々課題を出して解こうとしています。
しかし記念すべき第一号の課題から躓いてしまっています・・・。

あるディレクトリ内にファイル名に全く統一性のないファイルが複数あるとします。
そのファイルのどれだか分からない一部のファイル群に『HOGEHOGE』という文字
があり、それを『FUGAFUGA』という文字に変更するにはどうすれば良いのでしょう
?HOGEHOGEという文字は一つのファイルに一度しか出てきません。

スクリプトを作ろうとしたのですがうまく行かず、結局ここの方に頼ることに・・・。
また、この作業をperlを使ってコマンドラインから実行する方法も是非。
0156名無しさん@お腹いっぱい。2001/07/20(金) 07:39ID:???
>>155
どちらかと言うとPerl初心者コーナーの方が適当だと思いますが。

とりあえずヒントだけ。
rename($oldfile => $newfile); # 名前変更
use IO::Dir;
@files = IO::Dir->new($dir)->read; # ディレクトリ$dirにあるファイル名全てを得る
0157名無しさん@お腹いっぱい。2001/07/20(金) 12:26ID:???
perl -e"for(<*HOGEHOGE*>) {$old=$_;s/HOGEHOGE/FUGAFUGA/;rename($old,$_);}"

カレントディレクトリ(サブディレクトリは除外)限定の場合
01581552001/07/20(金) 18:30ID:69JZH5Is
>>156
>>157
すみません。訊き方方が悪かったです。
HOGEHOGEはファイル名ではなく、ファイルの中に書いてある内容です。
0159名無しさん@お腹いっぱい。2001/07/20(金) 20:27ID:???
>>155
まずうまく逝かなかったスクリプトを上げるべきだと思うのだが、
いかがかな?

それが無いようであれば、「教えて君」と見なし、以後放置するよ。
01601552001/07/20(金) 23:36ID:8VNGZ9tA
ごめんなさい。
【Perl 】初心者コーナーPart5に移動しました。
■ このスレッドは過去ログ倉庫に格納されています