【モダン推奨】Perlについての質問箱 50箱目

■ このスレッドは過去ログ倉庫に格納されています
2012/01/21(土) 10:56:39.03
CGI についての質問は板違いです。WEB プログラミング板でどうぞ。
CGI と Perl の区別がつかない人も WEB プログラミング板に行ってください。
(WEB プログラミング板: http://hibari.2ch.net/php/ )

回答する際はモダンな方法でお願いします
(例 jcode.plではなくEncodeモジュールを使った方法)
理由はもう2012年です。いい加減2000年以前の方法はやめましょう。
最新のPerlを使うほうがかっこいいです。
いつまで勉強しないつもりですか?
過去にとらわれるのはもうやめです。進歩しませんよ。

このスレでは(CGI 以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
スレ違いの質問にはスルーか、速やかな誘導をお願いします。

"The duct tape of the Internet" こと、Perl についての質問箱です。
"There's more than one way to do it" ということで、
Perl の奥深さについて皆で語り合い、追求してまいりましょう。

http://www.perl.org/get.html
● 2011/10/30 現在の最新版: 5.14.2

▼ 前スレ
Perlについての質問箱 49箱目
http://toro.2ch.net/test/read.cgi/tech/1319953460/
リンク集は >>2-3辺り
Perl 日本語処理の基礎の基礎 >>4辺り


2012/03/16(金) 16:35:08.87
>>101
http://www.onyxneon.com/books/modern_perl/index.html
2012/03/16(金) 17:04:15.50
>>102
無料でも読めるのか。トントン
2012/03/16(金) 21:48:33.88
モダンPerlは無駄なもの
なぜなら業界歴20年の俺が理解できなかったからだ
そこから役に立たないものだと結論づけた
2012/03/16(金) 23:16:39.05
新しいことについていけない老害の人って。。。
2012/03/17(土) 00:38:01.50
プログラムはプログラマだけのものじゃなくて、依頼者や使用者のものでも
あって、依頼者視点での保守、使用者視点での保守をしていかないとならない。
その場限りのソフトウェアならモダンPerlでも構わないかもしれないが、
保守するのであれば、流行で作ったものは時間が経つと「変な髪形」になっ
てしまう。それが分かってないのは、おまいのしりが青い証拠だ。
2012/03/17(土) 00:43:57.57
じゃあPerl使うなってことになるな。
2012/03/17(土) 00:45:13.60
一番人を集められるのはJavaかPHPだよね。
2012/03/17(土) 00:54:53.13
>>106
受託ってやつ?
ウェブサービス作ってるんじゃないの?

俺にとってプログラムは自社のもので、自分たちが
開発しやすいように最善の方法を目指してるんだけどさ、
客に足を引っ張られるのって、ちょっと可哀想に思う。
2012/03/17(土) 02:45:39.65
>>106
そういう時はバージョンと使用するライブラリを指定すればいいんだよ。
2012/03/17(土) 02:46:55.30
依頼者は何も指定しなかった場合、
古いPerllで作ろう。

それが依頼者のためになるんだ。
2012/03/17(土) 03:00:54.49
当然4.036よりもさらに前だよな?
2012/03/17(土) 03:04:12.17
>>106
客が要求するのがモダンではないと決めてかかってる。
客がモダンを要求したらどうするつもりだ?
単にお前は、モダンPerlが書けないだけ。
2012/03/17(土) 16:11:00.12
>>112
はい
2012/03/18(日) 01:23:00.96
逆になんでモダンにこだわるの?変なとこにこだわって成果がでないんじゃ
本末転倒じゃないの?成果とモダンとどっちが優先なの?
2012/03/18(日) 01:53:27.60
>>113
単におまいはモダンっていいたいだけちゃうんか
この青尻め
2012/03/18(日) 03:15:04.19
>>115
モダンを諦めれば、成果が出るとでも思ってるの?

むしろ、モダンを使う=成果が出る
なんだが。
2012/03/18(日) 07:42:28.32
一旦モダンって名前を頭から消して普通にPerlコードを書かせてみるとする
そいつのコードがKENTみたいなやつだとして、それが他の人が誰でも保守できるようなシロモノになるとは到底思えない
2012/03/18(日) 16:06:49.73
>>117
そんなこと言ってないだろ、どこを読んでんだ?青尻くん
2012/03/18(日) 16:17:39.87
とうとうホモスレになったのか
2012/03/18(日) 22:44:09.24
青尻くんとこは結構自由みたいだけど、個人事業主なの?
2012/03/20(火) 19:21:50.84
これまでの積み重ねがないと例えば会社が終わりになったときに技術的にも
全てを失うことになるよ。
2012/03/20(火) 19:29:12.55
モダンなんかやってて技術の積み重ねになるわけがない。
2012/03/20(火) 20:23:18.91
わざわざ不便なものを選んで苦しむのが積み重ねか
古いんだよそんなスポ根的発想は!
2012/03/20(火) 22:46:00.37
青尻くんは、プログラムは実現したいこととその解決方法の両方を記述する
ためのものだってこと、ちゃんと理解してるの?そうか、してないのかまだ
青いのか。
126デフォルトの名無しさん
垢版 |
2012/03/20(火) 23:19:46.15
普通にわかれよ。
モダンperlがいいものだとしたら普通に普及する。
駄目なもので無理やり普及させたいのには訳がある。

本や講演などで稼ぎたい人もいるってこった。
2012/03/21(水) 01:55:19.27
それには付き合えないけどね。
2012/03/21(水) 08:37:14.83
> モダンperlがいいものだとしたら普通に普及する。

実際に普及してるよな。
2012/03/21(水) 09:55:42.06
半径5m以内の、CPANモジュールも使えない環境を見て言ってるんだろうな。
2012/03/21(水) 22:40:10.92
そうだな。青尻くんが青筋立ててキーキーいう必要はないはずだよな?
2012/03/23(金) 11:52:12.45
ステマってやつだな
2012/03/24(土) 12:30:46.46
かわいいの♪ステマつげるぅ〜♪
いーないーな♪それいいなぁー♪
つげるタイプの魔法だょ〜♪
2012/03/25(日) 07:17:46.89
ステルスマーケティング用語か。個々の技術とまったく関係ない話だな。
要は互換性のなさをごまかそうとしているんだな。ばればれだぞw
2012/03/25(日) 16:36:42.85
>>118
で、きみの書いた誰でも保守できるようなコードはどこにあるの?
2012/03/27(火) 21:08:40.38
長期に渡る保守が予想されるソフトウェアは一時期の流行に合わせて
書くのではなく、将来を見据えた記述をするのが正解。
2012/03/27(火) 21:29:13.75
意固地に10年前の書き方を押し付ける必要はない
今使える書き方と今使えるモジュールで書けばいい
2012/03/28(水) 05:29:06.98
今使えない書き方で書けと読めてるお前がおかしい
ワンライナーや売り切り逃げ切りのソフトならお好きにどうぞ
2012/03/28(水) 06:14:36.83
モダンは互換性がないのと将来のメンテナンスが不安なのが弱点か。
モダンゆえに時間軸の過去も未来もだめってことか。それは困る。
2012/03/28(水) 06:17:08.97
お花を大切に
2012/03/28(水) 06:46:19.55
>>138
>互換性がない
何と?
>将来のメンテナンスが不安
将来のメンテナンスを考えると何を使えばいいの?
2012/03/28(水) 21:48:50.07
素のPerlや標準モジュールが思いつかないあたり、いい、すごくいいよ、
青尻くん。だんだん気に入ってきた。
2012/03/28(水) 22:59:03.49
たとえば標準モジュールの例としては、
http://perldoc.perl.org/index-modules-A.html

・文字コード関係
Encodeモジュール
(Jcodeは×)

・日付関係
Time::Piece、Time::Seconds
(もろもろある日付モジュールは×)

・オブジェクト指向関係
Object::Accessor、Class::Struct

データベース関係(ファイル以外)は、何もありません。

>>141が言っていることはこういう意味です。
2012/03/28(水) 23:57:43.96
がんばって標準モジュールを列記してみたものの、やっぱり素のPerlは
思いつかないところ、青尻くん、すばらしい。すごくいい。

「モダンPerl使いなのでlocaltimeは使えません。」キリッ

職場で一度言ってみたい。。。試用期間で終わるだろうけどw
2012/03/29(木) 00:40:36.87
>>143
localtimeは、Time::Pieceで使うよw

標準モジュールのTime::Pieceが素のPerlを拡張してくれるのに、
今更配列のインデックスで年取得して+1900とかする
冗長なコード書くバカいるのかい?
2012/03/29(木) 01:26:41.94
>>143
お前がTime::Piece知らないってのが
モロバレだなw

はい、このように、モダンPerlを嫌ってる人=無知なだけ
ってことなのです。
2012/03/29(木) 02:28:11.13
> 素のPerlや標準モジュールが思いつかないあたり

って言っておきながら、標準モジュールをあげたら今度は

> がんばって標準モジュールを列記してみたものの、やっぱり素のPerlは
> 思いつかないところ

もしかして、自分の知らない標準モジュールばっかりで
方向転換したのかいな?
2012/03/30(金) 00:32:49.44
ぷぷぷ。
2012/03/30(金) 01:00:11.52
モダンPerlとそうでないPerlとの違い、メリットについてもっと教えておくれ
2012/03/30(金) 02:00:07.89
標準モジュールを使いこなすのがモダン。
そうでないものは単に勉強不足なだけ。
2012/03/30(金) 21:55:40.66
なんだ、そうだったのか。てっきりlocaltimeも満足に使えないのかと
思ってたよ。失敬、失敬、こりゃ失敬。
2012/03/31(土) 00:55:04.25
念のため言っとくがlocaltimeから
リストコンテキストで取得するのは古いやり方だからな。

最近のやり方はlocaltimeからTime::Pieceオブジェクトを返す方法。
もちろん標準モジュール。
2012/03/31(土) 01:09:11.56
で、Time::Pieceのインタフェースってlocaltimeと互換性あるの?
例えばリストコンテキストで使うと同じように値が戻ってくるの?
2012/03/31(土) 01:15:37.67
>>152
% perl -MTime::Piece -E'say (localtime);say scalar localtime;say localtime->datetime'
2012/03/31(土) 01:19:35.68
しばらくメリットを考えてみる。
2012/03/31(土) 02:46:36.36
職場にようやく5.8が入ったんでよーし、これからはモダンPerlだぞ!と
意気込んできたらTime::Pieceは5.10以上と知ってがっかり。
らくだ本に載ってるTime::localtimeを使って愛想笑いでごまかすしかない。
2012/03/31(土) 07:54:16.78
その職場に5.10が入るのは10年後であった。
そしてcpanmやperlbrewを入れることは全面禁止されていた。
2012/03/31(土) 10:15:27.26
そんなんで仕事できるの?w
少なくとも効率が悪いね。
2012/03/31(土) 11:16:41.36
古い所が新しい所に
あっさり追い抜かれる原因の一つである。
2012/03/31(土) 12:09:29.38
やっぱりモダンっていうのは供給者側の視点であって、利用者側の視点が
抜け落ちているな。残念。
2012/03/31(土) 13:05:29.17
利用者?
俺は利用者なんだが。

勉強しない奴に合わせる理由なんてないよ。
2012/03/31(土) 15:55:14.37
おれに合わせる必要はない。逆におれはおれでperl4が使われているところも
あるから、がんばってlocaltimeで書くと。需要ベースで考えるしかない。
残念。
2012/03/31(土) 17:19:27.03
まあゆっくりやっていこう。モダンPerlにタイムリミットがあるわけでなし。
2012/03/31(土) 19:21:56.77
古いPerlにはタイムリミットあるけどな。

Perl4のサポート期間は10年ぐらい前に終わっていそうだけどw
2012/03/31(土) 19:22:54.88
perl4の需要はすでに99.9%無い
かろうじて残っているような需要に対応する必要はない。
2012/03/31(土) 20:22:18.67
お前に期待してないから大丈夫だ。
2012/03/31(土) 21:07:02.42
>>161
Perl4に拘るのはせいぜいあなた個人あるいはお客様だけでありますように
あなたの後をうける人、あなたの下につく人が不幸にならないことを祈りたいですなぁ
2012/03/31(土) 22:03:37.68
そうだね。
2012/04/01(日) 12:23:36.71
windowsXp:ActivePerl環境で、perlをタスクスケジューラからバックグラウンドで実行させたい。
wperl.exeで実行すればよいとgoogle先生が教えてくれたんだけど、
↓でやっても実行時にウィンドウが一瞬だけ開いてしまう。
C:\Perl\bin\wperl.exe sample.pl

↓だと↑より長くウィンドウが表示されるので、wperl.exeが効いていないわけではないっぽい。
C:\Perl\bin\perl.exe sample.pl

うーん、なぜだ
誰か教えてください
2012/04/01(日) 19:58:44.51
タスクスケジューラに設定したのはwperl.exeではなくバッチファイルと予想。
2012/04/02(月) 01:47:27.43
% pp --gui --verbose --output=sample.exe sample.pl
でスクリプトをexeファイルにする。

ttp://search.cpan.org/~rschupp/PAR-1.005/lib/PAR/Tutorial.pod
171168
垢版 |
2012/04/03(火) 00:54:00.46
デバッガあててみたら↓が原因だった
our $mech = new WWW::Mechanize(autocheck => 1);

手前は中で何やってるんだよ・・・
これ以上解析するのはめんどいが、
ウィンドウが表示されるのは耐え難いので
暇なときに中をのぞいてやる

>>170
なんかすごそう
暇なときにやってみる
172営利利用に関するLR審議中@詳細は自治スレへ
垢版 |
2012/04/07(土) 01:50:55.99
ハッシュにblessしたオブジェクトのプロパティに対してlvalue属性つきのサブルーチンを用意しようとしています。
単純なアクセサなので呼び出されたときにAUTOLOADで補足してインストールするようにしています。

package Config;
sub new { my ($class) = @_; bless { name => 'foo', }, $class; }
sub AUTOLOAD {
 no strict 'refs';
 my ($self) = @_;
 our $AUTOLOAD;
 if ($AUTOLOAD =~ /.*::(.*)\z/) {
  *$AUTOLOAD = sub : lvalue { my ($self) = @_; $self->{$1}; };
 }
 goto &$AUTOLOAD;
}
sub DESTROY {} # 一応・・

package main;
my $obj = Config->new;
print $obj->name,"\n"; #=>'foo'
$obj->name = 'bar';
print $obj->name,"\n"; #=>'bar'

これは正常に動作しますが、mainパッケージの最初のprint文をコメントアウトした場合や
新たなプロパティをセットしようとした場合↓にはAUTOLOADが呼ばれず(AUTOLOADに行く前に?)エラーとなります。

$obj->update = '2012/4/8'; => Can't modify non-lvalue subroutine call at...

回避方法あるでしょうか?
173172
垢版 |
2012/04/07(土) 02:55:30.64
投稿の際に行数を節約しようと修正した部分で動かないところがありました

×*$AUTOLOAD = sub : lvalue { my ($self) = @_; $self->{$1}; };

my $name = $1;
*$AUTOLOAD = sub : lvalue { my ($self) = @_; $self->{$name}; };
2012/04/07(土) 17:14:55.67
package _Config;
our $AUTOLOAD;

sub new { bless { name => 'foo' }, shift }

sub AUTOLOAD : lvalue {
my ($self) = @_;

(my $name = $AUTOLOAD) =~ s/.*://;
my $sub = sub : lvalue { shift->{$name} };
{
no strict 'refs';
*{$AUTOLOAD} = $sub;
}
$self->$name();
}

sub DESTROY {}

ここまで来ると普通のハッシュでよくね?
あと、ネタすれなんで、本スレで質問しる。
175営利利用に関するLR審議中@詳細は自治スレへ
垢版 |
2012/04/07(土) 19:05:08.57
在日韓国・朝鮮人や,
働かないで金をせびるクズ人間を取り締まってくれや。
追うも国士館,追われるも国士館頼むぞ。

http://www2.ocn.ne.jp/~hirohito/photo/s6116.jpg
http://www.masuko.co.jp/school/img/otona/4men_2.jpg
http://keiten.net/image/070804kokushi/kekki.htm

規律ある大学生活
http://daiminsya.exblog.jp/2750544/

国士舘OBの回想
http://www.youtube.com/watch?v=LBtSNMhree4&feature=related

国士舘アルバム
http://www.youtube.com/watch?v=5vZmce3qPGg&feature=related

176172
垢版 |
2012/04/07(土) 23:31:22.35
>>174
おおーありがとうございます。AUTOLOAD自体をlvalueにするというのは気づきませんでした。
実際のプログラムはもう少し複雑ですが、正しく動作しています。

>>普通のハッシュでよくね?
たしかにw
一応オブジェクトであってはほしいのですが、ハッシュ記法であれば何の不都合もなく
$obj->{name} = 'bar';
と書けるわけですしね。
オマケでメソッド呼び出しも、と考えてたらハマってしまった格好です
2012/04/08(日) 21:43:29.63
Apple 社の Mac OS X は、 ベースの一部 が FreeBSD です。Apple 社独自の
ユーザインタフェースとともに、豊富なUNIX(R)基盤が取り入れられています。
2012/04/08(日) 23:11:38.92
OpenStepじゃなかったっけ?
2012/04/14(土) 14:38:18.13
>>171
事前にSTDOUT、STDERRをつぶして
おいたらどーなる?

ウインドウアプリで、そこに吐くと、
自動的に新規コンソールが開く、
とかだったような。
2012/04/17(火) 22:06:08.88
>>179
タスクのウィンドウが表示されなくなってうれしいものの、その他の
ウィンドウも一切表示されなくなりました ;_;
(D-SUB抜いて試しました)
2012/04/18(水) 03:18:24.23
一方、日本は...




瞳をとじた
2012/04/29(日) 00:38:07.87



そしてこのスレッドもクローズした
183デフォルトの名無しさん
垢版 |
2012/04/29(日) 06:35:31.99
再開
2012/04/29(日) 06:52:54.09

  ∧∧
  ( ゚Д゚ )∩
 ⊂   ノ
  /  0
  し´
えっ…と、
ここかな…、と
 ∧∧ ∧∧
∩゚Д゚≡゚Д゚ )
`ヽ     |)
  | __ |〜
  ∪  ∪
      ドスッ
  ∧∧.ミ. _
  (   )┌┴┴┐
  /   つ.再開│
〜   ./ └┬┬┘
 ∪∪    ││_ε3
     ゛゛゛゛
2012/04/29(日) 14:21:23.37
最近のPerlでOOP用ライブラリってどんなのが主流ですか?
2012/04/29(日) 14:23:06.27
Mooseだろ?

最近のライブラリでそれ以外使ってるの有るのか?
2012/04/29(日) 14:25:50.06
ありがとうございますMoose調べてきます
2012/04/29(日) 18:38:18.38
Mooseが重いと思ったらMouseとAny::Mooseの組合せで代用もよし
2012/04/29(日) 20:25:09.14
最初から Mouse 使ったほうが
190デフォルトの名無しさん
垢版 |
2012/05/15(火) 18:28:38.45
cpan でモジュールインストールしんたいんだけど
install やら make やら make install やら全部 OK
でたのに
perldoc -l インストールしたモジュール名
やるとそんなのないて怒られる。
なんで?
2012/05/15(火) 22:29:19.68
>>190
普通 perldoc -l DBI などは成功すると思うよ。
どうやって入れたの? モジュール名は?
192デフォルトの名無しさん
垢版 |
2012/05/16(水) 07:35:09.36
>>191
cpan>install Math::Vector::Real
でいれて
全部 make やら make install やら全部 OK と出たが
ないようだった。

cpanplus でインストールしてみたらいけたのだが原因がわからない。
193デフォルトの名無しさん
垢版 |
2012/05/16(水) 19:04:48.32
Regexp::Assembleでマッチした時って
後方参照使えるの?
2012/06/20(水) 00:40:13.88
perl 5.10.1 を使っています。
$str = "ABCD"; の時
@a = $str =~ /AB|CD/g;
を実行すると、@a = ( "AB", "CD" ) と2つの要素が返されますが、
@a = $str =~ /AB|BC/g;
だと、@a = ( "AB" ) しか帰ってきません。
(ABがマッチしたら、その次のCからサーチが始まるため)

@a に ("AB", "BC") と、マッチするものすべてを得たい場合、
どうすればよいでしょうか。

2012/06/20(水) 01:29:26.87
なんか面白そうなお題なのでとりあえず最悪くさいものを作ってみた
素晴らしい人がボロクソにけなしてくれると期待しつつ投げてみる

$str='ABCD';
{
my $tmp=$str;
while($tmp=~/AB|BC/){
push @a,$&;
$tmp = $&.$';
$tmp=~s/^.//;
}
}
print join' ',@a;
196194
垢版 |
2012/06/20(水) 02:51:53.45
>>194
場当たり的に色々試していたら
@a = $str =~ /(?=(AB|BC))/g;
で、(AB,BC) が取得できました。
(?= で、次の走査開始点を移動させないようにしたから、でしょうか?
2012/07/15(日) 14:22:38.65
一過性のモダンPerlはもう終わり。
らくだ本の発行によって本来のPerlへの回帰が始まっている。
2012/07/15(日) 14:36:07.64
本来のPerl=5.0でも動く範囲でしかコード書かない
2012/07/15(日) 16:03:33.45
そういえばPerl5のスレってないね?やっぱりまだPerlの方が使われてるのかな?
2012/07/20(金) 00:44:57.65
モダンPerl書いたひとはどうしてるの?最近見ないけど、やっぱりだめなの?
201デフォルトの名無しさん
垢版 |
2012/07/20(金) 06:04:14.97
まあソースをみて改良したりとか前向きな動機はほぼゼロで99.99%はこのメーカー
困らせてやれって開示請求なんだろうな。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況