【モダン推奨】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/09/24(月) 00:48:00.82
複数のアクティブな結果セット (MARS) の使用
http://msdn.microsoft.com/ja-jp/library/ms131686.aspx
303291
垢版 |
2012/09/24(月) 22:40:47.72
>>302
ありがとうございます。
こんなものがあったんですね。知らなかったです。
2012/09/26(水) 00:01:18.00
Perlのこと聞きたかったら、いつでもこのモダンPerlスレに来な
2012/09/26(水) 01:15:59.84
モダン焼きは四角く切るのと放射状に切るのとどっちがいい?
2012/09/26(水) 05:22:19.56
おちんちんお切ってしまえ
2012/09/27(木) 01:25:13.55
たこ焼き器で作るとひと口サイズなので切らなくともよい。
2012/09/27(木) 06:03:41.53
私女だけどひと口サイズのおちんちんは勘弁
2012/09/30(日) 12:10:27.15
切り方変えても味は変わらないのでそのままかぶりつく
2012/09/30(日) 23:22:27.63
結局一過性のモダンポールか、青臭いな
2012/10/06(土) 16:46:58.45
少数のエリートが良かれと思っても多数派の一般民が取り入れないと意味がない
ひとがプログラミングする訳だから、フィーリングを大事にしないとだめだな
312デフォルトの名無しさん
垢版 |
2012/10/14(日) 16:56:04.97
開発効率のことだけで言うと
モダンPerlの方が効率がいいね。
313デフォルトの名無しさん
垢版 |
2012/10/14(日) 23:37:41.19
俺が好きなのはポストモダンPerlだな
2012/10/15(月) 03:13:27.49
ああ、アレね、アレのことね
2012/10/15(月) 12:16:14.31
Time::Pieceの実験用モルモットになるよりlocaltimeをツールとして安心して使うタイプか
2012/10/15(月) 15:57:01.88
モジュールに一切頼らないスタイルこそが正義
317ハートマン軍曹
垢版 |
2012/10/15(月) 18:43:05.44
お前の顔はモダンアートの醜さだ!
318デフォルトの名無しさん
垢版 |
2012/10/16(火) 00:31:08.75
もうPerlは5.16の時代ですよ。
5.12とそれより前はサポート終了しました。

10年前のPerlのことなんか、
考える必要ないんですよ。
2012/10/16(火) 00:42:38.62
5.6とか使いたい奴は自分らで勝手に使ってたらいい
ただし5.6を他人に強要したり、5.6向けに書いた古臭いスクリプトを他人に押し付けて保守させたりするな
2012/10/16(火) 01:21:14.64
>>319
いやなことあったの?
2012/10/16(火) 01:23:22.72
>>320
主にこのスレでねw
2012/10/16(火) 01:37:39.47
とにかくコードが手元の環境で動くのが正義
そして長期間に渡るメンテが可能で楽なのが正義
localtimeは標準モジュールより格上の標準関数

ポータブルPerlこそがこの世の正義

319による保守は誰も期待していない
2012/10/16(火) 01:59:23.74
>>321
無理して見なくていいぞ
324デフォルトの名無しさん
垢版 |
2012/10/16(火) 02:00:05.08
ポータブルPerlって
Perlのバージョンはなんだ?
言ってみろよwおらおらw
2012/10/16(火) 02:04:53.00
>>322
> とにかくコードが手元の環境で動くのが正義

> ポータブルPerlこそがこの世の正義

矛盾してる
326デフォルトの名無しさん
垢版 |
2012/10/16(火) 02:06:12.86
>>322
> ポータブルPerlこそがこの世の正義

つまり手元の環境で動きさえすればいいってもんじゃないってか?
327デフォルトの名無しさん
垢版 |
2012/10/16(火) 02:06:57.24
>>322
> localtimeは標準モジュールより格上の標準関数

