2012年09月プログラム108: 【モダン推奨】Perlについての質問箱 50箱目 (361) TOP カテ一覧 スレ一覧 2ch元 削除依頼
<XML総合 part="3"/> (756)
OpenGLスレ Part18 (925)
GPGPU#5 (274)
monazilla Part 6 (623)
くだすれC++Builder(超初心者用)その5 (328)
Borland C++ Compiler オ ワ タ (313)

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


1 :2012/01/21 〜 最終レス :2012/10/31
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辺り


2 :
[プログラミング自体の経験が無い奴はまずココを読め]
Perl プログラミング講座: ttp://www.site-cooler.com/kwl/perl/
モダンPerlの世界へようこそ http://gihyo.jp/dev/serial/01/modern-perl/0001
[本]
リャマ: ttp://www.oreilly.co.jp/books/9784873114279/
駱駝: ttp://www.oreilly.co.jp/books/4873110963/
Effective Perl: ttp://ascii.asciimw.jp/books/books/detail/4-7561-3057-7.shtml
クックブック: ttp://www.oreilly.co.jp/books/4873112028/
Perl ベストプラクティス: ttp://www.oreilly.co.jp/books/4873113008/
Perl Hacks: ttp://www.oreilly.co.jp/books/9784873113142/
[オンラインマニュアル]
最新のドキュメント: ttp://search.cpan.org/dist/perl/
perldoc.jp: ttp://perldoc.jp/
perldoc.perl.org: ttp://perldoc.perl.org/

3 :
[モジュール]
CPAN.com: ttp://search.cpan.org/
河馬屋二千年堂: ttp://homepage3.nifty.com/hippo2000/
[テクニック]
Perl メモ: ttp://www.din.or.jp/~ohzaki/perl.htm
Perl のページ: ttp://homepage1.nifty.com/nomenclator/perl/
Perl の小技: ttp://homepage3.nifty.com/hippo2000/perltips/index.htm
[Perl 5.8 Unicodeメモ]
ttp://www.rwds.net/kuroita/program/Perl_unicode.html (修正)
ttp://www.namazu.org/~tsuchiya/perl/perl-5.8.html
ttp://www.lr.pi.titech.ac.jp/~abekawa/perl/perl_unicode.html

4 :
Encodeモジュール (現在のPerl文字コードの標準)
http://search.cpan.org/dist/Encode/
UNICODEでわからなくなったらここを読め
http://perldoc.jp/docs/perl/5.8.1/utf8.pod
http://perldoc.jp/docs/perl/5.10.0/perlunifaq.pod

5 :
1レスで理解できるutf8フラグ
utf8フラグとい名前がまずかったね。
文字列フラグなどという名前だったらよかった。
文字列フラグはPerl固有のものだから
Perlコード外部から渡されるのは文字列ではない。
文字列でなかったらなにか?それはバイナリ。
バイナリを文字として扱いたければ、文字に変換しないといけない。
それがdecode。
ではソースコードに書いてあるのは、文字かバイナリか。
それはuse utf8を使えば文字で、そうでない場合はバイナリ。
話はこれだけ。

6 :
【プログラミング部】 PHPが100倍速で動くようになったぞー
http://awabi.2ch.net/test/read.cgi/poverty/1327050821/

7 :
あのー、重複スレってことないですか?

8 :
はてなキーワード > モダン
ttp://d.hatena.ne.jp/keyword/%A5%E2%A5%C0%A5%F3
書いているひとは 1. の意味で書いていそうだけど、読む人は(書いた時期
を考慮して) 2. や 3. の意味で解釈している。
よく印刷した資料に「最新版」とか書くひとがいるけどそれと似てるのかも
しれない。たくさんの最新版のうちどれが最新版なのか分からなくなる。
この場合の正解は版数を書くこと。
モダンの場合は、個別の技術の名称を書くことに相当する。
そうしないと「えっ?いまどきモダンPerl使ってるのかよ、お前w」なんて
ことになる。

9 :
個別の技術は是々非々で議論しましょう。
現状は、モダンという名のせいで盥水とともに赤子を流してしまっています。

10 :
モダンPerlと呼ばれているものは、過去の一時期のスタイルと結びついていて
今はもう使われていない。一方、レガシーPerlと呼ばれているものは現在でも
利用されていて、その名とうらはらに全くレガシーな気がしない。
思うにこれらの名称は、実態を正確に示していない点で失敗だと思う。
そういえば、モダンRubyやレガシーRubyという言葉は聞いたことがない。
名前重要っていうのは本当なんだな。

11 :
ルビーはバージョン毎に違うからなあ
新旧をバージョン番号以外で呼ぶ事は今後もないんだろう

12 :
83JISは新JISですね。わかります。

13 :
2012年なんだから、そろそろ新JISキーボード使おうよってスレですね。
わかります。

14 :
問題を解決する方法がモダンかどうか、誰もこだわっていない件

15 :
今はポストモダンの時代

16 :
何がどうなるの?教えて、教えて

17 :
結局、モダンって何だったの?
本を売りたかったとか、会社作ってみたとか、そういうことなの?
失敗だったの?
もうモダンには会えないの?

