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辺り
1レスで理解できるutf8フラグ
utf8フラグとい名前がまずかったね。
文字列フラグなどという名前だったらよかった。
文字列フラグはPerl固有のものだから
Perlコード外部から渡されるのは文字列ではない。
文字列でなかったらなにか?それはバイナリ。
バイナリを文字として扱いたければ、文字に変換しないといけない。
それがdecode。
ではソースコードに書いてあるのは、文字かバイナリか。
それはuse utf8を使えば文字で、そうでない場合はバイナリ。
話はこれだけ。
あのー、重複スレってことないですか?
はてなキーワード > モダン
ttp://d.hatena.ne.jp/keyword/%A5%E2%A5%C0%A5%F3 書いているひとは 1. の意味で書いていそうだけど、読む人は(書いた時期
を考慮して) 2. や 3. の意味で解釈している。
よく印刷した資料に「最新版」とか書くひとがいるけどそれと似てるのかも
しれない。たくさんの最新版のうちどれが最新版なのか分からなくなる。
この場合の正解は版数を書くこと。
モダンの場合は、個別の技術の名称を書くことに相当する。
そうしないと「えっ?いまどきモダンPerl使ってるのかよ、お前w」なんて
ことになる。
個別の技術は是々非々で議論しましょう。
現状は、モダンという名のせいで盥水とともに赤子を流してしまっています。
モダンPerlと呼ばれているものは、過去の一時期のスタイルと結びついていて
今はもう使われていない。一方、レガシーPerlと呼ばれているものは現在でも
利用されていて、その名とうらはらに全くレガシーな気がしない。
思うにこれらの名称は、実態を正確に示していない点で失敗だと思う。
そういえば、モダンRubyやレガシーRubyという言葉は聞いたことがない。
名前重要っていうのは本当なんだな。
ルビーはバージョン毎に違うからなあ
新旧をバージョン番号以外で呼ぶ事は今後もないんだろう
83JISは新JISですね。わかります。
2012年なんだから、そろそろ新JISキーボード使おうよってスレですね。
わかります。
問題を解決する方法がモダンかどうか、誰もこだわっていない件
今はポストモダンの時代
何がどうなるの?教えて、教えて
結局、モダンって何だったの?
本を売りたかったとか、会社作ってみたとか、そういうことなの?
失敗だったの?
もうモダンには会えないの?
_ , 、
r‐v'´ ̄ `~ く
_. 7,‐、 r‐、 ヽ だったら Perlのはじめて を
(._ ^ヽ|{ 0 _l 0ノ i
ヽ (´ ̄ `_, ヶ ノ 見に行こうよ
`、`ー-ヾ._.// )
/ (_.ノV^) 「クルクルバビンチョパペッピポ、イア!イア!ハスターの
i _ 「
L_ _/ \_ _.ノ
19 :
デフォルトの名無しさん:2012/02/09(木) 22:43:43.29
「モダン、ここはどこ?」
ネタが古い
ここはね、パークハイアット東京。
The Perl Confernce Japan の会場だょ。
まもなく、まつもとゆきひろさんのRubyのセッションが始まるょ。
(コーヒーがおいしいょ。)
ワンライナー [ 一行野郎 OneLiner ]
書き込みテスト
結局、モダンPerlって何だったんですかね?
Perlの長所であり短所であるTMTOWTDIによるコードの難読化を共通ルールっぽいテンプレで改善しようという風潮
変なこと考えるより、ポータブルCみたいにポータブルPerlで書けばいいと
思うんでそうしてる。書きやすいし読みやすい、おまけに長期的に保守
できる。これもTMTOWTDIのひとつの形態。
長期的に保守できる=いつまでもモダン。
>>28 動いているものに手を入れるな。
手を入れるときは該当箇所にだけ入れろ
決して他の部分をいじるな。
ほとんど同じ処理でも既存の部分を
修正するなコピペして作れ。
これこそモダン
気が合いそうですね
モダンが嫌いな人って、新しいものが嫌い。
だからデザインパターンもリファクタリングも
アジャイルも嫌い
そう捉えてるとするならば、ちゃんとコトを理解できていない
Perlの評価の8割はCPANだよね
Rubyの評価の8割はRailsだよね
残りの2割はPerl4ですか
Perl4はマイナス評価だよ。
加えてPerl6もマイナス評価だからPerlはPerl5が支えているといっても寝言ではない
「モダンPerl」の"モダン"はあさってな方向に行ってしまっているので、
一般的な単語のモダンとは意味が違っている。だから
>>31の言っている
ことは間違い。
38 :
デフォルトの名無しさん:2012/03/02(金) 09:42:04.91
>>35 うそつけ。このスレを潰そうとする連中はみんなPerl4時代のコードしか書かないじゃんか。
Perl4も現役で使われているのでモダンですよ。
モダンではないのは(らくだ本が出版されていなかった)Perl3以前ですよ。
もちろん異論はありませんね?
現役でサポートされてるディストリで
Perl4が入っているものを教えて下さいよw
5.8が出てから今年で10年。
それより前は昔の実装でおk。
こうして世界は騙された!!
ディストリインストールできる人はPerlもインストールできるんじゃね?
まさかオマイラ、ディストリ付属のperlをそのまま使ってる、なんてことないよな?
>>45 押すなよ絶対押すなよみたいな言い方ですね。
つまり、それらは便利ってことですね!
>>45 root管理のパッケージと混ぜないために、cpanmやlocal::libを使うのよ。
ユーザ権限でユーザ領域に突っ込めるから、バックアップも楽だし、
いらなくなったらユーザごと消せばいいし。
Perl自体は、特に必要ない限り、システム付属使ってるけど。
ユーザが移行するのは、今までよりも分かりやすいもの、使いやすいもの。
今までよりも新しいもの、多機能なもの、ではない。
モダンなものってたいがいわかりやすくて
使いやすくなってるよね。
Time::Pieceとか。
でもそうじゃないから、"モダン"っていうラベルを付けて強引に勧めて
いるんだね。分かりやすかったら、使いやすかったら、ほっておいても
自然に使われるだろうから、わざわざ無理強いする必要はないもんね。
> 分かりやすかったら、使いやすかったら、ほっておいても
> 自然に使われるだろうから
それじゃ時間がかかりすぎる。
ようはオールドタイプはさっさと消えろってこと。
ネットの古い情報もさっさと消えて欲しいし、
今頃古いやり方を教えるやつもさっさと消えて欲しい。
だから俺は古いやり方を教えている奴を見つけたら
今はこうやる。こっちのほうがもっと簡単だと
情報を広めている。
新しいけど使いづらいって、自分で言っているようなもんだな
面倒なやつは無視が一番。
CPANをすべてRubyが補完してくれたらどんなにいいだろう。
end
end
end
end
あぁ、終わりだもうだめだぁ
まあモダンなPerlを知らなければ、
Perl使いとみなせない時代にはなってるよね。
もちろん情報は日々取得してるから知られてはいるんだろうけど、
使いやすくなかったらいつまでたっても使われることはないよね。
使われてるけどね。
Perlで作られてる他のプロジェクト見たこと有る?
(昔に作られて放置されてるのは除く)
Jcodeとか海外じゃ全く使われてないから。
確かに Time::Piece 以外は見たことがないね
>>58 海外で使われていないと、自分が日本語を処理するときに使っちゃいけないの?
日本では使ってもいいんでしょ?
そもそもモダンっていうのは禁止して不便にすることなの?
それにJcodeはオブジェクト指向なんだし十分モダンだと思うけどな
モダンPerlでいうところの"モダン"は、
1.リリース時期のことをいっているのか
2.実装手法のことをいっているのか
3.はたまたインタフェースのことをいっているのか
ところで、インタフェースっていうのは
a.新しければ新しいほど好ましいのか
b.古ければ古いほど好ましいのか
このあたりの見解が一致しないと、具体的なモノがモダンなのか
そうでないのかが変ってしまうし「これはモダンだ」と言ったか
らって、そのものに価値があるのか無いのかは別問題になる
1.がモダンでも2.がモダンでも利用者にとって関係なく、単に供給側
の自己満足になってしまう。3.のことだとすると新しいもの好きはa.で、
人柱をかってでることになるわけで、そうでないならb.で問題ない。
>>62 Rubyはモダンだ。
そこからいえばRubyに近いことを
Perlでやるのがモダンだ。
モダンの定義は分かったけど、それ価値あんの?
あるよ。
開発速度が上がった。
少ないコードで、今まで以上のことができる。
なにより、プログラミング一般とPerlに関して
深い知識を手に入れられたのがいいね。
オブジェクト指向言語、関数型言語、
継承。ポリモーフィズム。mixin、
アスペクト指向、O/Rマッパー
フレームワーク、MVC・・・etc
Perlだけじゃ、世界が狭いからほかの言語をやるといい。
そうして戻ってくると、自然とモダンPerlな体になってるよ。
考え方が間違っていたかもしれない。
モダンPerlとは、Perlがモダンなのではなく
プログラマ的にモダンな開発手法、
それをPerlに取り入れたものではないのか?
よくよく考えたら、最近はやりのほかの言語の機能を
PerlでやれるようにしたがモダンPerlなモジュールではないだろうか。
モダンPerlはアンチPerlなのか...
それでPerl原理主義者の抵抗にあっているという構図か
ニーズにマッチしないモダンならいらないよ。
便利ならそれでよくて、モダンという線引きは要らないってことでおk?
お好み焼きとの違いがいまだに覚えられない
どうにも架空臭がするモダンPerlだが最近ますますそう感じている。
(モダンPerlを構成するといわれる)個別の要素の議論で十分だと思う。
ひと括りにしてしまうせいで大事なものまで一緒に捨てられてしまう。
モダンPerlではなく、
Perlでモダンプログラミングといえば、
面白いように情報弱者が落ちていく。
モダンっていう言い方が古臭い
トレンディPerl
単に"モダンPerl"と言いたいだけにしか思えない
Perlのリリースが予定通りじゃなかったり、らくだ本の改版に10年もかかっ
たりするからって、無理して話題を作る必要はない
5.14.3がリリースされない今はらくだフォーでつなぐのが吉
普通にPerl5を使えばいいだけ。
Perlのオブジェクト指向はどう考えてもいびつでおかしいのに
それを主張しても理解できない人の戯言にされてしまう。
お好み焼きは食えるけど、モダンPerlは食えないね。
>>73 人間としての品位を疑われるぞ
社会に適合してないんじゃなイカ?
らくだフォア
モダンはとおくに
なりにけり
>>78 Perlのオブジェクト指向はいびつ
↓
じゃあいびつじゃない形にしましょう。それができるのがPerlの凄さだ
↓
そうやってできたもの=モダンPerl
>>78 お前はPerlを使いこなせてないだけ。
またそんな青くさいこといちゃって、このフォーティーンめ
モダン推奨者は自分が社会に適合しようとするんじゃなくて、社会を
自分に適合させようとしている。
結果、当然うまくいかなくて挫折する。
その繰り返し。
>>85 そうそう。
CPANモジュールで楽せず全て一から自分でコードを書くのが社会の常識だからね。
モダン、モダンとか言って周りに合わせられないのは単に能力がないだけでしょ
>>87 ねぇ。
自分でコードかけないからCPANモジュールなんぞ入れようとするんだよ。
ググって何も出なかったら「ありません。」で終わりだもの、今のひとは。
>>89 ばかばかしいよね。
何も出なかったら自分で書けよ、と。
>>87 モダン、モダン言わなくても、周りに合わせられなければ、単に能力がないだけ。
つまり、モダンプログラミングと、周りに合わせられない事は別問題。
>>90 そこは迷うところだな。別の手を考えるか、そのまま自分で実装するか。
ある意味チャンスだ。
別の手ってYahoo!か?
質問箱よりOKWaveがお勧め。
どうやってCPAN使いこなせるようになるんだよ…。
今までのインタフェースで実装できなくてだめだめなのをモダンPerlとか
言って取繕ってるだけでしょ
perl6のコンセプトを先取りしてるものではないの?
新しい手法・置き換えるモジュールがあれば、それを採用しましょうってのがモダンPerl。
Fatalプラグマよりautodieプラグマ。
switch,caseよりgiven,when。
evalとif($@)よりTry::Tiny。
という感じ。
置き換えられないモジュールを置き換えようとするのは多分違う。
モダンPerlは無駄なもの
なぜなら業界歴20年の俺が理解できなかったからだ
そこから役に立たないものだと結論づけた
新しいことについていけない老害の人って。。。
プログラムはプログラマだけのものじゃなくて、依頼者や使用者のものでも
あって、依頼者視点での保守、使用者視点での保守をしていかないとならない。
その場限りのソフトウェアならモダンPerlでも構わないかもしれないが、
保守するのであれば、流行で作ったものは時間が経つと「変な髪形」になっ
てしまう。それが分かってないのは、おまいのしりが青い証拠だ。
じゃあPerl使うなってことになるな。
一番人を集められるのはJavaかPHPだよね。
>>106 受託ってやつ?
ウェブサービス作ってるんじゃないの?
俺にとってプログラムは自社のもので、自分たちが
開発しやすいように最善の方法を目指してるんだけどさ、
客に足を引っ張られるのって、ちょっと可哀想に思う。
>>106 そういう時はバージョンと使用するライブラリを指定すればいいんだよ。
依頼者は何も指定しなかった場合、
古いPerllで作ろう。
それが依頼者のためになるんだ。
当然4.036よりもさらに前だよな?
>>106 客が要求するのがモダンではないと決めてかかってる。
客がモダンを要求したらどうするつもりだ?
単にお前は、モダンPerlが書けないだけ。
逆になんでモダンにこだわるの?変なとこにこだわって成果がでないんじゃ
本末転倒じゃないの?成果とモダンとどっちが優先なの?
>>113 単におまいはモダンっていいたいだけちゃうんか
この青尻め
>>115 モダンを諦めれば、成果が出るとでも思ってるの?
むしろ、モダンを使う=成果が出る
なんだが。
一旦モダンって名前を頭から消して普通にPerlコードを書かせてみるとする
そいつのコードがKENTみたいなやつだとして、それが他の人が誰でも保守できるようなシロモノになるとは到底思えない
>>117 そんなこと言ってないだろ、どこを読んでんだ?青尻くん
とうとうホモスレになったのか
青尻くんとこは結構自由みたいだけど、個人事業主なの?
これまでの積み重ねがないと例えば会社が終わりになったときに技術的にも
全てを失うことになるよ。
モダンなんかやってて技術の積み重ねになるわけがない。
わざわざ不便なものを選んで苦しむのが積み重ねか
古いんだよそんなスポ根的発想は!
青尻くんは、プログラムは実現したいこととその解決方法の両方を記述する
ためのものだってこと、ちゃんと理解してるの?そうか、してないのかまだ
青いのか。
126 :
デフォルトの名無しさん:2012/03/20(火) 23:19:46.15
普通にわかれよ。
モダンperlがいいものだとしたら普通に普及する。
駄目なもので無理やり普及させたいのには訳がある。
本や講演などで稼ぎたい人もいるってこった。
それには付き合えないけどね。
> モダンperlがいいものだとしたら普通に普及する。
実際に普及してるよな。
半径5m以内の、CPANモジュールも使えない環境を見て言ってるんだろうな。
そうだな。青尻くんが青筋立ててキーキーいう必要はないはずだよな?
ステマってやつだな
かわいいの♪ステマつげるぅ〜♪
いーないーな♪それいいなぁー♪
つげるタイプの魔法だょ〜♪
ステルスマーケティング用語か。個々の技術とまったく関係ない話だな。
要は互換性のなさをごまかそうとしているんだな。ばればれだぞw
>>118 で、きみの書いた誰でも保守できるようなコードはどこにあるの?
長期に渡る保守が予想されるソフトウェアは一時期の流行に合わせて
書くのではなく、将来を見据えた記述をするのが正解。
意固地に10年前の書き方を押し付ける必要はない
今使える書き方と今使えるモジュールで書けばいい
今使えない書き方で書けと読めてるお前がおかしい
ワンライナーや売り切り逃げ切りのソフトならお好きにどうぞ
モダンは互換性がないのと将来のメンテナンスが不安なのが弱点か。
モダンゆえに時間軸の過去も未来もだめってことか。それは困る。
お花を大切に
>>138 >互換性がない
何と?
>将来のメンテナンスが不安
将来のメンテナンスを考えると何を使えばいいの?
素のPerlや標準モジュールが思いつかないあたり、いい、すごくいいよ、
青尻くん。だんだん気に入ってきた。
がんばって標準モジュールを列記してみたものの、やっぱり素のPerlは
思いつかないところ、青尻くん、すばらしい。すごくいい。
「モダンPerl使いなのでlocaltimeは使えません。」キリッ
職場で一度言ってみたい。。。試用期間で終わるだろうけどw
>>143 localtimeは、Time::Pieceで使うよw
標準モジュールのTime::Pieceが素のPerlを拡張してくれるのに、
今更配列のインデックスで年取得して+1900とかする
冗長なコード書くバカいるのかい?
>>143 お前がTime::Piece知らないってのが
モロバレだなw
はい、このように、モダンPerlを嫌ってる人=無知なだけ
ってことなのです。
> 素のPerlや標準モジュールが思いつかないあたり
って言っておきながら、標準モジュールをあげたら今度は
> がんばって標準モジュールを列記してみたものの、やっぱり素のPerlは
> 思いつかないところ
もしかして、自分の知らない標準モジュールばっかりで
方向転換したのかいな?
ぷぷぷ。
モダンPerlとそうでないPerlとの違い、メリットについてもっと教えておくれ
標準モジュールを使いこなすのがモダン。
そうでないものは単に勉強不足なだけ。
なんだ、そうだったのか。てっきりlocaltimeも満足に使えないのかと
思ってたよ。失敬、失敬、こりゃ失敬。
念のため言っとくがlocaltimeから
リストコンテキストで取得するのは古いやり方だからな。
最近のやり方はlocaltimeからTime::Pieceオブジェクトを返す方法。
もちろん標準モジュール。
で、Time::Pieceのインタフェースってlocaltimeと互換性あるの?
例えばリストコンテキストで使うと同じように値が戻ってくるの?
>>152 % perl -MTime::Piece -E'say (localtime);say scalar localtime;say localtime->datetime'
しばらくメリットを考えてみる。
職場にようやく5.8が入ったんでよーし、これからはモダンPerlだぞ!と
意気込んできたらTime::Pieceは5.10以上と知ってがっかり。
らくだ本に載ってるTime::localtimeを使って愛想笑いでごまかすしかない。
その職場に5.10が入るのは10年後であった。
そしてcpanmやperlbrewを入れることは全面禁止されていた。
そんなんで仕事できるの?w
少なくとも効率が悪いね。
古い所が新しい所に
あっさり追い抜かれる原因の一つである。
やっぱりモダンっていうのは供給者側の視点であって、利用者側の視点が
抜け落ちているな。残念。
利用者?
俺は利用者なんだが。
勉強しない奴に合わせる理由なんてないよ。
おれに合わせる必要はない。逆におれはおれでperl4が使われているところも
あるから、がんばってlocaltimeで書くと。需要ベースで考えるしかない。
残念。
まあゆっくりやっていこう。モダンPerlにタイムリミットがあるわけでなし。
古いPerlにはタイムリミットあるけどな。
Perl4のサポート期間は10年ぐらい前に終わっていそうだけどw
perl4の需要はすでに99.9%無い
かろうじて残っているような需要に対応する必要はない。
お前に期待してないから大丈夫だ。
>>161 Perl4に拘るのはせいぜいあなた個人あるいはお客様だけでありますように
あなたの後をうける人、あなたの下につく人が不幸にならないことを祈りたいですなぁ
そうだね。
windowsXp:ActivePerl環境で、perlをタスクスケジューラからバックグラウンドで実行させたい。
wperl.exeで実行すればよいとgoogle先生が教えてくれたんだけど、
↓でやっても実行時にウィンドウが一瞬だけ開いてしまう。
C:\Perl\bin\wperl.exe sample.pl
↓だと↑より長くウィンドウが表示されるので、wperl.exeが効いていないわけではないっぽい。
C:\Perl\bin\perl.exe sample.pl
うーん、なぜだ
誰か教えてください
タスクスケジューラに設定したのはwperl.exeではなくバッチファイルと予想。
171 :
168: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...
回避方法あるでしょうか?
173 :
172:2012/04/07(土) 02:55:30.64
投稿の際に行数を節約しようと修正した部分で動かないところがありました
×*$AUTOLOAD = sub : lvalue { my ($self) = @_; $self->{$1}; };
my $name = $1;
*$AUTOLOAD = sub : lvalue { my ($self) = @_; $self->{$name}; };
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
176 :
172:2012/04/07(土) 23:31:22.35
>>174 おおーありがとうございます。AUTOLOAD自体をlvalueにするというのは気づきませんでした。
実際のプログラムはもう少し複雑ですが、正しく動作しています。
>>普通のハッシュでよくね?
たしかにw
一応オブジェクトであってはほしいのですが、ハッシュ記法であれば何の不都合もなく
$obj->{name} = 'bar';
と書けるわけですしね。
オマケでメソッド呼び出しも、と考えてたらハマってしまった格好です
Apple 社の Mac OS X は、 ベースの一部 が FreeBSD です。Apple 社独自の
ユーザインタフェースとともに、豊富なUNIX(R)基盤が取り入れられています。
OpenStepじゃなかったっけ?
>>171 事前にSTDOUT、STDERRをつぶして
おいたらどーなる?
ウインドウアプリで、そこに吐くと、
自動的に新規コンソールが開く、
とかだったような。
>>179 タスクのウィンドウが表示されなくなってうれしいものの、その他の
ウィンドウも一切表示されなくなりました ;_;
(D-SUB抜いて試しました)
一方、日本は...
瞳をとじた
そしてこのスレッドもクローズした
183 :
デフォルトの名無しさん:2012/04/29(日) 06:35:31.99
再開
∧∧
( ゚Д゚ )∩
⊂ ノ
/ 0
し´
えっ…と、
ここかな…、と
∧∧ ∧∧
∩゚Д゚≡゚Д゚ )
`ヽ |)
| __ |〜
∪ ∪
ドスッ
∧∧.ミ. _
( )┌┴┴┐
/ つ.再開│
〜 ./ └┬┬┘
∪∪ ││_ε3
゛゛゛゛
最近のPerlでOOP用ライブラリってどんなのが主流ですか?
Mooseだろ?
最近のライブラリでそれ以外使ってるの有るのか?
ありがとうございますMoose調べてきます
Mooseが重いと思ったらMouseとAny::Mooseの組合せで代用もよし
最初から Mouse 使ったほうが
190 :
デフォルトの名無しさん:2012/05/15(火) 18:28:38.45
cpan でモジュールインストールしんたいんだけど
install やら make やら make install やら全部 OK
でたのに
perldoc -l インストールしたモジュール名
やるとそんなのないて怒られる。
なんで?
>>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でマッチした時って
後方参照使えるの?
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") と、マッチするものすべてを得たい場合、
どうすればよいでしょうか。
なんか面白そうなお題なのでとりあえず最悪くさいものを作ってみた
素晴らしい人がボロクソにけなしてくれると期待しつつ投げてみる
$str='ABCD';
{
my $tmp=$str;
while($tmp=~/AB|BC/){
push @a,$&;
$tmp = $&.$';
$tmp=~s/^.//;
}
}
print join' ',@a;
196 :
194:2012/06/20(水) 02:51:53.45
>>194 場当たり的に色々試していたら
@a = $str =~ /(?=(AB|BC))/g;
で、(AB,BC) が取得できました。
(?= で、次の走査開始点を移動させないようにしたから、でしょうか?
一過性のモダンPerlはもう終わり。
らくだ本の発行によって本来のPerlへの回帰が始まっている。
本来のPerl=5.0でも動く範囲でしかコード書かない
そういえばPerl5のスレってないね?やっぱりまだPerlの方が使われてるのかな?
モダンPerl書いたひとはどうしてるの?最近見ないけど、やっぱりだめなの?
201 :
デフォルトの名無しさん:2012/07/20(金) 06:04:14.97
まあソースをみて改良したりとか前向きな動機はほぼゼロで99.99%はこのメーカー
困らせてやれって開示請求なんだろうな。
モダンな奴はそもそもPerl使わないからな
USP(Universal Shell Programming)研究所は、UNIX/Linuxの基本思想である、
「小さな道具」(コマンド)を組み合わせて「問題を解決する」(シェルス
クリプト)手法の研究・普及を行っています。この開発手法(ユニケージ
開発手法)は、従来のウォーターフォール型開発や、オブジェクト指向言
語・データベースソフトを用いた開発手法と一線を画し、圧倒的な開発生産
性 圧倒的な柔軟性を特徴としています。
ttp://www.usp-lab.com/
本スレも、荒しに常駐されてぐだぐだだし、
WebProgの方も同じみたいに、スレ違いの会話が
ぐだぐだ続いて終了したし、終りかなあ。
ここのスレの方がまだ真面にperlの話をしてた気がするよ。
まあモダンには2つあって、ひとつはすぐに古くなるモダン。
もうひとつはいつまでも古くならないモダン。
おれは断然古くならないモダンのほうがいいな。
XSを使うと1年後に古くなるほうのモダンですか?
軟便スキー独りか知らんが、
韓国ネタのコピペしたり
hoge煽りしたり
ググれ煽りしたり
馬鹿じゃねーの?
そしてゆっくりモダンになっていく...
それが理想です
進歩というものは過去を捨てることではない。
過去に加えて積み上げるものなのだ。
荒しが950踏んで嬉々としてhoge禁止をテンプレに入れる姿が目に見える様だ
過去のソフトウェアと作法やインタフェースが異なる言い訳としてモダンと
いう用語を使うのはまずい。今までより苦労が増えるなら移行は進むはず
がない。
ところでこのスレが53箱目の続きってことでいいの?
すまん、53箱目の続きあった。“54目”になってたんで検索に引っかからなかったわ。
以下のように時刻と曜日が書かれたlogファイルがあります。
Jun 6 00:07:41 xxxxx
Aug 8 00:14:34 yyyyy
Aug 8 00:16:26 zzzzz
〜
(以下略
現時刻から一時間前のログのみ抽出して、抽出したログの行数だけ出したいのですがこの処理って一行(ワンライナー)で書けますか?※重複とかは無視して単純に一時間分のログが引っこ抜ければ良いです。
詳しい人教えてください。
>>214 訂正
1時間前のログのみ抽出じゃ無くて一時間分のログを抽出です。
>>214 > この処理って一行(ワンライナー)で書けますか?
書けます。
>>216 やり方教えてください!
一時間前の日付時刻と現在の日付時刻を比較して条件を満たせば該当行を出力みたいなことをやれば良いとおもうんですが、どう書けば良いのかわかりません
横レス(別人)
$ 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 あたりでググる。
>>218 レスありがとうございます。
参考にさせてもらいます。
でも2013年以降も使えるのが理想ですが…
年跨ぎのケースを考え無くて良いなら、コードの2012を2013にすりゃいいだけ。
というより、「年」は全部今年として扱えばいい。
年が明けてから1時間はまともにログを拾えなくなるけど。
そもそもログデータに「年」の情報が入っていないんだから、
厳密に処理するのは無理だべ。
>>218に対して言ってるのなら、
最初からそれを念頭に書いてないか?
コードは既にそうなってるし、
説明文の方は質問者に向けたもんだし、
改造しやすいように除算は態々、2012 -1900 にして残してあるし。
それともtime関数に、年を除外するオプションでもあんの?
>>223 年が変わるごとに 2012 を 2013 だの 2014 だのに書き換えるの面倒だろうから
「年」のところはログの日付も現在の時間も全部localtimeの「今年」という前提で
扱えば毎年コード書き直さなくてもよくなるだろっていってるんだよボケ。
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、了解した。
で、試しに自分でも書いてみた。
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使えばあとからでもわかるしね。
>>225 了解してくれてどうも。
俺の日本語がわかりにくかったのか…
>>226 > 218の方がすっきりしてるか。なぜかうちの環境だとエラー吐いて動かなかったけど…。
> (Day 'Jun' out of range 1..31 at -e line 1 て言われた)
なぜエラーが出たかわかった。自分でテスト用に切り出して作ったログファイルの
各行頭にスペースが入っていたからだった。(ありがち)
>>227 違う。料理の合間に、斜め読みでレスした俺が悪い。
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オブジェクトの除算が変だ。なんで?
>>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ベースになっちゃうけど引き算の結果は正しくなる。
という訳で、けっこういろいろとメンドくさいもんですね。
同じぐらいの長さのワンライナーなのに
>>218がダサくて
>>226がスタイリッシュに見えるのはなぜだろう
レスくれた人ありがとうございます
>>214です。
まだperlは入門書読み終わった程度なので右も左も分かりませんが、教えて頂いたコードを参考に色々書き方を研究したいと思います。
入門書読み終えたばかりの初心者には組込みのlocaltime関数を教えてあげないよ
ほら、俺ってサ
意外にすいすいしいヤツ
だからサ
初心者には localtime の方が便利な件
>>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'
>>238 おおうスタイリッシュ。
state とか使ったことなかったけど便利そうだな。参考にさせていただきます。
ワンライナーはあんまし書かないのもあってオプションも -i -n -p -e くらいしか
普段使ってなかったりしますんで。-E すら滅多に使わないな…。nもpもなしに
while(<>)埋め込むのもループの前後で処理が必要な時とかは普通にやってるし。
その程度のスキルでもとりあえず動くものは書けるってのがPerlのメリットでもあり
欠点でもあると…まあこの場合メリットということで。TMTOWTDI。(覚えづらいよなこれ)
なんで隔離スレで真面目に質問箱してんのよ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くっつけるだけ。
それにしても、バルサン炊いたみたいに、人がいなくなったな本スレと初心者スレ。
実際の所は、ハイエナが肉に夢中になってるだけだろうけど。
初めてのPerl第6版とPerl5.16.1のことだね。
Unicodeサポートの問題に今頃気づいたって読める。
第5版のときはまだ気づいていなかったのかな?
まあ、そんときは使ってなかったんだろうけどな。
今上天皇侮辱発言の祭りが落ち着いたから、戻って来たぞゴキブリ。
でも、まあ、5割くらい減ったんじゃねーかな?
バルサン耐性を備えて5割以上パワーあっぷぷぷw
ゆっくりモダンになっていく・・・
・・・モダンRuby。
モダンPERL追いかけてたら時代に取り残されましたとほほ
>>245 その最後の「とほほ」だけで、もう10年以上は時代に取り残されてるよな
とほほだってよw
もうお前5.6こそ最高とかいって周りに強要してろよ
5.6だと日本語がちゃんと使えません。仕事で使うなら5.005一択です。
どうやらモダンパールは時代遅れみたいですね
本家のパールはすでにその先に進んでます
テキスト処理90%のPerlが文字列を楽に扱えないなんてたちの悪い冗談でしか
ありません
C++へのアンチテーゼの側面もあったPerlなのにモダンPerlはどうしちゃったのかな
テクノロジーはスクラップアンドビルドなものと考える連中はとほほの内容が
古いと考えるようだ
252 :
デフォルトの名無しさん:2012/09/08(土) 14:37:07.80
かってに「モダン」とか名乗るなや
モダンでもないのにモダン名乗られてもなあ
リャマ本第6版までモダンに毒されてるよ
おまいらリャマ本は第1版こそ至高・正義だ
定価より高くても中古で第1版を買え!
第1版ってのはバージョン4のピンク本のことか?あれは本当にいい本
ダヨモンPerl
アリャマ本
赤らくだ本だとか赤リャマ本の序文、それにポケットリファレンスの序文でLarryはふざけ過ぎてしばらくの間O'reillyから干されていた。今回「まじめに書く」と誓ったためようやく第4版の執筆許可が下りたらしい。
結局らくだ本的にはモダンPerl(=perl5.8)はスルーってことか
最近は重いモジュールも避けられる傾向にあるしな
重いモジュールも避けられる傾向にあるしな(キリッ
とか言う奴は十中八九List::Utilとかを使わない
実際に書かせてみればろくなコード書かないんだろうな
モダンperlと言われているもののうち一部の重たいモジュールを持ち出して
重たいモジュールは避ける傾向にあるからモダンperlも避ける傾向だよねー
なんてどんな詭弁だよ
確かにLarryはモダンPerlについて多くを語ろうとしないな
きっと軽いスクリプトが好きなんだろうなList::Utilとか使わない
List::UtilはXSで書かれてるから自分でPerlで書くよりよっぽど高速なわけだが
てかとってつけたようにLarry様の名前出すなよw
GUIやバイナリファイル扱うときにXSを使って効率を上げるのは分かるが
そうでないときにXS使ってスクリプトの利便性を下げるのは簡便だな。
勘弁
第1ヒント:テキスト萌えたんのポータビリティ強化月間
「スクリプトが何かよく分かっていない」と書いたはらたいらに3,000点。
バイナリではないところがスクリプトの利便性って分かるかな?無理かな?
利便性の優先度
作る人の利便性 <<< 使う人の利便性
中身が古いか新しいかは使う人の利便性に影響はしないけどね
結局モダンかどうかは気持ちの問題だし、供給者側の主張次第でしょ
利用者側にとってはちゃんと使えればどうでもいいよそんなもん
モダンパールは単なる自己満足であったか
そもそも書いたときはモダンでも後で読むときはモダンではないわな
モダンと言われると互換性がないんじゃないかと思って警戒するひとも
いるかもしれないしな
use strict;
use Encode;
Perl 6は、ポストモダンですか
バイナリでの文字列置換をしています
$str =~ s/\xFF/\x00/g;
という書き方ならうまく行くのに、
$src = '\xFF';
$dst = '\x00';
$str =~ s/$src/$dst/g;
ではうまく行きません
$srcの部分は思い通り検索できるのに、
$dstの部分はバイナリではなく \x00 という文字列に置換されます
どうすればいいですか
$dst = "\x00";
確かにそういうことなのですが、
何故$dstという変数を使うかというと、その中身が不定だからです
$dst に '00' とか '01' とかいろんな文字列が入った場合の置換の書き方はありませんか
とりあえず、pack("C", hex($dst)) と書いて eオプションで評価すれば
うまく行くのは確認したのですが、$srcみたいなスマートな書き方はできないものかと
packするのが一番マシじゃないだろうか
ただ置換内ではなくその直前に追い出したいけど
後半が文字列で表現されている時に、
それをテキストとして見ていいのかバイナリとして見ていいのか、
両方の解釈が有り得るのが問題なんだな
書いたままだよ、というルールで統一されていれば納得するものを、
コードに埋め込んだ時はバイナリだけど、変数が来たら文字列、という解釈をして、
しかも、置換の前半部分は変数でもバイナリとする変態文法
逆に前半を文字列として認識させたい時はどうするんだろう
すみません、何がなんだか分からないのでゆっくりと、そして複数の質問で
あるのなら分割して1つずつ質問してもらっていいですか?
中卒なんで
eval "" と eval {} と /e で解決しそうに読めるんですけど
よくある
$str =~ s/%([a-zA-z0-9]{2})/pack("C", hex($1))/eg;
こんな置換を、packやらhexやら使わずに書いてみそ
という問題
>>276 > バイナリでの文字列置換をしています
{
no utf8;
$str =~ s/\xFF/\x00/g;
}
eval qq{ \$str =~ s/\\Q$src\\E/$dst/g };
どうやってもスマートじゃないな
前半も後半も素直にpackしておくのが一番分かり易い
なまじ前半に書けてしまうのがおかしい
文字列とバイナリを区別する時点から問題が発生していると思うので、
区別しなければ解決するのだと思う
楽になるために区別するのならよいわけだけど、
区別したがゆえに苦労するのであれば、区別しなければ苦労はない。
過去にとらわれるのはもうやめです。進歩しませんよ。
どっちに解釈するか文脈で判断、ということをperlはあちこちでやっていて、
それは多くの場合正しいので表面化しないけど、
こんな風に不合理を露呈する場合もある
プログラムはテキスト、処理するデータはバイナリ
対
プログラムはバイナリ、処理するデータはテキスト
深い質問だな、これは
Win7上で、Strawberry Perl と SQL Server2008 を使用して開発をしています。
DBD::ODBCでDBにアクセスをして、データを操作しています。
質問
・DBIでSQL Serverのデータベースにconnectを作成し、あるキーとなる情報を取得するSQLを
prepare、execute、fetchrow_arrayを使用して取得し、取得したキーをもとに別なSQLを作成し、
実行しようとしましたが、「接続がビジーです」といった内容のエラーが返ってきます。
fetchrow_arrayでデータを参照しつつ、同一のデータベースから同じようにデータを取得する
ことはできないのでしょうか?
何か情報がありましたら、教えてください。
よろしくお願いいたします。
2つのSQL文をひとつにまとめるのが正攻法に思えるが「参照しつつ」をやめて「参照し終わってから」にすればいいんじゃないかと言ってみた。
SQL文を相関副問い合わせを使って書き直す
Strawberry Perlは「接続がビジーです」に関わっていない件
プログラムはテキスト(簡便)、処理するデータはバイナリ(簡便)
プログラムはバイナリ(勘弁)、処理するデータはテキスト(勘弁)
$str = 'aaa[bbb[c]ddd]eee';
$str =~ s/\[.+?\]//;
こんな感じにした時に
aaa[bbbddd]eee
になって欲しい
gを付けたら、
aaaeee
になって欲しい
うまい書き方はありますか
>>296 s/\[.{1}\]//;
オプションつけて最長マッチとかってあるのか?
中身が固定だと判ってるなら\[c\]でいいんだけどね
$str = 'aaa[bbb[c]ddd]eee';
$str =~ s/\[[^\[\]]+?\]//;
print "($str)\n";
# /g とは違うけど
$str = 'aaa[bbb[c]ddd]eee';
while($str =~ s/\[[^\[\]]+?\]//){}
print "($str)\n";
スカラーで置換した数を返す、という仕様は
whileで使ってくれと言ってるようなもんだな
301 :
291:2012/09/24(月) 00:26:24.29
>>292-293 ありがごうございます。
ただすみません、自分の書き方も悪かったのですが・・・
取得した情報で、その後の処理を変更しています。
そのため、発行するSQLもselectだけでなく、insert,update,deleteなどもあり、
単純にSELECTを見直すというわけにもいかず。
303 :
291:2012/09/24(月) 22:40:47.72
>>302 ありがとうございます。
こんなものがあったんですね。知らなかったです。
Perlのこと聞きたかったら、いつでもこのモダンPerlスレに来な
モダン焼きは四角く切るのと放射状に切るのとどっちがいい?
おちんちんお切ってしまえ
たこ焼き器で作るとひと口サイズなので切らなくともよい。
私女だけどひと口サイズのおちんちんは勘弁
切り方変えても味は変わらないのでそのままかぶりつく
結局一過性のモダンポールか、青臭いな
少数のエリートが良かれと思っても多数派の一般民が取り入れないと意味がない
ひとがプログラミングする訳だから、フィーリングを大事にしないとだめだな
312 :
デフォルトの名無しさん:2012/10/14(日) 16:56:04.97
開発効率のことだけで言うと
モダンPerlの方が効率がいいね。
313 :
デフォルトの名無しさん:2012/10/14(日) 23:37:41.19
俺が好きなのはポストモダンPerlだな
ああ、アレね、アレのことね
Time::Pieceの実験用モルモットになるよりlocaltimeをツールとして安心して使うタイプか
モジュールに一切頼らないスタイルこそが正義
317 :
ハートマン軍曹:2012/10/15(月) 18:43:05.44
お前の顔はモダンアートの醜さだ!
318 :
デフォルトの名無しさん:2012/10/16(火) 00:31:08.75
もうPerlは5.16の時代ですよ。
5.12とそれより前はサポート終了しました。
10年前のPerlのことなんか、
考える必要ないんですよ。
5.6とか使いたい奴は自分らで勝手に使ってたらいい
ただし5.6を他人に強要したり、5.6向けに書いた古臭いスクリプトを他人に押し付けて保守させたりするな
とにかくコードが手元の環境で動くのが正義
そして長期間に渡るメンテが可能で楽なのが正義
localtimeは標準モジュールより格上の標準関数
ポータブルPerlこそがこの世の正義
319による保守は誰も期待していない
324 :
デフォルトの名無しさん:2012/10/16(火) 02:00:05.08
ポータブルPerlって
Perlのバージョンはなんだ?
言ってみろよwおらおらw
>>322 > とにかくコードが手元の環境で動くのが正義
> ポータブルPerlこそがこの世の正義
矛盾してる
326 :
デフォルトの名無しさん:2012/10/16(火) 02:06:12.86
>>322 > ポータブルPerlこそがこの世の正義
つまり手元の環境で動きさえすればいいってもんじゃないってか?
327 :
デフォルトの名無しさん:2012/10/16(火) 02:06:57.24
>>322 > localtimeは標準モジュールより格上の標準関数
格上わろす
手元にたくさんあるんだろ、モルモット君。
localtime()は、Cにもあるよ
330 :
デフォルトの名無しさん:2012/10/17(水) 18:24:12.99
うるさいゴミ
リストコンテキストとスカラーコンテキストの違いとか printf とかはモダン
うんぬんの前に知らないとだめだろ。
モダンなゆとり世代。壮大な実験に付き合わされたモルモット。かわいそす
刹那的なモダンPerlでは自分が書いたスクリプトを数十年に渡って保守する
ことは不可能と悟り本来のPerlに戻ってくる。で、localtimeで書く。
333 :
デフォルトの名無しさん:2012/10/20(土) 14:43:54.03
>>332 perl本体に組み込まれた関数が何十年後も互換を維持してるとは思えないがな
寿命が6〜8年のモルモットの推測が当たるとは思えないがな
数十年後も使い続ける物はCで書いとけよ。
Perl5自体、メンテされてるかどうか分からんぞ。
mooseとか使いまくってる俺が通りますよ
早くPerl6出ないな〜
Cで書いたら実行環境の違いを記述するコードでアプリケーションが
埋め尽くされるんだろーなー
338 :
デフォルトの名無しさん:2012/10/20(土) 20:25:13.96
>337
Linuxのソース見たけど、
一部の層で吸収しているから
ほとんどのコードは実行環境の違いなんて関係ないよ。
ま、お前にはそんな芸当出来ないだろうがな。がはははははwwww
ゆとりだからLinuxしか習わなかったんだよね?かわいそす
340 :
デフォルトの名無しさん:2012/10/20(土) 20:34:13.97
「Linuxしか習わなかった」と判断した理由を書いてください。
ゆとりの脳内はよくわかりませんのでw
あ、書かなくても(逃げても)構いませんよwww
書いてもいいんだけど、Linuxのソースが、Linux以外のオペレーティング
システム上でperlを実行したときの実行環境の違いを吸収できると考えて
いるひとには理解できなそう
たぶん、無理だろうね。かわいそす
343 :
デフォルトの名無しさん:2012/10/20(土) 21:21:01.55
やっぱゆとりだったかw
実行環境の違いなんてそれを埋めるレイヤーに固めるから
アプリケーションがそんなコードで埋まることはないってのが
一番の趣旨だろ。
こういう作り方ってのは普通にやることだし、そんなことが
思いつかないってのは自分でやったことがないってことw
そこからこのセリフにつながる
ま、お前にはそんな芸当出来ないだろうがな。がはははははwwww
344 :
デフォルトの名無しさん:2012/10/20(土) 21:42:31.78
345 :
デフォルトの名無しさん:2012/10/20(土) 21:47:19.43
意訳 馬鹿だから理解できないw
346 :
デフォルトの名無しさん:2012/10/20(土) 22:34:46.28
興奮してるのか脳に障害があるのか分からないが
文章が無茶苦茶だな
たぶんではなくて完全に無理です。コンテキストの理解を求める俺のほうが
完全に悪かったです。printf も覚えようとしなくて結構です。
どうもすみませんでした。
モダンPerlが脳障■者を集めるのか、脳障■者がモダンPerlを好むのか
これって日本だけの現象なの?モダンRubyとかも同じ状況なの?
349 :
デフォルトの名無しさん:2012/10/21(日) 00:21:29.73
いいから黙ってろって
350 :
デフォルトの名無しさん:2012/10/21(日) 00:34:27.55
>>343 > こういう作り方ってのは普通にやることだし、そんなことが
> 思いつかないってのは自分でやったことがないってことw
>
> そこからこのセリフにつながる
罵倒を目的とした文章で代名詞の頻度が上がるのは、脳に良くない変化が起きていることを現すから気をつけた方がいい。
じいさんがボケ始めた頃「あれ取って」が増えたのと同じか?
352 :
デフォルトの名無しさん:2012/10/21(日) 00:46:26.95
>>350 > 罵倒を目的とした文章で代名詞の頻度が上がるのは、脳に良くない変化が起きていることを現すから気をつけた方がいい。
そんなデータはありませんwww
大丈夫?
ボケ老人風文体わろす
実行環境の制約(機器であったり、OSであったり、その会社の規則だったり)で
ポータブルなスクリプトを書かなければならないことはあるだろうけど、
制約によってモダンPerlで書かなければならないってことは現実にあるんだろ
うか?
その前にポータブルなスクリプトとレガシーなスクリプトの違いはちゃんと
理解できているのだろうか?
モダンPerlは結局のところ単なる自己満足なのだろうか?回答を求む。
355 :
デフォルトの名無しさん:2012/10/21(日) 02:48:51.74
> ポータブルなスクリプトを書かなければならないことはあるだろうけど
お前のポータブルの意味って何?
新しいPerlを入れればいいだけだろ。
お前が言ってるのは、ポータブルなスクリプトを書く。ではなく
古いPerlにも対応したスクリプトを書くって話。
ポータブルとは関係ない。
古いPerlって、どれくらい前のPerlの事を言ってるの?
CPANライブラリが動かないような古いPerlも視野に入れて開発しないといけないの?
どうして、そんな古いPerlに固執してるの?バージョンアップできないの?
正直モダンPerlって呼ばれてるような書き方をしてはいけないなんて制約がある方が特殊すぎ
自分の書くプログラムのスタイルなら、モダンだろうとクラシックだろうと好きに書けばよい。
でも、モダンPerl!モダン!モダン!って言う連中って、CPANとかのライブラリを使って書くことを
モダンだと言ってることが多い。
ライブラリを自分で抱えるのでなく、システムに入れろっていうのは横暴だし無理だろう。
すでに作られているシステムに、あとからCPANライブラリを追加したら、
既存のPerlスクリプト全ての再検証必要となるからね
どんなモジュール追加したらそんな大げさなことになるんだよ。
359 :
デフォルトの名無しさん:2012/10/21(日) 15:03:26.42
今のモダンPerlの世界は
perlbrew + cpanminus + local::lib を使って
システムに入れずに最新Perlを使うのです。
『はじめてのPerl』にlocal::libとcpanmが出てくる時代になりました。
書いたときにモダンなのは当たり前だろう
モダン推しは時間軸の視点が抜け落ちているんだな
>>358 Encodeモジュールのようなモジュールだろ
まあ、あえて名指しはしないけどな
363 :
デフォルトの名無しさん:2012/11/04(日) 17:39:50.59
なんでEncodeモジュールを追加しただけで
再検証が必要になるんだ?
Encodeモジュールは最近のPerlには標準搭載されてるだろ。
まさか最新のPerlで動かないコード書いてるのか?
>>318 >>319 フリーソフトはそもそも AS IS だからサポート切れとかはない
今までのどのらくだ本にも最初に書いてある
で、強要だの押し付けただのってしたことあったっけ?
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
好きなだけ弄ればいいさ。
誰も止めやしない。
Jcode,pmてまだまだ使われてるの?
さすがに require jcode はないよねー
まだまだ現役です。だって使いやすいんだもん。
どう説明しようかな
#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
のディレクトリが成立しています
>>372 事項ではなくて、実行であります。
タイプミスすんまそん
メタな問題が発生しているとだけ回答しておく
Makefile.PLはこの作業を自動化するmakeファイルを生成してくれます。
↑これが原因か
何とも罪作りな記事だな
そのページのコメント欄に質問として書いちゃえよ
注
※1 これはWindowsではうまく動かない可能性があります。
初歩的なミスを
した物のどの記事もWin系なのかUni系
なのかわからん記事ばかりで
一応
WindowにGnuWin32を通した物の
make: *** `makefile' に必要なターゲット `C:\Perl\libConfig.pm' を make するルー
ルがありません. 中止.
なんてエラーが
返って来る。結局Windowユーザーは
Xsubpp覚えなくてもいいってことか。
Xsubppによる利便性の低下、な
新聞じゃないんだからw
先生!makeファイルがmakeされません!
sudo apt-get install make
active perlだと、今はコンパイラも付いてくるからそれを使う。
makeはdmakeを使う。
彼女がメイク中でした。
(高見盛に激似です)
DOSこいっ
387 :
デフォルトの名無しさん:2012/11/18(日) 01:18:35.04
文字列がtest_1やtest_2やtest_3のように
test_○のような形になっているかを正規表現で調べるにはどうすればいいんですか?
○の中は数字のみです
$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
そんなに短さにこだわるなら、無理やり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
せめてPOSIX。
use POSIX;
print strftime("%Y-%m-%d", localtime);
どうせすぐ古くなるんだから。保守するのに時間軸の視点は必要だぞ。
ポータブルPerlとかモジュールなしPerlとか
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 )));
}
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
ちなみに環境はActive PerlでWindows7を使っています
403 :
デフォルトの名無しさん:2012/12/09(日) 15:13:07.96
なお、提出期限は本日中とする。
確かRETVALて
マジック変数だよな。Perl側にアウトライン
した時に恐らくマジックに変異してるジャマイカ?
そして、またXSに入りINT2PTRで閲覧しよう
とする。うんで、マジックが掛かってるとキズかず
隠蔽された構造体にアプローチしようとしてとする。
上手く考えが定まらず、マジックやら
文法そのものやらに、あっちやこっち浮気し
まくってたらいつの間にやら難題に押しつぶされそうになってた。
もう資料の少ないマジックに手をださないから
RETVALに代入した後の処置を教えください。
つーか、スレまちがい
今から学ぶならやっぱPerlよりPythonなのかなあ?
>>406 さすがにrubyやphpならともかく、pythonはナイわ
解析するならPythonじゃね?
クラックコンテスト上位者はみんなPython使いのようだし。
間違えた、ハッキングコンテスト。
Django使うの以外にPython使う理由が見つからない
倍幅文字を含んだ文字列を端末にテーブル状に整形して表示したいのですが,
==================================
# ソースの文字コード: utf8
printf "%04s\n", 'ab';
{
use utf8;
printf "%04s\n", 'あ';
}
{
no utf8;
printf "%04s\n", 'あ';
}
===================================
00ab
000あ
0あ
use utf8 だと文字数でカウントしてるようなので
倍幅文字を含んだ行と含まない行とでズレてしまいます.
no utf8 だとバイトでカウントしているようなので
やはりズレてしまいます.
端末上に上手く整形して表示する方法はないものでしょうか?
非モダン質問箱の方は質問できる雰囲気ではなかったので
こちらで質問させて頂きました.
413 :
デフォルトの名無しさん:2014/01/17(金) 14:45:12.15
my $文字幅合計=0;
my @文字群 = split //, $文字列;
for my $i(0 .. $#文字群){
$文字幅合計+=((unpack('C*', $文字群[$i]) - 30)*(unpack('C*', $文字群[$i]) - 127) < 0) ? 1 : 2;
}
文字のバイト列が31(\x1f)から126(\x7e)なら1でそれ以外は2を返す
415 :
デフォルトの名無しさん:2014/01/17(金) 17:55:39.71
ゴミ
417 :
デフォルトの名無しさん:2014/01/18(土) 19:55:51.97
与えられた文字列から適当な数値を求めたいんだけど
標準関数で簡単にやるにはなにかいい方法ある?
せめて10レスくらい読めよ
$ perl -le 'print for unpack q{C*}, q{もじ}'
227
130
130
227
129
152
joinすりゃいいだけじゃん
そこまで書かなきゃいけなかった?
>>422 いいから早く消えろってことだよ
やんわり言ったら分からなかった?
>>421 BigInt付けるか、他の方法を考えるかしたら?
文字列じゃなくて、変数ってんならアドレスとかの方法もあるけど、
あっちで釣りの続きしてればいいのに
>>425 何で上から目線なの?
自己顕示欲満たしてやってんだから嫌なら答えるなよ。
そもそもこんなところで質問してあーだこーだ言わないと使えないんだったら、
Rubyをサクッと学習してやったほうが早い。
嬉しそうだなあ、、、
嬉しそうだな、、、
433 :
デフォルトの名無しさん:2014/01/18(土) 23:17:08.53
配列の配列を戻り値にしたいんだけど
どうしたらいい?
そういう場合は配列のリファレンスを使う
自演キモw
Perl厨の自演って分かりやすいな。
文章構成能力がないから、短文で一問一答w
お前の自演の方もなかなか解りやすいぞ、PHP厨
糞言語の糞スレ
439 :
412:2014/01/19(日) 20:39:49.50
>>413 制御文字を除外するために文字が特定範囲にあるか調べる方法がテクいです
>>416 同じことを思ってる人はいるものですね.
使ってみた限りでは問題なく調整してくれるみたいです.
\p{East_Asian_Width} で定義されてるかどうか等で判定しているので
半角カナもちゃんと幅1で計算されます.
MBPrintf.pm の方を使って printf を置き換えることにしました.
HTMLとかにして出力するしかないかなと思っていたところ
さくっと printf を置換えするだけで綺麗に出力できそうなので
大変助かりました. 質問してみて良かったです.
レスありがとうございました.
>>439 やっぱ馬鹿なんだな
お前みたいな奴が日本のIT産業をダメにしてんだよ
同じこと考えるも何も、日本でPerl広めたのはこの人だよ
受け答えのレベルから推察するとシフトJISを使うことを思いついていない気がする
Perl以前の知能の問題なんだろw
コマンドラインで使う前提での質問なのにシフトJISってw
質問すら読解する能力無いだろ
ほんとにWebProgに帰れよドアホ
ゴミは黙ってろ
>>445 草生やしてんじゃねーよ。
半笑いのつもりか?
半笑いでバカをアピールする
>>445哀れ。
連レスかまして無知晒すから、解りやすいぞPHP厨
キチスレ
450 :
デフォルトの名無しさん:2014/01/24(金) 19:52:20.84
Config::INI とかTiny とかのライブラリで
コメント行は ; になっているけど
これを # にするようにできるライブラリはある?
>>450 ある。
回答きたんだからさっさと消えてね。
その程度も自分で調べられないとか頭悪いんだろうな
調べたら3分かかからなかったけどな
このスレって何人いるんだろう?
日本人だと思う
おまえあれだろさっきまでなぞなぞスレにいただろ
うまいw
日本人ですだよ
ニーハオ!
パンニハムハサム ザパニーズニダアルヨ!
ショーグンサマ バンザイ!
テポドン バンザイ!
文字列が二つあって、その比較をしたい
共通1 差分1 共通2 差分2 共通3
みたいな感じで、2箇所まで差分を抽出したい
現実的な速度で動くうまい方法ないかな
>>463 他人に頼る前提で始めるような馬鹿には無理。
>>463 はぁ?
自分でやったけど何秒かかって、これが何秒以内に終わるようにとかも書けねーの?
本当にお前ゴミだな
リアルでもどうせその調子なんだろ
リアルでもゴミだと思われてるけど気付いてる?
自分で試すことすらしない猿未満の低能には言うだけ無駄
猿ですら目的達成のために試行錯誤するのに
$str1 = 'aaabbbcccdddeee';
$str2 = 'aaafffcccgggeee';
$test = $str1 . "\t" . $str2;
$test =~ /(.+)(.+?)(.+)(.+?)(.+)\t\1(.+?)\3(.+?)\5/;
$c1 = $1;
$d11 = $2;
$c2 = $3;
$d12 = $4;
$c3 = $5;
$d21 = $6;
$d22 = $7;
print "$c1 $d11 $c2 $d12 $c3\n";
print "$c1 $d21 $c2 $d22 $c3\n";
結果
aaa bbb ccc ddd eee
aaa fff ccc ggg eee
こんなのはすぐに思い付くと思う
ところがこれは、文字列の長さが100文字とかでもう遅すぎて使えなくなる
こういうのを見るたびに
足りないのは知識やスキルではなく羞恥心なんだなと思う
実に頭の悪そうな回答がきたなw
diffは多少一致してない部分があってもいい、みたいな曖昧な判定をするから、
余計にややこしいんだよな
うちのLarryに何か用かい?
おれならxor使うけどね
475 :
デフォルトの名無しさん:2014/06/20(金) 08:07:41.06 ID:w/WZ2GYd
say "";
ネットで検索する時は単語をスペースで区切ってそのANDで結果を得るけど、
同じことを正規表現でやりたい時はどう書けばいい?
「$s が hello と world の両方にマッチする」なら、単に
$s =~ /hello/ && $s =~ /world/
と書くだけじゃないの?質問がよく分からないのだけれども
>>476 あえて無理やり正規表現のみでやるなら否定先読みを使う
if( /(hoge|piyo).*(?!\1)(hoge|piyo)/ ){ print "成功\n"; }
否定の先読みなんかせんでも
print ‘foobar’ if /(?:foo.*?bar|bar.*?foo)/ ;
で良いんじゃねーのか
入力がスペース区切りの文字列なんだよ
仮に検索エンジンみたいなのを書くにしても
何を対象にするのかとか、検索単位とかを決めてもらわんと書きづらいぞ
「同じこと」の通り「対象:Webサイト、単位:ページ」ならGoogleに投げりゃ済むし
検索対象も文字列に決まってるだろ
正規表現でのマッチングだっつってるんだから
逃げてないで考えてみれ
>>482 文字列?
テキストでもファイルでもなく?
それって何に使うんだろか…結局、目的は何よ?って話だよ
もしかしたらもっと良い方法があるんじゃ?と勘ぐってしまうのよどうしても
またよく判らん屁理屈を
検索の単位が文字列に対してで、それがどこから来たかは問題にならないだろ
まあ、大抵はファイルからだろうけど
で、ファイルならこんなツールがあるよ、みたいな感じで本題から逃げたいのが見え見え
>>484 いやまあ、文字列に対してなら
my $hit = 1;
for my $ptn (split(" ",$search)) {
$s =~ /$ptn/ or $hit = 0;
}
こんなんで出来ると思うけど、こんなんで本当に良いのか?
後出し条件とか大量に出てきそうな感じがするんだが
お前は、「ワンライナーでどうやりますか」って質問に
スクリプト作成して答えるのか?
「正規表現でどうやりますか?」って質問には、
普通に正規表現で答えりゃいいだろうが。
実際、質問への答えは、
>>477-
>>479で終了してる。
後出しを心配するなら実際に後出しされてから
盛大に罵倒しろよ
あえて制限をつけてパズルとして解くならともかく
現実的な解としては
>>477 で十分だよな
元々の要求はただのスペース区切りだから、パラメータ数は不定で、
パラメータ抽出して、その全部に対してマッチングを繰り返すという当たり前の処理になる
でも、そんなことは最初から判っているのでわざわざ聞く筈がない
スペース区切りの文字列をそのまま使ってマッチングがしたいなら、
残念ながらperlの正規表現でそんなことは出来ない、が答えとなる
本物のコミュ障だなぁ
粘着されてる
>>476が、可哀想だわ。
質問者のレベルまで勝手に想定するし、、、
>>476から読み取れるのは、拡大解釈しても
「ワンセンテンスの正規表現で書くにはどうしたらいい?」
程度だろーに
◯正規表現で、AND検索の実装って、どうやんの?
×正規表現で、「スペースを使って」AND検索の実装って、どうやんの?
「わざわざ聞く筈がない」まで、分かってんなら、
自分の解釈の仕方が間違ってないか、
自問しろよ