格上わろす
2012/10/16(火) 02:21:46.91
手元にたくさんあるんだろ、モルモット君。
2012/10/16(火) 11:09:16.58
localtime()は、Cにもあるよ
330デフォルトの名無しさん
垢版 |
2012/10/17(水) 18:24:12.99
うるさいゴミ
2012/10/20(土) 13:36:25.82
リストコンテキストとスカラーコンテキストの違いとか printf とかはモダン
うんぬんの前に知らないとだめだろ。

モダンなゆとり世代。壮大な実験に付き合わされたモルモット。かわいそす
2012/10/20(土) 14:30:09.12
刹那的なモダンPerlでは自分が書いたスクリプトを数十年に渡って保守する
ことは不可能と悟り本来のPerlに戻ってくる。で、localtimeで書く。
333デフォルトの名無しさん
垢版 |
2012/10/20(土) 14:43:54.03
>>332
perl本体に組み込まれた関数が何十年後も互換を維持してるとは思えないがな
2012/10/20(土) 15:22:59.17
寿命が6〜8年のモルモットの推測が当たるとは思えないがな
2012/10/20(土) 15:54:12.00
数十年後も使い続ける物はCで書いとけよ。
Perl5自体、メンテされてるかどうか分からんぞ。
2012/10/20(土) 17:23:24.31
mooseとか使いまくってる俺が通りますよ

早くPerl6出ないな〜
2012/10/20(土) 20:08:44.97
Cで書いたら実行環境の違いを記述するコードでアプリケーションが
埋め尽くされるんだろーなー
338デフォルトの名無しさん
垢版 |
2012/10/20(土) 20:25:13.96
>337
Linuxのソース見たけど、
一部の層で吸収しているから
ほとんどのコードは実行環境の違いなんて関係ないよ。

ま、お前にはそんな芸当出来ないだろうがな。がはははははwwww
2012/10/20(土) 20:32:14.18
ゆとりだからLinuxしか習わなかったんだよね?かわいそす
340デフォルトの名無しさん
垢版 |
2012/10/20(土) 20:34:13.97
「Linuxしか習わなかった」と判断した理由を書いてください。

ゆとりの脳内はよくわかりませんのでw
あ、書かなくても(逃げても)構いませんよwww
2012/10/20(土) 20:54:05.91
書いてもいいんだけど、Linuxのソースが、Linux以外のオペレーティング
システム上でperlを実行したときの実行環境の違いを吸収できると考えて
いるひとには理解できなそう
2012/10/20(土) 21:09:04.20
たぶん、無理だろうね。かわいそす
343デフォルトの名無しさん
垢版 |
2012/10/20(土) 21:21:01.55
やっぱゆとりだったかw

実行環境の違いなんてそれを埋めるレイヤーに固めるから
アプリケーションがそんなコードで埋まることはないってのが
一番の趣旨だろ。

こういう作り方ってのは普通にやることだし、そんなことが
思いつかないってのは自分でやったことがないってことw

そこからこのセリフにつながる

ま、お前にはそんな芸当出来ないだろうがな。がはははははwwww
344デフォルトの名無しさん
垢版 |
2012/10/20(土) 21:42:31.78
>>343
意味不明
345デフォルトの名無しさん
垢版 |
2012/10/20(土) 21:47:19.43
意訳 馬鹿だから理解できないw
346デフォルトの名無しさん
垢版 |
2012/10/20(土) 22:34:46.28
興奮してるのか脳に障害があるのか分からないが
文章が無茶苦茶だな
2012/10/20(土) 23:27:28.93
たぶんではなくて完全に無理です。コンテキストの理解を求める俺のほうが
完全に悪かったです。printf も覚えようとしなくて結構です。

どうもすみませんでした。
2012/10/20(土) 23:55:00.68
モダンPerlが脳障■者を集めるのか、脳障■者がモダンPerlを好むのか

これって日本だけの現象なの?モダンRubyとかも同じ状況なの?
349デフォルトの名無しさん
垢版 |
2012/10/21(日) 00:21:29.73
いいから黙ってろって
350デフォルトの名無しさん
垢版 |
2012/10/21(日) 00:34:27.55
>>343
> こういう作り方ってのは普通にやることだし、そんなことが
> 思いつかないってのは自分でやったことがないってことw
>
> そこからこのセリフにつながる