18 :
         _  , 、
     r‐v'´ ̄  `~ く     
  _.  7,‐、   r‐、  ヽ   だったら Perlのはじめて を
  (._ ^ヽ|{ 0 _l 0ノ   i
   ヽ (´ ̄  `_, ヶ  ノ   見に行こうよ 
     `、`ー-ヾ._.// )
     /      (_.ノV^) 「クルクルバビンチョパペッピポ、イア!イア!ハスターの
      i    _     「
    L_ _/  \_ _.ノ

19 :
Perl on Heroku | Hacker News
http://news.ycombinator.com/item?id=3570894
judofyr/perloku - GitHub
https://github.com/judofyr/perloku

20 :
「モダン、ここはどこ?」

21 :
ネタが古い

22 :
ここはね、パークハイアット東京。
The Perl Confernce Japan の会場だょ。
まもなく、まつもとゆきひろさんのRubyのセッションが始まるょ。
(コーヒーがおいしいょ。)

23 :
ワンライナー [ 一行野郎 OneLiner ]

24 :
書き込みテスト

25 :
結局、モダンPerlって何だったんですかね?

26 :
Perlの長所であり短所であるTMTOWTDIによるコードの難読化を共通ルールっぽいテンプレで改善しようという風潮

27 :
変なこと考えるより、ポータブルCみたいにポータブルPerlで書けばいいと
思うんでそうしてる。書きやすいし読みやすい、おまけに長期的に保守
できる。これもTMTOWTDIのひとつの形態。

28 :
長期的に保守できる=いつまでもモダン。

29 :
>>28
動いているものに手を入れるな。
手を入れるときは該当箇所にだけ入れろ
決して他の部分をいじるな。
ほとんど同じ処理でも既存の部分を
修正するなコピペして作れ。
これこそモダン

30 :
気が合いそうですね

31 :
モダンが嫌いな人って、新しいものが嫌い。
だからデザインパターンもリファクタリングも
アジャイルも嫌い

32 :
そう捉えてるとするならば、ちゃんとコトを理解できていない

33 :
Perlの評価の8割はCPANだよね
Rubyの評価の8割はRailsだよね

34 :
残りの2割はPerl4ですか

35 :
Perl4はマイナス評価だよ。

36 :
加えてPerl6もマイナス評価だからPerlはPerl5が支えているといっても寝言ではない

37 :
「モダンPerl」の"モダン"はあさってな方向に行ってしまっているので、
一般的な単語のモダンとは意味が違っている。だから>>31の言っている
ことは間違い。

38 :
>>35
うそつけ。このスレを潰そうとする連中はみんなPerl4時代のコードしか書かないじゃんか。

39 :
Perl4も現役で使われているのでモダンですよ。
モダンではないのは(らくだ本が出版されていなかった)Perl3以前ですよ。
もちろん異論はありませんね?

40 :
現役でサポートされてるディストリで
Perl4が入っているものを教えて下さいよw

41 :
5.8が出てから今年で10年。
それより前は昔の実装でおk。

42 :
こうして世界は騙された!!

43 :
ディストリインストールできる人はPerlもインストールできるんじゃね?

44 :
まさかオマイラ、ディストリ付属のperlをそのまま使ってる、なんてことないよな?

45 :
ディストリのパッケージ以外からperlとかモジュールとか入れたらシステムの安定性が壊れる
パッケージが提供されてないモジュールを野良ビルドで入れたりしない
cpanm、perlbrew、local::libを使うなどもってのほか
↓のスレ読んで出直せ
http://toro.2ch.net/test/read.cgi/tech/1217851121/544-

46 :
>>45
押すなよ絶対押すなよみたいな言い方ですね。
つまり、それらは便利ってことですね!


47 :
>>45
root管理のパッケージと混ぜないために、cpanmやlocal::libを使うのよ。
ユーザ権限でユーザ領域に突っ込めるから、バックアップも楽だし、
いらなくなったらユーザごと消せばいいし。
Perl自体は、特に必要ない限り、システム付属使ってるけど。

48 :
ユーザが移行するのは、今までよりも分かりやすいもの、使いやすいもの。
今までよりも新しいもの、多機能なもの、ではない。

49 :
モダンなものってたいがいわかりやすくて
使いやすくなってるよね。
Time::Pieceとか。

50 :
でもそうじゃないから、"モダン"っていうラベルを付けて強引に勧めて
いるんだね。分かりやすかったら、使いやすかったら、ほっておいても
自然に使われるだろうから、わざわざ無理強いする必要はないもんね。

51 :
> 分かりやすかったら、使いやすかったら、ほっておいても
> 自然に使われるだろうから
それじゃ時間がかかりすぎる。
ようはオールドタイプはさっさと消えろってこと。
ネットの古い情報もさっさと消えて欲しいし、
今頃古いやり方を教えるやつもさっさと消えて欲しい。
だから俺は古いやり方を教えている奴を見つけたら
今はこうやる。こっちのほうがもっと簡単だと
情報を広めている。

52 :
新しいけど使いづらいって、自分で言っているようなもんだな

53 :
面倒なやつは無視が一番。

54 :
CPANをすべてRubyが補完してくれたらどんなにいいだろう。

55 :
   end
  end
 end
end
あぁ、終わりだもうだめだぁ

56 :
まあモダンなPerlを知らなければ、
Perl使いとみなせない時代にはなってるよね。

57 :
もちろん情報は日々取得してるから知られてはいるんだろうけど、
使いやすくなかったらいつまでたっても使われることはないよね。

58 :
使われてるけどね。
Perlで作られてる他のプロジェクト見たこと有る?
(昔に作られて放置されてるのは除く)
Jcodeとか海外じゃ全く使われてないから。


59 :
>>58

60 :
確かに Time::Piece 以外は見たことがないね

61 :
>>58
海外で使われていないと、自分が日本語を処理するときに使っちゃいけないの?
日本では使ってもいいんでしょ?
そもそもモダンっていうのは禁止して不便にすることなの?
それにJcodeはオブジェクト指向なんだし十分モダンだと思うけどな

62 :
モダンPerlでいうところの"モダン"は、
 1.リリース時期のことをいっているのか
 2.実装手法のことをいっているのか
 3.はたまたインタフェースのことをいっているのか
ところで、インタフェースっていうのは
 a.新しければ新しいほど好ましいのか
 b.古ければ古いほど好ましいのか
このあたりの見解が一致しないと、具体的なモノがモダンなのか
そうでないのかが変ってしまうし「これはモダンだ」と言ったか
らって、そのものに価値があるのか無いのかは別問題になる

63 :
1.がモダンでも2.がモダンでも利用者にとって関係なく、単に供給側
の自己満足になってしまう。3.のことだとすると新しいもの好きはa.で、
人柱をかってでることになるわけで、そうでないならb.で問題ない。

64 :
>>62
Rubyはモダンだ。
そこからいえばRubyに近いことを
Perlでやるのがモダンだ。

65 :
モダンの定義は分かったけど、それ価値あんの?

66 :
あるよ。
開発速度が上がった。
少ないコードで、今まで以上のことができる。
なにより、プログラミング一般とPerlに関して
深い知識を手に入れられたのがいいね。
オブジェクト指向言語、関数型言語、
継承。ポリモーフィズム。mixin、
アスペクト指向、O/Rマッパー
フレームワーク、MVC・・・etc
Perlだけじゃ、世界が狭いからほかの言語をやるといい。
そうして戻ってくると、自然とモダンPerlな体になってるよ。

67 :
考え方が間違っていたかもしれない。
モダンPerlとは、Perlがモダンなのではなく
プログラマ的にモダンな開発手法、
それをPerlに取り入れたものではないのか?
よくよく考えたら、最近はやりのほかの言語の機能を
PerlでやれるようにしたがモダンPerlなモジュールではないだろうか。

68 :
モダンPerlはアンチPerlなのか...
それでPerl原理主義者の抵抗にあっているという構図か

69 :
ニーズにマッチしないモダンならいらないよ。

70 :
便利ならそれでよくて、モダンという線引きは要らないってことでおk?

71 :
お好み焼きとの違いがいまだに覚えられない

72 :
どうにも架空臭がするモダンPerlだが最近ますますそう感じている。
(モダンPerlを構成するといわれる)個別の要素の議論で十分だと思う。
ひと括りにしてしまうせいで大事なものまで一緒に捨てられてしまう。

73 :
モダンPerlではなく、
Perlでモダンプログラミングといえば、
面白いように情報弱者が落ちていく。

74 :
モダンっていう言い方が古臭い

75 :
トレンディPerl

76 :
単に"モダンPerl"と言いたいだけにしか思えない
Perlのリリースが予定通りじゃなかったり、らくだ本の改版に10年もかかっ
たりするからって、無理して話題を作る必要はない
5.14.3がリリースされない今はらくだフォーでつなぐのが吉

77 :
普通にPerl5を使えばいいだけ。

78 :
Perlのオブジェクト指向はどう考えてもいびつでおかしいのに
それを主張しても理解できない人の戯言にされてしまう。

79 :
お好み焼きは食えるけど、モダンPerlは食えないね。

80 :
>>73
人間としての品位を疑われるぞ
社会に適合してないんじゃなイカ?

81 :
>>76
らくだフォー?

82 :
らくだフォア
 モダンはとおくに
  なりにけり

83 :
>>78
Perlのオブジェクト指向はいびつ

じゃあいびつじゃない形にしましょう。それができるのがPerlの凄さだ

そうやってできたもの=モダンPerl

>>78
お前はPerlを使いこなせてないだけ。

84 :
またそんな青くさいこといちゃって、このフォーティーンめ

85 :
モダン推奨者は自分が社会に適合しようとするんじゃなくて、社会を
自分に適合させようとしている。
結果、当然うまくいかなくて挫折する。
その繰り返し。

86 :
>>85
そうそう。
CPANモジュールで楽せず全て一から自分でコードを書くのが社会の常識だからね。

87 :
モダン、モダンとか言って周りに合わせられないのは単に能力がないだけでしょ

88 :
>>87
ねぇ。
自分でコードかけないからCPANモジュールなんぞ入れようとするんだよ。

89 :
ググって何も出なかったら「ありません。」で終わりだもの、今のひとは。

90 :
>>89
ばかばかしいよね。
何も出なかったら自分で書けよ、と。

91 :
>>87
モダン、モダン言わなくても、周りに合わせられなければ、単に能力がないだけ。
つまり、モダンプログラミングと、周りに合わせられない事は別問題。
>>90
そこは迷うところだな。別の手を考えるか、そのまま自分で実装するか。
ある意味チャンスだ。

92 :
別の手ってYahoo!か?

93 :
質問箱よりOKWaveがお勧め。

94 :
どうやってCPAN使いこなせるようになるんだよ…。

95 :
今までのインタフェースで実装できなくてだめだめなのをモダンPerlとか
言って取繕ってるだけでしょ

96 :
perl6のコンセプトを先取りしてるものではないの?

97 :
ttp://www.amazon.co.jp/dp/486267108X/

98 :
>>95
なんでそういう悪意のある言い方するの?

99 :
新しい手法・置き換えるモジュールがあれば、それを採用しましょうってのがモダンPerl。
Fatalプラグマよりautodieプラグマ。
switch,caseよりgiven,when。
evalとif($@)よりTry::Tiny。
という感じ。
置き換えられないモジュールを置き換えようとするのは多分違う。

100 :
次スレがあったら、テンプレにこれも追加で
http://perl-users.jp/
で、>>3はこのスレ的には整理した方がいいだろうね

101 :
www.amazon.co.jp/Modern-Perl-Chromatic/dp/0977920178/
どんな本なんだろう

102 :
>>101
http://www.onyxneon.com/books/modern_perl/index.html

103 :
>>102
無料でも読めるのか。トントン

104 :
モダンPerlは無駄なもの
なぜなら業界歴20年の俺が理解できなかったからだ
そこから役に立たないものだと結論づけた

105 :
新しいことについていけない老害の人って。。。

106 :
プログラムはプログラマだけのものじゃなくて、依頼者や使用者のものでも
あって、依頼者視点での保守、使用者視点での保守をしていかないとならない。
その場限りのソフトウェアならモダンPerlでも構わないかもしれないが、
保守するのであれば、流行で作ったものは時間が経つと「変な髪形」になっ
てしまう。それが分かってないのは、おまいのしりが青い証拠だ。

107 :
じゃあPerl使うなってことになるな。

108 :
一番人を集められるのはJavaかPHPだよね。

109 :
>>106
受託ってやつ?
ウェブサービス作ってるんじゃないの?
俺にとってプログラムは自社のもので、自分たちが
開発しやすいように最善の方法を目指してるんだけどさ、
客に足を引っ張られるのって、ちょっと可哀想に思う。

110 :
>>106
そういう時はバージョンと使用するライブラリを指定すればいいんだよ。

111 :
依頼者は何も指定しなかった場合、
古いPerllで作ろう。
それが依頼者のためになるんだ。

112 :
当然4.036よりもさらに前だよな?

113 :
>>106
客が要求するのがモダンではないと決めてかかってる。
客がモダンを要求したらどうするつもりだ?
単にお前は、モダンPerlが書けないだけ。

114 :
>>112
はい

115 :
逆になんでモダンにこだわるの?変なとこにこだわって成果がでないんじゃ
本末転倒じゃないの?成果とモダンとどっちが優先なの?

116 :
>>113
単におまいはモダンっていいたいだけちゃうんか
この青尻め

117 :
>>115
モダンを諦めれば、成果が出るとでも思ってるの?
むしろ、モダンを使う=成果が出る
なんだが。

118 :
一旦モダンって名前を頭から消して普通にPerlコードを書かせてみるとする
そいつのコードがKENTみたいなやつだとして、それが他の人が誰でも保守できるようなシロモノになるとは到底思えない

119 :
>>117
そんなこと言ってないだろ、どこを読んでんだ?青尻くん

120 :
とうとうホモスレになったのか

121 :
青尻くんとこは結構自由みたいだけど、個人事業主なの?

122 :
これまでの積み重ねがないと例えば会社が終わりになったときに技術的にも
全てを失うことになるよ。

123 :
モダンなんかやってて技術の積み重ねになるわけがない。

124 :
わざわざ不便なものを選んで苦しむのが積み重ねか
古いんだよそんなスポ根的発想は!

125 :
青尻くんは、プログラムは実現したいこととその解決方法の両方を記述する
ためのものだってこと、ちゃんと理解してるの?そうか、してないのかまだ
青いのか。

126 :
普通にわかれよ。
モダンperlがいいものだとしたら普通に普及する。
駄目なもので無理やり普及させたいのには訳がある。
本や講演などで稼ぎたい人もいるってこった。

127 :
それには付き合えないけどね。

128 :
> モダンperlがいいものだとしたら普通に普及する。
実際に普及してるよな。

129 :
半径5m以内の、CPANモジュールも使えない環境を見て言ってるんだろうな。

130 :
そうだな。青尻くんが青筋立ててキーキーいう必要はないはずだよな?

131 :
ステマってやつだな

132 :
かわいいの♪ステマつげるぅ〜♪
いーないーな♪それいいなぁー♪
つげるタイプの魔法だょ〜♪

133 :
ステルスマーケティング用語か。個々の技術とまったく関係ない話だな。
要は互換性のなさをごまかそうとしているんだな。ばればれだぞw

134 :
>>118
で、きみの書いた誰でも保守できるようなコードはどこにあるの?

135 :
長期に渡る保守が予想されるソフトウェアは一時期の流行に合わせて
書くのではなく、将来を見据えた記述をするのが正解。

136 :
意固地に10年前の書き方を押し付ける必要はない
今使える書き方と今使えるモジュールで書けばいい

137 :
今使えない書き方で書けと読めてるお前がおかしい
ワンライナーや売り切り逃げ切りのソフトならお好きにどうぞ

138 :
モダンは互換性がないのと将来のメンテナンスが不安なのが弱点か。
モダンゆえに時間軸の過去も未来もだめってことか。それは困る。

139 :
お花を大切に

140 :
>>138
>互換性がない
何と?
>将来のメンテナンスが不安
将来のメンテナンスを考えると何を使えばいいの?

141 :
素のPerlや標準モジュールが思いつかないあたり、いい、すごくいいよ、
青尻くん。だんだん気に入ってきた。

142 :
たとえば標準モジュールの例としては、
http://perldoc.perl.org/index-modules-A.html
・文字コード関係
Encodeモジュール
(Jcodeは×)
・日付関係
Time::Piece、Time::Seconds
(もろもろある日付モジュールは×)
・オブジェクト指向関係
Object::Accessor、Class::Struct
データベース関係(ファイル以外)は、何もありません。
>>141が言っていることはこういう意味です。

143 :
がんばって標準モジュールを列記してみたものの、やっぱり素のPerlは
思いつかないところ、青尻くん、すばらしい。すごくいい。
「モダンPerl使いなのでlocaltimeは使えません。」キリッ
職場で一度言ってみたい。。。試用期間で終わるだろうけどw

144 :
>>143
localtimeは、Time::Pieceで使うよw
標準モジュールのTime::Pieceが素のPerlを拡張してくれるのに、
今更配列のインデックスで年取得して+1900とかする
冗長なコード書くバカいるのかい?

145 :
>>143
お前がTime::Piece知らないってのが
モロバレだなw
はい、このように、モダンPerlを嫌ってる人=無知なだけ
ってことなのです。

146 :
> 素のPerlや標準モジュールが思いつかないあたり
って言っておきながら、標準モジュールをあげたら今度は
> がんばって標準モジュールを列記してみたものの、やっぱり素のPerlは
> 思いつかないところ
もしかして、自分の知らない標準モジュールばっかりで
方向転換したのかいな?

147 :
ぷぷぷ。

148 :
モダンPerlとそうでないPerlとの違い、メリットについてもっと教えておくれ

149 :
標準モジュールを使いこなすのがモダン。
そうでないものは単に勉強不足なだけ。

150 :
なんだ、そうだったのか。てっきりlocaltimeも満足に使えないのかと
思ってたよ。失敬、失敬、こりゃ失敬。

151 :
念のため言っとくがlocaltimeから
リストコンテキストで取得するのは古いやり方だからな。
最近のやり方はlocaltimeからTime::Pieceオブジェクトを返す方法。
もちろん標準モジュール。

152 :
で、Time::Pieceのインタフェースってlocaltimeと互換性あるの?
例えばリストコンテキストで使うと同じように値が戻ってくるの?

153 :
>>152
% perl -MTime::Piece -E'say (localtime);say scalar localtime;say localtime->datetime'

154 :
しばらくメリットを考えてみる。

155 :
職場にようやく5.8が入ったんでよーし、これからはモダンPerlだぞ!と
意気込んできたらTime::Pieceは5.10以上と知ってがっかり。
らくだ本に載ってるTime::localtimeを使って愛想笑いでごまかすしかない。

156 :
その職場に5.10が入るのは10年後であった。
そしてcpanmやperlbrewを入れることは全面禁止されていた。

157 :
そんなんで仕事できるの?w
少なくとも効率が悪いね。

158 :
古い所が新しい所に
あっさり追い抜かれる原因の一つである。

159 :
やっぱりモダンっていうのは供給者側の視点であって、利用者側の視点が
抜け落ちているな。残念。

160 :
利用者?
俺は利用者なんだが。
勉強しない奴に合わせる理由なんてないよ。

161 :
おれに合わせる必要はない。逆におれはおれでperl4が使われているところも
あるから、がんばってlocaltimeで書くと。需要ベースで考えるしかない。
残念。

162 :
まあゆっくりやっていこう。モダンPerlにタイムリミットがあるわけでなし。

163 :
古いPerlにはタイムリミットあるけどな。
Perl4のサポート期間は10年ぐらい前に終わっていそうだけどw

164 :
perl4の需要はすでに99.9%無い
かろうじて残っているような需要に対応する必要はない。

165 :
お前に期待してないから大丈夫だ。

166 :
>>161
Perl4に拘るのはせいぜいあなた個人あるいはお客様だけでありますように
あなたの後をうける人、あなたの下につく人が不幸にならないことを祈りたいですなぁ

167 :
そうだね。

168 :
windowsXp:ActivePerl環境で、perlをタスクスケジューラからバックグラウンドで実行させたい。
wperl.exeで実行すればよいとgoogle先生が教えてくれたんだけど、
↓でやっても実行時にウィンドウが一瞬だけ開いてしまう。
C:\Perl\bin\wperl.exe sample.pl
↓だと↑より長くウィンドウが表示されるので、wperl.exeが効いていないわけではないっぽい。
C:\Perl\bin\perl.exe sample.pl
うーん、なぜだ
誰か教えてください

169 :
タスクスケジューラに設定したのはwperl.exeではなくバッチファイルと予想。

170 :
% pp --gui --verbose --output=sample.exe sample.pl
でスクリプトをexeファイルにする。
ttp://search.cpan.org/~rschupp/PAR-1.005/lib/PAR/Tutorial.pod

171 :
デバッガあててみたら↓が原因だった
our $mech = new WWW::Mechanize(autocheck => 1);
手前は中で何やってるんだよ・・・
これ以上解析するのはめんどいが、
ウィンドウが表示されるのは耐え難いので
暇なときに中をのぞいてやる
>>170
なんかすごそう
暇なときにやってみる

172 :
ハッシュに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...
回避方法あるでしょうか?

173 :
投稿の際に行数を節約しようと修正した部分で動かないところがありました
×*$AUTOLOAD = sub : lvalue { my ($self) = @_; $self->{$1}; };
my $name = $1;
*$AUTOLOAD = sub : lvalue { my ($self) = @_; $self->{$name}; };

174 :
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 :
在日韓国・朝鮮人や,
働かないで金をせびるクズ人間を取り締まってくれや。
追うも国士館,追われるも国士館頼むぞ。
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


176 :
>>174
おおーありがとうございます。AUTOLOAD自体をlvalueにするというのは気づきませんでした。
実際のプログラムはもう少し複雑ですが、正しく動作しています。
>>普通のハッシュでよくね?
たしかにw
一応オブジェクトであってはほしいのですが、ハッシュ記法であれば何の不都合もなく
$obj->{name} = 'bar';
と書けるわけですしね。
オマケでメソッド呼び出しも、と考えてたらハマってしまった格好です

177 :
Apple 社の Mac OS X は、 ベースの一部 が FreeBSD です。Apple 社独自の
ユーザインタフェースとともに、豊富なUNIX(R)基盤が取り入れられています。

178 :
OpenStepじゃなかったっけ?

179 :
>>171
事前にSTDOUT、STDERRをつぶして
おいたらどーなる?
ウインドウアプリで、そこに吐くと、
自動的に新規コンソールが開く、
とかだったような。

180 :
>>179
タスクのウィンドウが表示されなくなってうれしいものの、その他の
ウィンドウも一切表示されなくなりました ;_;
(D-SUB抜いて試しました)

181 :
一方、日本は...


瞳をとじた

182 :


そしてこのスレッドもクローズした

183 :
再開

184 :

  ∧∧
  ( ゚Д゚ )∩
 ⊂   ノ
  /  0
  し´
えっ…と、
ここかな…、と
 ∧∧ ∧∧
∩゚Д゚≡゚Д゚ )
`ヽ     |)
  | __ |〜
  ∪  ∪
      ドスッ
  ∧∧.ミ. _
  (   )┌┴┴┐
  /   つ.再開│
〜   ./ └┬┬┘
 ∪∪    ││_ε3
     ゛゛゛゛

185 :
最近のPerlでOOP用ライブラリってどんなのが主流ですか?

186 :
Mooseだろ?
最近のライブラリでそれ以外使ってるの有るのか?

187 :
ありがとうございますMoose調べてきます

188 :
Mooseが重いと思ったらMouseとAny::Mooseの組合せで代用もよし

189 :
最初から Mouse 使ったほうが

190 :
cpan でモジュールインストールしんたいんだけど
install やら make やら make install やら全部 OK
でたのに
perldoc -l インストールしたモジュール名
やるとそんなのないて怒られる。
なんで?

191 :
>>190
普通 perldoc -l DBI などは成功すると思うよ。
どうやって入れたの? モジュール名は?

192 :
>>191
cpan>install Math::Vector::Real
でいれて
全部 make やら make install やら全部 OK と出たが
ないようだった。
cpanplus でインストールしてみたらいけたのだが原因がわからない。

193 :
Regexp::Assembleでマッチした時って
後方参照使えるの?

194 :
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") と、マッチするものすべてを得たい場合、
どうすればよいでしょうか。


195 :
なんか面白そうなお題なのでとりあえず最悪くさいものを作ってみた
素晴らしい人がボロクソにけなしてくれると期待しつつ投げてみる
$str='ABCD';
{
my $tmp=$str;
while($tmp=~/AB|BC/){
push @a,$&;
$tmp = $&.$';
$tmp=~s/^.//;
}
}
print join' ',@a;

196 :
>>194
場当たり的に色々試していたら
@a = $str =~ /(?=(AB|BC))/g;
で、(AB,BC) が取得できました。
(?= で、次の走査開始点を移動させないようにしたから、でしょうか?

197 :
一過性のモダンPerlはもう終わり。
らくだ本の発行によって本来のPerlへの回帰が始まっている。

198 :
本来のPerl=5.0でも動く範囲でしかコード書かない

199 :
そういえばPerl5のスレってないね?やっぱりまだPerlの方が使われてるのかな?

200 :
モダンPerl書いたひとはどうしてるの?最近見ないけど、やっぱりだめなの?

201 :
まあソースをみて改良したりとか前向きな動機はほぼゼロで99.99%はこのメーカー
困らせてやれって開示請求なんだろうな。

202 :
モダンな奴はそもそもPerl使わないからな

203 :
USP(Universal Shell Programming)研究所は、UNIX/Linuxの基本思想である、
「小さな道具」(コマンド)を組み合わせて「問題を解決する」(シェルス
クリプト)手法の研究・普及を行っています。この開発手法(ユニケージ
開発手法)は、従来のウォーターフォール型開発や、オブジェクト指向言
語・データベースソフトを用いた開発手法と一線を画し、圧倒的な開発生産
性 圧倒的な柔軟性を特徴としています。
ttp://www.usp-lab.com/

204 :
本スレも、荒しに常駐されてぐだぐだだし、
WebProgの方も同じみたいに、スレ違いの会話が
ぐだぐだ続いて終了したし、終りかなあ。
ここのスレの方がまだ真面にperlの話をしてた気がするよ。

205 :
まあモダンには2つあって、ひとつはすぐに古くなるモダン。
もうひとつはいつまでも古くならないモダン。
おれは断然古くならないモダンのほうがいいな。

206 :
XSを使うと1年後に古くなるほうのモダンですか?

207 :
軟便スキー独りか知らんが、
韓国ネタのコピペしたり
hoge煽りしたり
ググれ煽りしたり
馬鹿じゃねーの?

208 :
そしてゆっくりモダンになっていく...
それが理想です

209 :
進歩というものは過去を捨てることではない。
過去に加えて積み上げるものなのだ。

210 :
荒しが950踏んで嬉々としてhoge禁止をテンプレに入れる姿が目に見える様だ

211 :
過去のソフトウェアと作法やインタフェースが異なる言い訳としてモダンと
いう用語を使うのはまずい。今までより苦労が増えるなら移行は進むはず
がない。

212 :
ところでこのスレが53箱目の続きってことでいいの?

213 :
すまん、53箱目の続きあった。“54目”になってたんで検索に引っかからなかったわ。

214 :
以下のように時刻と曜日が書かれたlogファイルがあります。
Jun 6 00:07:41 xxxxx
Aug 8 00:14:34 yyyyy
Aug 8 00:16:26 zzzzz

(以下略
現時刻から一時間前のログのみ抽出して、抽出したログの行数だけ出したいのですがこの処理って一行(ワンライナー)で書けますか?※重複とかは無視して単純に一時間分のログが引っこ抜ければ良いです。
詳しい人教えてください。

215 :
>>214
訂正
1時間前のログのみ抽出じゃ無くて一時間分のログを抽出です。


216 :
>>214
> この処理って一行(ワンライナー)で書けますか?
書けます。

217 :
>>216
やり方教えてください!
一時間前の日付時刻と現在の日付時刻を比較して条件を満たせば該当行を出力みたいなことをやれば良いとおもうんですが、どう書けば良いのかわかりません

218 :
横レス(別人)
$ perl -F'/[\s:]+/' -MTime::Local -lane 'BEGIN{ %m = map{uc $_, $i ++} qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);} next if ( time - timelocal @F[4,3,2,1], $m{uc $F[0]}, 2012 - 1900 ) > 3600 ; print ;' *txt
年は 2012 年を期待、 2013 年になったら知らん。
年跨ぎを念頭に入れるとなると log file の形式から作成しなおし。
win の人なら、シングルクォーテーションをダブルに
変えなきゃ動かんかも。
勉強したいのであれば、エポック秒、時間比較 perl あたりでググる。

219 :
>>218
あんた2012年の住人じゃないだろw

220 :
>>218
レスありがとうございます。
参考にさせてもらいます。
でも2013年以降も使えるのが理想ですが…

221 :
年跨ぎのケースを考え無くて良いなら、コードの2012を2013にすりゃいいだけ。

222 :
というより、「年」は全部今年として扱えばいい。
年が明けてから1時間はまともにログを拾えなくなるけど。
そもそもログデータに「年」の情報が入っていないんだから、
厳密に処理するのは無理だべ。

223 :
>>218に対して言ってるのなら、
最初からそれを念頭に書いてないか?
コードは既にそうなってるし、
説明文の方は質問者に向けたもんだし、
改造しやすいように除算は態々、2012 -1900 にして残してあるし。
それともtime関数に、年を除外するオプションでもあんの?

224 :
>>223
年が変わるごとに 2012 を 2013 だの 2014 だのに書き換えるの面倒だろうから
「年」のところはログの日付も現在の時間も全部localtimeの「今年」という前提で
扱えば毎年コード書き直さなくてもよくなるだろっていってるんだよボケ。

225 :
perl -F'/[\s:]+/' -MTime::Local -lane 'BEGIN{ %m = map{uc $_, $i ++} qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);} next if ( time - timelocal @F[4,3,2,1], $m{uc $F[0]}, ( localtime(time))[5] ) > 3600 ; print ;' *txt
こういう意味ねw、了解した。

226 :
で、試しに自分でも書いてみた。
LC_ALL=C perl -MTime::Piece -e '$lt=localtime;$ty=$lt->year;while(<>){next unless m/(\w+) +(\d+) +(\d+:\d+:\d+)/;$t=Time::Piece->strptime("$ty $1 $2 $3","%Y %b %d %H:%M:%S");$c++ if $lt-$t<3600}print "$c\n"' logfile
218の方がすっきりしてるか。なぜかうちの環境だとエラー吐いて動かなかったけど…。
(Day 'Jun' out of range 1..31 at -e line 1 て言われた)
LC_ALL=Cは環境によってはつけとかないとTime::Piece->strptime()がエラー吐くんで。
行数が知りたい、だったので行数出力にしたけど、該当行を全部出したいんだったら
$c++以降を print if $lt-$t<3600}' に置き換えれば218と同じ出力になる。
行数はwc使えばあとからでもわかるしね。

227 :
>>225
了解してくれてどうも。
俺の日本語がわかりにくかったのか…

228 :
>>226
> 218の方がすっきりしてるか。なぜかうちの環境だとエラー吐いて動かなかったけど…。
> (Day 'Jun' out of range 1..31 at -e line 1 て言われた)
なぜエラーが出たかわかった。自分でテスト用に切り出して作ったログファイルの
各行頭にスペースが入っていたからだった。(ありがち)

229 :
>>227
違う。料理の合間に、斜め読みでレスした俺が悪い。

230 :
perl -MTime::Piece -lE 'my $lt=localtime; my $ty=$lt->year ; while(<>){next unless m/(\w+) +(\d+) +(\d+:\d+:\d+)/;\
my $t=Time::Piece->strptime("$ty $1 $2 $3","%Y %b %d %H:%M:%S"); print q{#####} ; print ; print $lt ; print $t ; print $lt-$t }' log file
#####
Jun 6 00:07:41 xxxxx
Thu Aug 9 03:45:48 2012
Wed Jun 6 00:07:41 2012
5510287
#####
Aug 8 00:14:34 yyyyy
Thu Aug 9 03:45:48 2012
Wed Aug 8 00:14:34 2012
66674
#####
Aug 8 00:16:26 zzzzz
Thu Aug 9 03:45:48 2012
Wed Aug 8 00:16:26 2012
66562
#####
Aug 8 22:15:14 zzzzz
Thu Aug 9 03:45:48 2012
Wed Aug 8 22:15:14 2012
-12566
うちの環境だとTime::Pieceオブジェクトの除算が変だ。なんで?

231 :
>>230
あう〜。ホントだ。ウチでも同じだ。
Time::Piece->strptime()でTime::Pieceオブジェクトを作るとgmtimeベースになるっぽい。
ttp://digit.que.ne.jp/work/index.cgi?Perl%E3%83%A1%E3%83%A2%2FTime%3A%3APiece%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB
だから引き算の結果がTZのoffset分ずれるのか…。strptime()でlocaltimeベースにするには…
$ LC_ALL=C perl -MTime::Piece -lE '$lt=localtime;$ty=$lt->year;while(<>){next unless m/(\w+) +(\d+) +(\d+:\d+:\d+)/;\
$t=localtime Time::Piece->strptime("$ty $1 $2 $3","%Y %b %d %H:%M:%S")->epoch;$t-=$lt->tzoffset;\
say q{#####};say $lt," = ",$lt->[Time::Piece::c_islocal];say $t," = ",$t->[Time::Piece::c_islocal];say $lt-$t}' logfile
#####
Thu Aug 9 04:57:20 2012 = 1
Wed Jun 6 00:07:41 2012 = 1
5546979
#####
Thu Aug 9 04:57:20 2012 = 1
Wed Aug 8 00:14:34 2012 = 1
103366
#####
Thu Aug 9 04:57:20 2012 = 1
Wed Aug 8 00:16:26 2012 = 1
103254
#####
Thu Aug 9 04:57:20 2012 = 1
Wed Aug 8 19:20:14 2012 = 1
34626
(こんな時間に何をやっているんだか)
もしくはstrptime()の方をいじらずに、
$lt=localtime; → $lt=gmtime;$lt+=localtime->tzoffset;
か…。gmtimeベースになっちゃうけど引き算の結果は正しくなる。
という訳で、けっこういろいろとメンドくさいもんですね。

232 :
同じぐらいの長さのワンライナーなのに
>>218がダサくて>>226がスタイリッシュに見えるのはなぜだろう

233 :
レスくれた人ありがとうございます>>214です。
まだperlは入門書読み終わった程度なので右も左も分かりませんが、教えて頂いたコードを参考に色々書き方を研究したいと思います。

234 :
入門書読み終えたばかりの初心者には組込みのlocaltime関数を教えてあげないよ

235 :
>>234
なにが言いたいのかわからん

236 :
ほら、俺ってサ
意外にすいすいしいヤツ
だからサ

237 :
初心者には localtime の方が便利な件

238 :
>>234,>>237
既に>>225が提示してるだろ?
学習するかは質問者さんの勝手。
>>232
目医者行け。
266氏を晒す訳じゃないが、ワンライナにwhile(<>){}直接埋め込んでる時点で
スタイリッシュじゃない。
225に相当するコードをTime::Pieceで書いた場合、
perl -F'\s+' -MTime::Piece -lanE 'state $lt = localtime; next if $lt - localtime( Time::Piece->strptime((join " ", $lt->year,@F[0..2]),"%Y %b %d %H:%M:%S")) > 3600; say'
226に略
perl -F'\s+' -MTime::Piece -lanE 'state $lt = localtime; $c++ if $lt - localtime( Time::Piece->strptime((join " ", $lt->year,@F[0..2]),"%Y %b %d %H:%M:%S")) < 3600;}{ say $c'

239 :
>>238
おおうスタイリッシュ。
state とか使ったことなかったけど便利そうだな。参考にさせていただきます。
ワンライナーはあんまし書かないのもあってオプションも -i -n -p -e くらいしか
普段使ってなかったりしますんで。-E すら滅多に使わないな…。nもpもなしに
while(<>)埋め込むのもループの前後で処理が必要な時とかは普通にやってるし。
その程度のスキルでもとりあえず動くものは書けるってのがPerlのメリットでもあり
欠点でもあると…まあこの場合メリットということで。TMTOWTDI。(覚えづらいよなこれ)

240 :
なんで隔離スレで真面目に質問箱してんのよw
>>233
コード研究するんだったら、B::Deparseは必須。
% perl -MO=Deparse -lane '}{ print $.'
BEGIN { $/ = "\n"; $\ = "\n"; }
LINE: while (defined($_ = <ARGV>)) {
 chomp $_;
 our(@F) = split(' ', $_, 0);
}
{
 print $.;
}
-e syntax OK
調べたいコードのオプションの先頭に、-MO=Deparseくっつけるだけ。

それにしても、バルサン炊いたみたいに、人がいなくなったな本スレと初心者スレ。
実際の所は、ハイエナが肉に夢中になってるだけだろうけど。

241 :
初めてのPerl第6版とPerl5.16.1のことだね。
Unicodeサポートの問題に今頃気づいたって読める。
第5版のときはまだ気づいていなかったのかな?
まあ、そんときは使ってなかったんだろうけどな。

242 :
今上天皇侮辱発言の祭りが落ち着いたから、戻って来たぞゴキブリ。
でも、まあ、5割くらい減ったんじゃねーかな?

243 :
バルサン耐性を備えて5割以上パワーあっぷぷぷw

244 :
ゆっくりモダンになっていく・・・


・・・モダンRuby。

245 :
モダンPERL追いかけてたら時代に取り残されましたとほほ

246 :
>>245
その最後の「とほほ」だけで、もう10年以上は時代に取り残されてるよな

247 :
とほほだってよw
もうお前5.6こそ最高とかいって周りに強要してろよ

248 :
5.6だと日本語がちゃんと使えません。仕事で使うなら5.005一択です。

249 :
どうやらモダンパールは時代遅れみたいですね
本家のパールはすでにその先に進んでます
テキスト処理90%のPerlが文字列を楽に扱えないなんてたちの悪い冗談でしか
ありません

250 :
C++へのアンチテーゼの側面もあったPerlなのにモダンPerlはどうしちゃったのかな

251 :
テクノロジーはスクラップアンドビルドなものと考える連中はとほほの内容が
古いと考えるようだ

252 :
かってに「モダン」とか名乗るなや

253 :
モダンでもないのにモダン名乗られてもなあ

254 :
リャマ本第6版までモダンに毒されてるよ
おまいらリャマ本は第1版こそ至高・正義だ
定価より高くても中古で第1版を買え!

255 :
第1版ってのはバージョン4のピンク本のことか?あれは本当にいい本

256 :
ダヨモンPerl
アリャマ本

257 :
赤らくだ本だとか赤リャマ本の序文、それにポケットリファレンスの序文でLarryはふざけ過ぎてしばらくの間O'reillyから干されていた。今回「まじめに書く」と誓ったためようやく第4版の執筆許可が下りたらしい。

258 :
結局らくだ本的にはモダンPerl(=perl5.8)はスルーってことか
最近は重いモジュールも避けられる傾向にあるしな

259 :
重いモジュールも避けられる傾向にあるしな(キリッ
とか言う奴は十中八九List::Utilとかを使わない

260 :
実際に書かせてみればろくなコード書かないんだろうな

261 :
モダンperlと言われているもののうち一部の重たいモジュールを持ち出して
重たいモジュールは避ける傾向にあるからモダンperlも避ける傾向だよねー
なんてどんな詭弁だよ

262 :
確かにLarryはモダンPerlについて多くを語ろうとしないな
きっと軽いスクリプトが好きなんだろうなList::Utilとか使わない

263 :
List::UtilはXSで書かれてるから自分でPerlで書くよりよっぽど高速なわけだが
てかとってつけたようにLarry様の名前出すなよw

264 :
GUIやバイナリファイル扱うときにXSを使って効率を上げるのは分かるが
そうでないときにXS使ってスクリプトの利便性を下げるのは簡便だな。

265 :
勘弁

266 :
>>264
なぜ利便性が下がる?

267 :
第1ヒント:テキスト萌えたんのポータビリティ強化月間

268 :
「スクリプトが何かよく分かっていない」と書いたはらたいらに3,000点。

269 :
バイナリではないところがスクリプトの利便性って分かるかな?無理かな?

270 :
利便性の優先度
作る人の利便性 <<< 使う人の利便性

271 :
中身が古いか新しいかは使う人の利便性に影響はしないけどね

272 :
結局モダンかどうかは気持ちの問題だし、供給者側の主張次第でしょ
利用者側にとってはちゃんと使えればどうでもいいよそんなもん

273 :
モダンパールは単なる自己満足であったか
そもそも書いたときはモダンでも後で読むときはモダンではないわな
モダンと言われると互換性がないんじゃないかと思って警戒するひとも
いるかもしれないしな

274 :
use strict;
use Encode;

275 :
Perl 6は、ポストモダンですか

276 :
バイナリでの文字列置換をしています
$str =~ s/\xFF/\x00/g;
という書き方ならうまく行くのに、
$src = '\xFF';
$dst = '\x00';
$str =~ s/$src/$dst/g;
ではうまく行きません
$srcの部分は思い通り検索できるのに、
$dstの部分はバイナリではなく \x00 という文字列に置換されます
どうすればいいですか

277 :
$dst = "\x00";

278 :
確かにそういうことなのですが、
何故$dstという変数を使うかというと、その中身が不定だからです
$dst に '00' とか '01' とかいろんな文字列が入った場合の置換の書き方はありませんか
とりあえず、pack("C", hex($dst)) と書いて eオプションで評価すれば
うまく行くのは確認したのですが、$srcみたいなスマートな書き方はできないものかと

279 :
packするのが一番マシじゃないだろうか
ただ置換内ではなくその直前に追い出したいけど

280 :
後半が文字列で表現されている時に、
それをテキストとして見ていいのかバイナリとして見ていいのか、
両方の解釈が有り得るのが問題なんだな
書いたままだよ、というルールで統一されていれば納得するものを、
コードに埋め込んだ時はバイナリだけど、変数が来たら文字列、という解釈をして、
しかも、置換の前半部分は変数でもバイナリとするR文法
逆に前半を文字列として認識させたい時はどうするんだろう

281 :
すみません、何がなんだか分からないのでゆっくりと、そして複数の質問で
あるのなら分割して1つずつ質問してもらっていいですか?
中卒なんで

282 :
eval "" と eval {} と /e で解決しそうに読めるんですけど

283 :
よくある
$str =~ s/%([a-zA-z0-9]{2})/pack("C", hex($1))/eg;
こんな置換を、packやらhexやら使わずに書いてみそ
という問題

284 :
>>276
> バイナリでの文字列置換をしています
{
  no utf8;
  $str =~ s/\xFF/\x00/g;
}

285 :
eval qq{ \$str =~ s/\\Q$src\\E/$dst/g };

286 :
どうやってもスマートじゃないな
前半も後半も素直にpackしておくのが一番分かり易い
なまじ前半に書けてしまうのがおかしい

287 :
文字列とバイナリを区別する時点から問題が発生していると思うので、
区別しなければ解決するのだと思う

288 :
楽になるために区別するのならよいわけだけど、
区別したがゆえに苦労するのであれば、区別しなければ苦労はない。
過去にとらわれるのはもうやめです。進歩しませんよ。

289 :
どっちに解釈するか文脈で判断、ということをperlはあちこちでやっていて、
それは多くの場合正しいので表面化しないけど、
こんな風に不合理を露呈する場合もある

290 :
プログラムはテキスト、処理するデータはバイナリ
 対
プログラムはバイナリ、処理するデータはテキスト
深い質問だな、これは

291 :
Win7上で、Strawberry Perl と SQL Server2008 を使用して開発をしています。
DBD::ODBCでDBにアクセスをして、データを操作しています。
質問
・DBIでSQL Serverのデータベースにconnectを作成し、あるキーとなる情報を取得するSQLを
 prepare、execute、fetchrow_arrayを使用して取得し、取得したキーをもとに別なSQLを作成し、
 実行しようとしましたが、「接続がビジーです」といった内容のエラーが返ってきます。
 fetchrow_arrayでデータを参照しつつ、同一のデータベースから同じようにデータを取得する
 ことはできないのでしょうか?
 
何か情報がありましたら、教えてください。
よろしくお願いいたします。

292 :
2つのSQL文をひとつにまとめるのが正攻法に思えるが「参照しつつ」をやめて「参照し終わってから」にすればいいんじゃないかと言ってみた。

293 :
SQL文を相関副問い合わせを使って書き直す

294 :
Strawberry Perlは「接続がビジーです」に関わっていない件

295 :
プログラムはテキスト(簡便)、処理するデータはバイナリ(簡便)
プログラムはバイナリ(勘弁)、処理するデータはテキスト(勘弁)

296 :
$str = 'aaa[bbb[c]ddd]eee';
$str =~ s/\[.+?\]//;
こんな感じにした時に
aaa[bbbddd]eee
になって欲しい
gを付けたら、
aaaeee
になって欲しい
うまい書き方はありますか

297 :
>>296
s/\[.{1}\]//;
オプションつけて最長マッチとかってあるのか?

298 :
中身が固定だと判ってるなら\[c\]でいいんだけどね

299 :
$str = 'aaa[bbb[c]ddd]eee';
$str =~ s/\[[^\[\]]+?\]//;
print "($str)\n";
# /g とは違うけど
$str = 'aaa[bbb[c]ddd]eee';
while($str =~ s/\[[^\[\]]+?\]//){}
print "($str)\n";

300 :
スカラーで置換した数を返す、という仕様は
whileで使ってくれと言ってるようなもんだな

301 :
>>292-293
ありがごうございます。
ただすみません、自分の書き方も悪かったのですが・・・
取得した情報で、その後の処理を変更しています。
そのため、発行するSQLもselectだけでなく、insert,update,deleteなどもあり、
単純にSELECTを見直すというわけにもいかず。

302 :
複数のアクティブな結果セット (MARS) の使用
http://msdn.microsoft.com/ja-jp/library/ms131686.aspx

303 :
>>302
ありがとうございます。
こんなものがあったんですね。知らなかったです。

304 :
Perlのこと聞きたかったら、いつでもこのモダンPerlスレに来な

305 :
モダン焼きは四角く切るのと放射状に切るのとどっちがいい?

306 :
おRお切ってしまえ

307 :
たこ焼き器で作るとひと口サイズなので切らなくともよい。

308 :
私女だけどひと口サイズのおRは勘弁

309 :
切り方変えても味は変わらないのでそのままかぶりつく

310 :
結局一過性のモダンポールか、青臭いな

311 :
少数のエリートが良かれと思っても多数派の一般民が取り入れないと意味がない
ひとがプログラミングする訳だから、フィーリングを大事にしないとだめだな

312 :
開発効率のことだけで言うと
モダンPerlの方が効率がいいね。

313 :
俺が好きなのはポストモダンPerlだな

314 :
ああ、アレね、アレのことね

315 :
Time::Pieceの実験用モルモットになるよりlocaltimeをツールとして安心して使うタイプか

316 :
モジュールに一切頼らないスタイルこそが正義

317 :
お前の顔はモダンアートの醜さだ!

318 :
もうPerlは5.16の時代ですよ。
5.12とそれより前はサポート終了しました。
10年前のPerlのことなんか、
考える必要ないんですよ。

319 :
5.6とか使いたい奴は自分らで勝手に使ってたらいい
ただし5.6を他人に強要したり、5.6向けに書いた古臭いスクリプトを他人に押し付けて保守させたりするな

320 :
>>319
いやなことあったの?

321 :
>>320
主にこのスレでねw

322 :
とにかくコードが手元の環境で動くのが正義
そして長期間に渡るメンテが可能で楽なのが正義
localtimeは標準モジュールより格上の標準関数
ポータブルPerlこそがこの世の正義
319による保守は誰も期待していない

323 :
>>321
無理して見なくていいぞ

324 :
ポータブルPerlって
Perlのバージョンはなんだ?
言ってみろよwおらおらw

325 :
>>322
> とにかくコードが手元の環境で動くのが正義
> ポータブルPerlこそがこの世の正義
矛盾してる

326 :
>>322
> ポータブルPerlこそがこの世の正義
つまり手元の環境で動きさえすればいいってもんじゃないってか?

327 :
>>322
> localtimeは標準モジュールより格上の標準関数
格上わろす

328 :
手元にたくさんあるんだろ、モルモット君。

329 :
localtime()は、Cにもあるよ

330 :
うるさいゴミ

331 :
リストコンテキストとスカラーコンテキストの違いとか printf とかはモダン
うんぬんの前に知らないとだめだろ。
モダンなゆとり世代。壮大な実験に付き合わされたモルモット。かわいそす

332 :
刹那的なモダンPerlでは自分が書いたスクリプトを数十年に渡って保守する
ことは不可能と悟り本来のPerlに戻ってくる。で、localtimeで書く。

333 :
>>332
perl本体に組み込まれた関数が何十年後も互換を維持してるとは思えないがな

334 :
寿命が6〜8年のモルモットの推測が当たるとは思えないがな

335 :
数十年後も使い続ける物はCで書いとけよ。
Perl5自体、メンテされてるかどうか分からんぞ。

336 :
mooseとか使いまくってる俺が通りますよ
早くPerl6出ないな〜

337 :
Cで書いたら実行環境の違いを記述するコードでアプリケーションが
埋め尽くされるんだろーなー

338 :
>337
Linuxのソース見たけど、
一部の層で吸収しているから
ほとんどのコードは実行環境の違いなんて関係ないよ。
ま、お前にはそんな芸当出来ないだろうがな。がはははははwwww

339 :
ゆとりだからLinuxしか習わなかったんだよね?かわいそす

340 :
「Linuxしか習わなかった」と判断した理由を書いてください。
ゆとりの脳内はよくわかりませんのでw
あ、書かなくても(逃げても)構いませんよwww

341 :
書いてもいいんだけど、Linuxのソースが、Linux以外のオペレーティング
システム上でperlを実行したときの実行環境の違いを吸収できると考えて
いるひとには理解できなそう

342 :
たぶん、無理だろうね。かわいそす

343 :
やっぱゆとりだったかw
実行環境の違いなんてそれを埋めるレイヤーに固めるから
アプリケーションがそんなコードで埋まることはないってのが
一番の趣旨だろ。
こういう作り方ってのは普通にやることだし、そんなことが
思いつかないってのは自分でやったことがないってことw
そこからこのセリフにつながる
ま、お前にはそんな芸当出来ないだろうがな。がはははははwwww

344 :
>>343
意味不明

345 :
意訳 馬鹿だから理解できないw

346 :
興奮してるのか脳に障害があるのか分からないが
文章が無茶苦茶だな

347 :
たぶんではなくて完全に無理です。コンテキストの理解を求める俺のほうが
完全に悪かったです。printf も覚えようとしなくて結構です。
どうもすみませんでした。

348 :
モダンPerlが脳障■者を集めるのか、脳障■者がモダンPerlを好むのか
これって日本だけの現象なの?モダンRubyとかも同じ状況なの?

349 :
いいから黙ってろって

350 :
>>343
> こういう作り方ってのは普通にやることだし、そんなことが
> 思いつかないってのは自分でやったことがないってことw
>
> そこからこのセリフにつながる
罵倒を目的とした文章で代名詞の頻度が上がるのは、脳に良くない変化が起きていることを現すから気をつけた方がいい。

351 :
じいさんがボケ始めた頃「あれ取って」が増えたのと同じか?

352 :
>>350
> 罵倒を目的とした文章で代名詞の頻度が上がるのは、脳に良くない変化が起きていることを現すから気をつけた方がいい。
そんなデータはありませんwww
大丈夫?

353 :
ボケ老人風文体わろす

354 :
実行環境の制約(機器であったり、OSであったり、その会社の規則だったり)で
ポータブルなスクリプトを書かなければならないことはあるだろうけど、
制約によってモダンPerlで書かなければならないってことは現実にあるんだろ
うか?
その前にポータブルなスクリプトとレガシーなスクリプトの違いはちゃんと
理解できているのだろうか?
モダンPerlは結局のところ単なる自己満足なのだろうか?回答を求む。

355 :
> ポータブルなスクリプトを書かなければならないことはあるだろうけど
お前のポータブルの意味って何?
新しいPerlを入れればいいだけだろ。
お前が言ってるのは、ポータブルなスクリプトを書く。ではなく
古いPerlにも対応したスクリプトを書くって話。
ポータブルとは関係ない。

356 :
古いPerlって、どれくらい前のPerlの事を言ってるの?
CPANライブラリが動かないような古いPerlも視野に入れて開発しないといけないの?
どうして、そんな古いPerlに固執してるの?バージョンアップできないの?
正直モダンPerlって呼ばれてるような書き方をしてはいけないなんて制約がある方が特殊すぎ

357 :
自分の書くプログラムのスタイルなら、モダンだろうとクラシックだろうと好きに書けばよい。
でも、モダンPerl!モダン!モダン!って言う連中って、CPANとかのライブラリを使って書くことを
モダンだと言ってることが多い。
ライブラリを自分で抱えるのでなく、システムに入れろっていうのは横暴だし無理だろう。
すでに作られているシステムに、あとからCPANライブラリを追加したら、
既存のPerlスクリプト全ての再検証必要となるからね

358 :
どんなモジュール追加したらそんな大げさなことになるんだよ。

359 :
今のモダンPerlの世界は
perlbrew + cpanminus + local::lib を使って
システムに入れずに最新Perlを使うのです。

360 :
『はじめてのPerl』にlocal::libとcpanmが出てくる時代になりました。

361 :2012/10/31
書いたときにモダンなのは当たり前だろう
モダン推しは時間軸の視点が抜け落ちているんだな
TOP カテ一覧 スレ一覧 2ch元 削除依頼
プログラム板 自治スレッド Part5 (782)
Androidアプリ制作依頼スレ (618)
iPhone iPad iOSプログラミング Part1 (541)
Eclipse統合M33【Java/C++/Ruby/Python/Scala】 (495)
雑談スレ 4 (777)
OpenMPプログラミング (388)
--log9.info------------------
EPSON PX-1001 PX-101 PX-201 EP-301 (212)
【複合機】Canon PIXUS MX850【ADF】 (668)
【EPSON】 PM-T960 【複合機】 (523)
Canon imageFORMULA 総合スレ (787)
今時インクジェット使ってるやつは貧乏人 (463)
インク高すぎ (547)
◎DVD/CDラベル印刷に適したプリンタ 2枚目◎ (863)
【赤線】EPSON PM-870/890C【青線】 Part3 (461)
エプソンPM-3000C作った香具師はR (440)
プリントサーバー総合スレ (265)
【EPSON】 PM-4000PX Part6 (969)
まだSHARPのプリンタ使ってる人いる? (270)
資源有効活用、ハードオフで見たプリンター (797)
エプソンのインクは40%使っただけでインク切れ (591)
【HP・Lex】インクジェット修理スレ 【貧乏・マニヤ】 (562)
【MAXART】 PX-5500 4台目 【玄人専用】 (265)
--log55.com------------------
【長谷川=不細工=亮太】新都社 読み専スレ 369
【鋼の錬金術師】荒川弘アンチスレ86【銀の匙】
ヤンキー漫画あるある
ろくでなしBLUES強さ議論スレ【ろくブル】
真面目に腐女子に質問しようか 44談義目
■スクリプト荒らしを呪うスレ 4■
【北斗の拳】北斗サーガ総合スレ【蒼天の拳】
ワールドトリガー愚痴スレPart48