罵倒を目的とした文章で代名詞の頻度が上がるのは、脳に良くない変化が起きていることを現すから気をつけた方がいい。
2012/10/21(日) 00:35:41.55
じいさんがボケ始めた頃「あれ取って」が増えたのと同じか?
352デフォルトの名無しさん
垢版 |
2012/10/21(日) 00:46:26.95
>>350
> 罵倒を目的とした文章で代名詞の頻度が上がるのは、脳に良くない変化が起きていることを現すから気をつけた方がいい。

そんなデータはありませんwww
大丈夫?
2012/10/21(日) 01:30:13.87
ボケ老人風文体わろす
2012/10/21(日) 02:33:32.41
実行環境の制約(機器であったり、OSであったり、その会社の規則だったり)で
ポータブルなスクリプトを書かなければならないことはあるだろうけど、
制約によってモダンPerlで書かなければならないってことは現実にあるんだろ
うか?

その前にポータブルなスクリプトとレガシーなスクリプトの違いはちゃんと
理解できているのだろうか?

モダンPerlは結局のところ単なる自己満足なのだろうか?回答を求む。
355デフォルトの名無しさん
垢版 |
2012/10/21(日) 02:48:51.74
> ポータブルなスクリプトを書かなければならないことはあるだろうけど
お前のポータブルの意味って何?
新しいPerlを入れればいいだけだろ。

お前が言ってるのは、ポータブルなスクリプトを書く。ではなく
古いPerlにも対応したスクリプトを書くって話。

ポータブルとは関係ない。
2012/10/21(日) 08:22:34.33
古いPerlって、どれくらい前のPerlの事を言ってるの?
CPANライブラリが動かないような古いPerlも視野に入れて開発しないといけないの?
どうして、そんな古いPerlに固執してるの?バージョンアップできないの?

正直モダンPerlって呼ばれてるような書き方をしてはいけないなんて制約がある方が特殊すぎ
2012/10/21(日) 14:23:20.43
自分の書くプログラムのスタイルなら、モダンだろうとクラシックだろうと好きに書けばよい。
でも、モダンPerl!モダン!モダン!って言う連中って、CPANとかのライブラリを使って書くことを
モダンだと言ってることが多い。

ライブラリを自分で抱えるのでなく、システムに入れろっていうのは横暴だし無理だろう。
すでに作られているシステムに、あとからCPANライブラリを追加したら、
既存のPerlスクリプト全ての再検証必要となるからね
2012/10/21(日) 14:57:36.30
どんなモジュール追加したらそんな大げさなことになるんだよ。
359デフォルトの名無しさん
垢版 |
2012/10/21(日) 15:03:26.42
今のモダンPerlの世界は
perlbrew + cpanminus + local::lib を使って
システムに入れずに最新Perlを使うのです。
2012/10/21(日) 20:00:42.97
『はじめてのPerl』にlocal::libとcpanmが出てくる時代になりました。
2012/10/31(水) 01:25:45.68
書いたときにモダンなのは当たり前だろう
モダン推しは時間軸の視点が抜け落ちているんだな
2012/11/04(日) 13:29:05.31
>>358
Encodeモジュールのようなモジュールだろ
まあ、あえて名指しはしないけどな
363デフォルトの名無しさん
垢版 |
2012/11/04(日) 17:39:50.59
なんでEncodeモジュールを追加しただけで
再検証が必要になるんだ?

Encodeモジュールは最近のPerlには標準搭載されてるだろ。
まさか最新のPerlで動かないコード書いてるのか?
2012/11/06(火) 01:19:20.40
>>318 >>319
フリーソフトはそもそも AS IS だからサポート切れとかはない
今までのどのらくだ本にも最初に書いてある

で、強要だの押し付けただのってしたことあったっけ?
2012/11/06(火) 17:24:09.46
>>364
http://perldoc.perl.org/perlpolicy.html#MAINTENANCE-AND-SUPPORT
2012/11/06(火) 23:57:40.03
And if you have a problem that the Perl community can't fix,
you have the ultimate backstop: the source code itself.
-- Programming Perl 4th Edition
2012/11/07(水) 00:29:49.79
好きなだけ弄ればいいさ。
誰も止めやしない。
2012/11/07(水) 01:58:26.48
Jcode,pmてまだまだ使われてるの?
さすがに require jcode はないよねー
2012/11/07(水) 21:36:21.96
まだまだ現役です。だって使いやすいんだもん。
2012/11/07(水) 21:58:36.93
Inline CとPerlとの
XSUB変換がperlgutの必須必要事項だと
会社の上司に言われたのですが、最後の

READMEに乗ってる
ようにmakeコマンドが生成されません。基本は
h2xs -A -n ExtModuleを実行し、種々の
実行環境を整えます。
参考URL:
http://d.hatena.ne.jp/perlcodesample/20100809/1278596435
2012/11/07(水) 22:03:15.28
どう説明しようかな
2012/11/07(水) 22:04:16.52
#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"

#include "ppport.h"


MODULE = ExtModule PACKAGE = ExtModule

int
twice (x)
int x;
CODE:
RETVAL = x * 2;
OUTPUT:
RETVAL

上記を保存したのちに、makefile.plを事項しますが
Writing Makefile for ExtModule
Writing MYMETA.yml
というログを残すだけでmakeファイルらしき物は一向に
生成されません。
373デフォルトの名無しさん
垢版 |
2012/11/07(水) 22:06:14.66
ちなみに
コマンドプロンプトから

..
159 Changes
3,555 ExtModule.c
276 ExtModule.xs
lib
29,569 Makefile
864 Makefile.PL
97 MANIFEST
502 MYMETA.yml
187,518 ppport.h
1,211 README
t
のディレクトリが成立しています
2012/11/07(水) 22:08:46.56
>>372
事項ではなくて、実行であります。
タイプミスすんまそん
2012/11/07(水) 23:24:53.47
メタな問題が発生しているとだけ回答しておく
2012/11/07(水) 23:28:00.83
Makefile.PLはこの作業を自動化するmakeファイルを生成してくれます。
↑これが原因か
何とも罪作りな記事だな
そのページのコメント欄に質問として書いちゃえよ
2012/11/07(水) 23:29:47.33

※1 これはWindowsではうまく動かない可能性があります。
2012/11/08(木) 07:22:49.06
初歩的なミスを
した物のどの記事もWin系なのかUni系
なのかわからん記事ばかりで

一応
WindowにGnuWin32を通した物の

make: *** `makefile' に必要なターゲット `C:\Perl\libConfig.pm' を make するルー
ルがありません. 中止.

なんてエラーが
返って来る。結局Windowユーザーは
Xsubpp覚えなくてもいいってことか。
2012/11/09(金) 00:56:41.22
Xsubppによる利便性の低下、な
2012/11/09(金) 12:27:18.50
>>379
これだから2cherはクズ
2012/11/09(金) 15:38:32.61
新聞じゃないんだからw
2012/11/11(日) 22:47:24.71
先生!makeファイルがmakeされません!
2012/11/11(日) 23:40:24.23
sudo apt-get install make
2012/11/12(月) 09:00:12.42
active perlだと、今はコンパイラも付いてくるからそれを使う。
makeはdmakeを使う。
2012/11/14(水) 00:00:27.32
彼女がメイク中でした。



(高見盛に激似です)
2012/11/17(土) 20:22:53.85
DOSこいっ
387デフォルトの名無しさん
垢版 |
2012/11/18(日) 01:18:35.04
文字列がtest_1やtest_2やtest_3のように
test_○のような形になっているかを正規表現で調べるにはどうすればいいんですか?
○の中は数字のみです
2012/11/18(日) 02:26:28.96
$str =~ /\Atest_\d\z/
389デフォルトの名無しさん
垢版 |
2012/11/19(月) 11:30:45.47
>>387←正規表現スレじゃなくてここできいてるこの基地害なに?
390デフォルトの名無しさん
垢版 |
2012/11/25(日) 00:36:01.64
あげ
391デフォルトの名無しさん
垢版 |
2012/11/25(日) 00:36:59.73
モダン厨のすくつ
392デフォルトの名無しさん
垢版 |
2012/11/25(日) 00:38:10.24
さらに一文字減らせた!

($d,$m,$y)=(localtime)[3..5];printf "%04d"."-%02d"x2,1900+$y,$m+1,$d


print localtime->ymd

に対抗してコードを減らし中。

($d,$m,$y)=(localtime)[3..5];printf("%04d-%02d-%02d",1900+$y,$m+1,$d)
($d,$m,$y)=(localtime)[3..5];printf "%04d-%02d-%02d",1900+$y,$m+1,$d
($d,$m,$y)=(localtime)[3..5];printf "%04d"."-%02d"x2,1900+$y,$m+1,$d
393デフォルトの名無しさん
垢版 |
2012/11/25(日) 00:38:50.82
printfの後のスペースなくても動いた!

($d,$m,$y)=(localtime)[3..5];printf"%04d"."-%02d"x2,1900+$y,$m+1,$d
2012/11/25(日) 00:44:06.73
そんなに短さにこだわるなら、無理やりprintfつかなくていいんじゃね?
sprintf馬鹿に感化されたのか知らんが。

($d,$m,$y)=(localtime)[3..5];printf"%04d"."-%02d"x2,1900+$y,$m+1,$d
($d,$m,$y)=(localtime)[3..5];print 1900+$y,"-",$m+1,"-",$d
395デフォルトの名無しさん
垢版 |
2012/11/25(日) 00:49:11.82
おっと馬鹿が勝手に条件変えてきたぞ
396デフォルトの名無しさん
垢版 |
2012/11/25(日) 00:51:05.56
>>394
print localtime->ymd;

これでいいんじゃね?

useまで入れたとしても短い。

use Time::Piece;print localtime->ymd;
($d,$m,$y)=(localtime)[3..5];print 1900+$y,"-",$m+1,"-",$d
2012/11/25(日) 09:16:00.99
せめてPOSIX。

use POSIX;
print strftime("%Y-%m-%d", localtime);
2012/12/02(日) 11:20:23.79
どうせすぐ古くなるんだから。保守するのに時間軸の視点は必要だぞ。
2012/12/09(日) 14:19:16.53
ポータブルPerlとかモジュールなしPerlとか
2012/12/09(日) 15:03:54.83
struct tfield *を保持する
MyTypeをブレースしたマジック変数を作りたい。
以下の(中略)のXSソースを使ってPerl側から


Hoge*な struct tfield *head[30]をハッシュに
よって閲覧するにはどうしたら良いか。そして、
マジックをRETVALにアクティブにするはどうればよいか具体的に述べよ。

struct tfield {
struct tfield *left[30];
int num;
char str[30];
struct tfield *right[30];
};
struct tfield *talloc(void)
{
return ((struct tfield *)malloc(sizeof(struct tfield )));
}
2012/12/09(日) 15:04:52.27
MODULE = MyTypePACKAGE = MyType

HV*
DataList()
PREINIT:
struct tfield *p,*head[30];
CODE:
hash=newHV();
sv=newSV(0);
ref=newRV_noinc((SV*)newHV());
sv_setref_pv(ref,"main::Tie",head);

sv_setsv(sv,sv_2mortal(newRV_noinc((SV *)hash)));
sv_bless(sv,gv_stashpv("MyType",TRUE));

sv_magic((SV* )hash,SvIV(SvRV(ref)),PERL_MAGIC_hints,NULL,0);

if(mg_find(SvRV(sv),PERL_MAGIC_hints)!=NULL)
printf("PERL_MAGIC_hintsp\n");
p=mg_find(SvRV(sv),PERL_MAGIC_hints)->mg_obj;

RETVAL=hash;

OUTPUT:
RETVAL
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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