■ このスレッドは過去ログ倉庫に格納されています
【モダン推奨】Perlについての質問箱 50箱目
- 1 :デフォルトの名無しさん:2012/01/21(土) 10:56:39.03 .net
- 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 :デフォルトの名無しさん:2012/01/21(土) 11:38:32.23 .net
- [プログラミング自体の経験が無い奴はまずココを読め]
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 :デフォルトの名無しさん:2012/01/21(土) 11:39:11.92 .net
- [モジュール]
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 :デフォルトの名無しさん:2012/01/21(土) 11:39:41.13 .net
- 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 :デフォルトの名無しさん:2012/01/21(土) 11:40:18.24 .net
- 1レスで理解できるutf8フラグ
utf8フラグとい名前がまずかったね。
文字列フラグなどという名前だったらよかった。
文字列フラグはPerl固有のものだから
Perlコード外部から渡されるのは文字列ではない。
文字列でなかったらなにか?それはバイナリ。
バイナリを文字として扱いたければ、文字に変換しないといけない。
それがdecode。
ではソースコードに書いてあるのは、文字かバイナリか。
それはuse utf8を使えば文字で、そうでない場合はバイナリ。
話はこれだけ。
- 6 :デフォルトの名無しさん:2012/01/21(土) 13:51:55.46 .net
- 【プログラミング部】 PHPが100倍速で動くようになったぞー
http://awabi.2ch.net/test/read.cgi/poverty/1327050821/
- 7 :デフォルトの名無しさん:2012/01/21(土) 21:49:44.50 .net
- あのー、重複スレってことないですか?
- 8 :デフォルトの名無しさん:2012/01/29(日) 11:19:25.66 .net
- はてなキーワード > モダン
ttp://d.hatena.ne.jp/keyword/%A5%E2%A5%C0%A5%F3
書いているひとは 1. の意味で書いていそうだけど、読む人は(書いた時期
を考慮して) 2. や 3. の意味で解釈している。
よく印刷した資料に「最新版」とか書くひとがいるけどそれと似てるのかも
しれない。たくさんの最新版のうちどれが最新版なのか分からなくなる。
この場合の正解は版数を書くこと。
モダンの場合は、個別の技術の名称を書くことに相当する。
そうしないと「えっ?いまどきモダンPerl使ってるのかよ、お前w」なんて
ことになる。
- 9 :デフォルトの名無しさん:2012/01/29(日) 11:38:31.81 .net
- 個別の技術は是々非々で議論しましょう。
現状は、モダンという名のせいで盥水とともに赤子を流してしまっています。
- 10 :デフォルトの名無しさん:2012/02/03(金) 01:55:40.19 .net
- モダンPerlと呼ばれているものは、過去の一時期のスタイルと結びついていて
今はもう使われていない。一方、レガシーPerlと呼ばれているものは現在でも
利用されていて、その名とうらはらに全くレガシーな気がしない。
思うにこれらの名称は、実態を正確に示していない点で失敗だと思う。
そういえば、モダンRubyやレガシーRubyという言葉は聞いたことがない。
名前重要っていうのは本当なんだな。
- 11 :デフォルトの名無しさん:2012/02/03(金) 07:54:57.41 .net
- ルビーはバージョン毎に違うからなあ
新旧をバージョン番号以外で呼ぶ事は今後もないんだろう
- 12 :デフォルトの名無しさん:2012/02/04(土) 00:24:55.23 .net
- 83JISは新JISですね。わかります。
- 13 :デフォルトの名無しさん:2012/02/04(土) 10:44:31.66 .net
- 2012年なんだから、そろそろ新JISキーボード使おうよってスレですね。
わかります。
- 14 :デフォルトの名無しさん:2012/02/05(日) 16:28:37.59 .net
- 問題を解決する方法がモダンかどうか、誰もこだわっていない件
- 15 :デフォルトの名無しさん:2012/02/08(水) 01:37:01.27 .net
- 今はポストモダンの時代
- 16 :デフォルトの名無しさん:2012/02/08(水) 01:42:45.73 .net
- 何がどうなるの?教えて、教えて
- 17 :デフォルトの名無しさん:2012/02/08(水) 22:53:51.78 .net
- 結局、モダンって何だったの?
本を売りたかったとか、会社作ってみたとか、そういうことなの?
失敗だったの?
もうモダンには会えないの?
- 18 :デフォルトの名無しさん:2012/02/09(木) 18:46:51.29 .net
- _ , 、
r‐v'´ ̄ `~ く
_. 7,‐、 r‐、 ヽ だったら Perlのはじめて を
(._ ^ヽ|{ 0 _l 0ノ i
ヽ (´ ̄ `_, ヶ ノ 見に行こうよ
`、`ー-ヾ._.// )
/ (_.ノV^) 「クルクルバビンチョパペッピポ、イア!イア!ハスターの
i _ 「
L_ _/ \_ _.ノ
- 19 :デフォルトの名無しさん:2012/02/09(木) 22:43:43.29 .net
- Perl on Heroku | Hacker News
http://news.ycombinator.com/item?id=3570894
judofyr/perloku - GitHub
https://github.com/judofyr/perloku
- 20 :デフォルトの名無しさん:2012/02/10(金) 00:41:07.42 .net
- 「モダン、ここはどこ?」
- 21 :デフォルトの名無しさん:2012/02/10(金) 04:35:12.65 .net
- ネタが古い
- 22 :デフォルトの名無しさん:2012/02/11(土) 00:04:56.56 .net
- ここはね、パークハイアット東京。
The Perl Confernce Japan の会場だょ。
まもなく、まつもとゆきひろさんのRubyのセッションが始まるょ。
(コーヒーがおいしいょ。)
- 23 :デフォルトの名無しさん:2012/02/11(土) 04:05:03.81 .net
- ワンライナー [ 一行野郎 OneLiner ]
- 24 :デフォルトの名無しさん:2012/02/21(火) 06:43:24.21 .net
- 書き込みテスト
- 25 :デフォルトの名無しさん:2012/02/21(火) 23:13:43.25 .net
- 結局、モダンPerlって何だったんですかね?
- 26 :デフォルトの名無しさん:2012/02/22(水) 14:11:38.18 .net
- Perlの長所であり短所であるTMTOWTDIによるコードの難読化を共通ルールっぽいテンプレで改善しようという風潮
- 27 :デフォルトの名無しさん:2012/02/22(水) 21:13:46.02 .net
- 変なこと考えるより、ポータブルCみたいにポータブルPerlで書けばいいと
思うんでそうしてる。書きやすいし読みやすい、おまけに長期的に保守
できる。これもTMTOWTDIのひとつの形態。
- 28 :デフォルトの名無しさん:2012/02/23(木) 21:47:31.36 .net
- 長期的に保守できる=いつまでもモダン。
- 29 :デフォルトの名無しさん:2012/02/24(金) 15:24:49.40 .net
- >>28
動いているものに手を入れるな。
手を入れるときは該当箇所にだけ入れろ
決して他の部分をいじるな。
ほとんど同じ処理でも既存の部分を
修正するなコピペして作れ。
これこそモダン
- 30 :デフォルトの名無しさん:2012/02/25(土) 00:48:11.36 .net
- 気が合いそうですね
- 31 :デフォルトの名無しさん:2012/02/25(土) 00:58:50.25 .net
- モダンが嫌いな人って、新しいものが嫌い。
だからデザインパターンもリファクタリングも
アジャイルも嫌い
- 32 :デフォルトの名無しさん:2012/02/25(土) 01:20:21.71 .net
- そう捉えてるとするならば、ちゃんとコトを理解できていない
- 33 :デフォルトの名無しさん:2012/02/25(土) 04:47:56.86 .net
- Perlの評価の8割はCPANだよね
Rubyの評価の8割はRailsだよね
- 34 :デフォルトの名無しさん:2012/02/25(土) 13:39:26.50 .net
- 残りの2割はPerl4ですか
- 35 :デフォルトの名無しさん:2012/02/25(土) 13:55:49.15 .net
- Perl4はマイナス評価だよ。
- 36 :デフォルトの名無しさん:2012/02/25(土) 14:20:32.95 .net
- 加えてPerl6もマイナス評価だからPerlはPerl5が支えているといっても寝言ではない
- 37 :デフォルトの名無しさん:2012/02/26(日) 21:09:36.58 .net
- 「モダンPerl」の"モダン"はあさってな方向に行ってしまっているので、
一般的な単語のモダンとは意味が違っている。だから>>31の言っている
ことは間違い。
- 38 :デフォルトの名無しさん:2012/03/02(金) 09:42:04.91 .net
- >>35
うそつけ。このスレを潰そうとする連中はみんなPerl4時代のコードしか書かないじゃんか。
- 39 :デフォルトの名無しさん:2012/03/03(土) 00:51:07.30 .net
- Perl4も現役で使われているのでモダンですよ。
モダンではないのは(らくだ本が出版されていなかった)Perl3以前ですよ。
もちろん異論はありませんね?
- 40 :デフォルトの名無しさん:2012/03/03(土) 00:52:39.18 .net
- 現役でサポートされてるディストリで
Perl4が入っているものを教えて下さいよw
- 41 :デフォルトの名無しさん:2012/03/03(土) 04:06:39.76 .net
- 5.8が出てから今年で10年。
それより前は昔の実装でおk。
- 42 :デフォルトの名無しさん:2012/03/03(土) 10:52:44.75 .net
- こうして世界は騙された!!
- 43 :デフォルトの名無しさん:2012/03/03(土) 11:06:06.57 .net
- ディストリインストールできる人はPerlもインストールできるんじゃね?
- 44 :デフォルトの名無しさん:2012/03/03(土) 15:18:20.72 .net
- まさかオマイラ、ディストリ付属のperlをそのまま使ってる、なんてことないよな?
- 45 :デフォルトの名無しさん:2012/03/03(土) 16:17:57.11 .net
- ディストリのパッケージ以外からperlとかモジュールとか入れたらシステムの安定性が壊れる
パッケージが提供されてないモジュールを野良ビルドで入れたりしない
cpanm、perlbrew、local::libを使うなどもってのほか
↓のスレ読んで出直せ
http://toro.2ch.net/test/read.cgi/tech/1217851121/544-
- 46 :デフォルトの名無しさん:2012/03/03(土) 16:36:36.95 .net
- >>45
押すなよ絶対押すなよみたいな言い方ですね。
つまり、それらは便利ってことですね!
- 47 :デフォルトの名無しさん:2012/03/03(土) 19:02:12.13 .net
- >>45
root管理のパッケージと混ぜないために、cpanmやlocal::libを使うのよ。
ユーザ権限でユーザ領域に突っ込めるから、バックアップも楽だし、
いらなくなったらユーザごと消せばいいし。
Perl自体は、特に必要ない限り、システム付属使ってるけど。
- 48 :デフォルトの名無しさん:2012/03/06(火) 23:18:42.91 .net
- ユーザが移行するのは、今までよりも分かりやすいもの、使いやすいもの。
今までよりも新しいもの、多機能なもの、ではない。
- 49 :デフォルトの名無しさん:2012/03/06(火) 23:35:43.27 .net
- モダンなものってたいがいわかりやすくて
使いやすくなってるよね。
Time::Pieceとか。
- 50 :デフォルトの名無しさん:2012/03/06(火) 23:43:48.61 .net
- でもそうじゃないから、"モダン"っていうラベルを付けて強引に勧めて
いるんだね。分かりやすかったら、使いやすかったら、ほっておいても
自然に使われるだろうから、わざわざ無理強いする必要はないもんね。
- 51 :デフォルトの名無しさん:2012/03/06(火) 23:54:43.29 .net
- > 分かりやすかったら、使いやすかったら、ほっておいても
> 自然に使われるだろうから
それじゃ時間がかかりすぎる。
ようはオールドタイプはさっさと消えろってこと。
ネットの古い情報もさっさと消えて欲しいし、
今頃古いやり方を教えるやつもさっさと消えて欲しい。
だから俺は古いやり方を教えている奴を見つけたら
今はこうやる。こっちのほうがもっと簡単だと
情報を広めている。
- 52 :デフォルトの名無しさん:2012/03/07(水) 02:54:40.01 .net
- 新しいけど使いづらいって、自分で言っているようなもんだな
- 53 :デフォルトの名無しさん:2012/03/07(水) 03:03:09.93 .net
- 面倒なやつは無視が一番。
- 54 :デフォルトの名無しさん:2012/03/07(水) 03:57:57.80 .net
- CPANをすべてRubyが補完してくれたらどんなにいいだろう。
- 55 :デフォルトの名無しさん:2012/03/07(水) 23:12:02.32 .net
- end
end
end
end
あぁ、終わりだもうだめだぁ
- 56 :デフォルトの名無しさん:2012/03/08(木) 00:42:07.15 .net
- まあモダンなPerlを知らなければ、
Perl使いとみなせない時代にはなってるよね。
- 57 :デフォルトの名無しさん:2012/03/08(木) 00:51:37.53 .net
- もちろん情報は日々取得してるから知られてはいるんだろうけど、
使いやすくなかったらいつまでたっても使われることはないよね。
- 58 :デフォルトの名無しさん:2012/03/08(木) 01:03:50.28 .net
- 使われてるけどね。
Perlで作られてる他のプロジェクト見たこと有る?
(昔に作られて放置されてるのは除く)
Jcodeとか海外じゃ全く使われてないから。
- 59 :デフォルトの名無しさん:2012/03/08(木) 23:37:48.23 .net
- >>58
- 60 :デフォルトの名無しさん:2012/03/09(金) 01:54:01.68 .net
- 確かに Time::Piece 以外は見たことがないね
- 61 :デフォルトの名無しさん:2012/03/09(金) 02:06:51.28 .net
- >>58
海外で使われていないと、自分が日本語を処理するときに使っちゃいけないの?
日本では使ってもいいんでしょ?
そもそもモダンっていうのは禁止して不便にすることなの?
それにJcodeはオブジェクト指向なんだし十分モダンだと思うけどな
- 62 :デフォルトの名無しさん:2012/03/10(土) 00:38:59.17 .net
- モダンPerlでいうところの"モダン"は、
1.リリース時期のことをいっているのか
2.実装手法のことをいっているのか
3.はたまたインタフェースのことをいっているのか
ところで、インタフェースっていうのは
a.新しければ新しいほど好ましいのか
b.古ければ古いほど好ましいのか
このあたりの見解が一致しないと、具体的なモノがモダンなのか
そうでないのかが変ってしまうし「これはモダンだ」と言ったか
らって、そのものに価値があるのか無いのかは別問題になる
- 63 :デフォルトの名無しさん:2012/03/10(土) 01:24:18.18 .net
- 1.がモダンでも2.がモダンでも利用者にとって関係なく、単に供給側
の自己満足になってしまう。3.のことだとすると新しいもの好きはa.で、
人柱をかってでることになるわけで、そうでないならb.で問題ない。
- 64 :デフォルトの名無しさん:2012/03/10(土) 02:28:05.91 .net
- >>62
Rubyはモダンだ。
そこからいえばRubyに近いことを
Perlでやるのがモダンだ。
- 65 :デフォルトの名無しさん:2012/03/10(土) 02:38:52.80 .net
- モダンの定義は分かったけど、それ価値あんの?
- 66 :デフォルトの名無しさん:2012/03/10(土) 02:45:52.84 .net
- あるよ。
開発速度が上がった。
少ないコードで、今まで以上のことができる。
なにより、プログラミング一般とPerlに関して
深い知識を手に入れられたのがいいね。
オブジェクト指向言語、関数型言語、
継承。ポリモーフィズム。mixin、
アスペクト指向、O/Rマッパー
フレームワーク、MVC・・・etc
Perlだけじゃ、世界が狭いからほかの言語をやるといい。
そうして戻ってくると、自然とモダンPerlな体になってるよ。
- 67 :デフォルトの名無しさん:2012/03/10(土) 02:50:23.82 .net
- 考え方が間違っていたかもしれない。
モダンPerlとは、Perlがモダンなのではなく
プログラマ的にモダンな開発手法、
それをPerlに取り入れたものではないのか?
よくよく考えたら、最近はやりのほかの言語の機能を
PerlでやれるようにしたがモダンPerlなモジュールではないだろうか。
- 68 :デフォルトの名無しさん:2012/03/10(土) 11:58:33.08 .net
- モダンPerlはアンチPerlなのか...
それでPerl原理主義者の抵抗にあっているという構図か
- 69 :デフォルトの名無しさん:2012/03/10(土) 12:24:09.53 .net
- ニーズにマッチしないモダンならいらないよ。
- 70 :デフォルトの名無しさん:2012/03/10(土) 12:38:37.16 .net
- 便利ならそれでよくて、モダンという線引きは要らないってことでおk?
- 71 :デフォルトの名無しさん:2012/03/10(土) 12:41:50.76 .net
- お好み焼きとの違いがいまだに覚えられない
- 72 :デフォルトの名無しさん:2012/03/10(土) 15:44:56.75 .net
- どうにも架空臭がするモダンPerlだが最近ますますそう感じている。
(モダンPerlを構成するといわれる)個別の要素の議論で十分だと思う。
ひと括りにしてしまうせいで大事なものまで一緒に捨てられてしまう。
- 73 :デフォルトの名無しさん:2012/03/10(土) 23:59:10.17 .net
- モダンPerlではなく、
Perlでモダンプログラミングといえば、
面白いように情報弱者が落ちていく。
- 74 :デフォルトの名無しさん:2012/03/11(日) 00:48:24.53 .net
- モダンっていう言い方が古臭い
- 75 :デフォルトの名無しさん:2012/03/11(日) 01:03:16.37 .net
- トレンディPerl
- 76 :デフォルトの名無しさん:2012/03/11(日) 02:15:55.91 .net
- 単に"モダンPerl"と言いたいだけにしか思えない
Perlのリリースが予定通りじゃなかったり、らくだ本の改版に10年もかかっ
たりするからって、無理して話題を作る必要はない
5.14.3がリリースされない今はらくだフォーでつなぐのが吉
- 77 :デフォルトの名無しさん:2012/03/11(日) 02:21:20.79 .net
- 普通にPerl5を使えばいいだけ。
- 78 :デフォルトの名無しさん:2012/03/11(日) 04:00:30.75 .net
- Perlのオブジェクト指向はどう考えてもいびつでおかしいのに
それを主張しても理解できない人の戯言にされてしまう。
- 79 :デフォルトの名無しさん:2012/03/11(日) 04:48:04.26 .net
- お好み焼きは食えるけど、モダンPerlは食えないね。
- 80 :デフォルトの名無しさん:2012/03/11(日) 05:14:03.94 .net
- >>73
人間としての品位を疑われるぞ
社会に適合してないんじゃなイカ?
- 81 :デフォルトの名無しさん:2012/03/11(日) 08:47:05.63 .net
- >>76
らくだフォー?
- 82 :デフォルトの名無しさん:2012/03/11(日) 12:35:38.71 .net
- らくだフォア
モダンはとおくに
なりにけり
- 83 :デフォルトの名無しさん:2012/03/11(日) 12:59:34.63 .net
- >>78
Perlのオブジェクト指向はいびつ
↓
じゃあいびつじゃない形にしましょう。それができるのがPerlの凄さだ
↓
そうやってできたもの=モダンPerl
>>78
お前はPerlを使いこなせてないだけ。
- 84 :デフォルトの名無しさん:2012/03/11(日) 17:32:12.27 .net
- またそんな青くさいこといちゃって、このフォーティーンめ
- 85 :デフォルトの名無しさん:2012/03/11(日) 19:50:09.03 .net
- モダン推奨者は自分が社会に適合しようとするんじゃなくて、社会を
自分に適合させようとしている。
結果、当然うまくいかなくて挫折する。
その繰り返し。
- 86 :デフォルトの名無しさん:2012/03/11(日) 20:47:59.28 .net
- >>85
そうそう。
CPANモジュールで楽せず全て一から自分でコードを書くのが社会の常識だからね。
- 87 :デフォルトの名無しさん:2012/03/11(日) 21:48:16.89 .net
- モダン、モダンとか言って周りに合わせられないのは単に能力がないだけでしょ
- 88 :デフォルトの名無しさん:2012/03/11(日) 22:00:36.17 .net
- >>87
ねぇ。
自分でコードかけないからCPANモジュールなんぞ入れようとするんだよ。
- 89 :デフォルトの名無しさん:2012/03/12(月) 00:38:19.94 .net
- ググって何も出なかったら「ありません。」で終わりだもの、今のひとは。
- 90 :デフォルトの名無しさん:2012/03/12(月) 01:08:30.57 .net
- >>89
ばかばかしいよね。
何も出なかったら自分で書けよ、と。
- 91 :デフォルトの名無しさん:2012/03/12(月) 12:37:32.86 .net
- >>87
モダン、モダン言わなくても、周りに合わせられなければ、単に能力がないだけ。
つまり、モダンプログラミングと、周りに合わせられない事は別問題。
>>90
そこは迷うところだな。別の手を考えるか、そのまま自分で実装するか。
ある意味チャンスだ。
- 92 :デフォルトの名無しさん:2012/03/12(月) 23:57:29.35 .net
- 別の手ってYahoo!か?
- 93 :デフォルトの名無しさん:2012/03/13(火) 02:54:48.40 .net
- 質問箱よりOKWaveがお勧め。
- 94 :デフォルトの名無しさん:2012/03/15(木) 23:34:57.79 .net
- どうやってCPAN使いこなせるようになるんだよ…。
- 95 :デフォルトの名無しさん:2012/03/16(金) 00:44:44.19 .net
- 今までのインタフェースで実装できなくてだめだめなのをモダンPerlとか
言って取繕ってるだけでしょ
- 96 :デフォルトの名無しさん:2012/03/16(金) 01:02:24.92 .net
- perl6のコンセプトを先取りしてるものではないの?
- 97 :デフォルトの名無しさん:2012/03/16(金) 02:27:51.26 .net
- ttp://www.amazon.co.jp/dp/486267108X/
- 98 :デフォルトの名無しさん:2012/03/16(金) 08:17:31.69 .net
- >>95
なんでそういう悪意のある言い方するの?
- 99 :デフォルトの名無しさん:2012/03/16(金) 15:52:29.33 .net
- 新しい手法・置き換えるモジュールがあれば、それを採用しましょうってのがモダンPerl。
Fatalプラグマよりautodieプラグマ。
switch,caseよりgiven,when。
evalとif($@)よりTry::Tiny。
という感じ。
置き換えられないモジュールを置き換えようとするのは多分違う。
- 100 :デフォルトの名無しさん:2012/03/16(金) 15:57:44.21 .net
- 次スレがあったら、テンプレにこれも追加で
http://perl-users.jp/
で、>>3はこのスレ的には整理した方がいいだろうね
- 101 :デフォルトの名無しさん:2012/03/16(金) 15:59:56.20 .net
- www.amazon.co.jp/Modern-Perl-Chromatic/dp/0977920178/
どんな本なんだろう
- 102 :デフォルトの名無しさん:2012/03/16(金) 16:35:08.87 .net
- >>101
http://www.onyxneon.com/books/modern_perl/index.html
- 103 :デフォルトの名無しさん:2012/03/16(金) 17:04:15.50 .net
- >>102
無料でも読めるのか。トントン
- 104 :デフォルトの名無しさん:2012/03/16(金) 21:48:33.88 .net
- モダンPerlは無駄なもの
なぜなら業界歴20年の俺が理解できなかったからだ
そこから役に立たないものだと結論づけた
- 105 :デフォルトの名無しさん:2012/03/16(金) 23:16:39.05 .net
- 新しいことについていけない老害の人って。。。
- 106 :デフォルトの名無しさん:2012/03/17(土) 00:38:01.50 .net
- プログラムはプログラマだけのものじゃなくて、依頼者や使用者のものでも
あって、依頼者視点での保守、使用者視点での保守をしていかないとならない。
その場限りのソフトウェアならモダンPerlでも構わないかもしれないが、
保守するのであれば、流行で作ったものは時間が経つと「変な髪形」になっ
てしまう。それが分かってないのは、おまいのしりが青い証拠だ。
- 107 :デフォルトの名無しさん:2012/03/17(土) 00:43:57.57 .net
- じゃあPerl使うなってことになるな。
- 108 :デフォルトの名無しさん:2012/03/17(土) 00:45:13.60 .net
- 一番人を集められるのはJavaかPHPだよね。
- 109 :デフォルトの名無しさん:2012/03/17(土) 00:54:53.13 .net
- >>106
受託ってやつ?
ウェブサービス作ってるんじゃないの?
俺にとってプログラムは自社のもので、自分たちが
開発しやすいように最善の方法を目指してるんだけどさ、
客に足を引っ張られるのって、ちょっと可哀想に思う。
- 110 :デフォルトの名無しさん:2012/03/17(土) 02:45:39.65 .net
- >>106
そういう時はバージョンと使用するライブラリを指定すればいいんだよ。
- 111 :デフォルトの名無しさん:2012/03/17(土) 02:46:55.30 .net
- 依頼者は何も指定しなかった場合、
古いPerllで作ろう。
それが依頼者のためになるんだ。
- 112 :デフォルトの名無しさん:2012/03/17(土) 03:00:54.49 .net
- 当然4.036よりもさらに前だよな?
- 113 :デフォルトの名無しさん:2012/03/17(土) 03:04:12.17 .net
- >>106
客が要求するのがモダンではないと決めてかかってる。
客がモダンを要求したらどうするつもりだ?
単にお前は、モダンPerlが書けないだけ。
- 114 :デフォルトの名無しさん:2012/03/17(土) 16:11:00.12 .net
- >>112
はい
- 115 :デフォルトの名無しさん:2012/03/18(日) 01:23:00.96 .net
- 逆になんでモダンにこだわるの?変なとこにこだわって成果がでないんじゃ
本末転倒じゃないの?成果とモダンとどっちが優先なの?
- 116 :デフォルトの名無しさん:2012/03/18(日) 01:53:27.60 .net
- >>113
単におまいはモダンっていいたいだけちゃうんか
この青尻め
- 117 :デフォルトの名無しさん:2012/03/18(日) 03:15:04.19 .net
- >>115
モダンを諦めれば、成果が出るとでも思ってるの?
むしろ、モダンを使う=成果が出る
なんだが。
- 118 :デフォルトの名無しさん:2012/03/18(日) 07:42:28.32 .net
- 一旦モダンって名前を頭から消して普通にPerlコードを書かせてみるとする
そいつのコードがKENTみたいなやつだとして、それが他の人が誰でも保守できるようなシロモノになるとは到底思えない
- 119 :デフォルトの名無しさん:2012/03/18(日) 16:06:49.73 .net
- >>117
そんなこと言ってないだろ、どこを読んでんだ?青尻くん
- 120 :デフォルトの名無しさん:2012/03/18(日) 16:17:39.87 .net
- とうとうホモスレになったのか
- 121 :デフォルトの名無しさん:2012/03/18(日) 22:44:09.24 .net
- 青尻くんとこは結構自由みたいだけど、個人事業主なの?
- 122 :デフォルトの名無しさん:2012/03/20(火) 19:21:50.84 .net
- これまでの積み重ねがないと例えば会社が終わりになったときに技術的にも
全てを失うことになるよ。
- 123 :デフォルトの名無しさん:2012/03/20(火) 19:29:12.55 .net
- モダンなんかやってて技術の積み重ねになるわけがない。
- 124 :デフォルトの名無しさん:2012/03/20(火) 20:23:18.91 .net
- わざわざ不便なものを選んで苦しむのが積み重ねか
古いんだよそんなスポ根的発想は!
- 125 :デフォルトの名無しさん:2012/03/20(火) 22:46:00.37 .net
- 青尻くんは、プログラムは実現したいこととその解決方法の両方を記述する
ためのものだってこと、ちゃんと理解してるの?そうか、してないのかまだ
青いのか。
- 126 :デフォルトの名無しさん:2012/03/20(火) 23:19:46.15 .net
- 普通にわかれよ。
モダンperlがいいものだとしたら普通に普及する。
駄目なもので無理やり普及させたいのには訳がある。
本や講演などで稼ぎたい人もいるってこった。
- 127 :デフォルトの名無しさん:2012/03/21(水) 01:55:19.27 .net
- それには付き合えないけどね。
- 128 :デフォルトの名無しさん:2012/03/21(水) 08:37:14.83 .net
- > モダンperlがいいものだとしたら普通に普及する。
実際に普及してるよな。
- 129 :デフォルトの名無しさん:2012/03/21(水) 09:55:42.06 .net
- 半径5m以内の、CPANモジュールも使えない環境を見て言ってるんだろうな。
- 130 :デフォルトの名無しさん:2012/03/21(水) 22:40:10.92 .net
- そうだな。青尻くんが青筋立ててキーキーいう必要はないはずだよな?
- 131 :デフォルトの名無しさん:2012/03/23(金) 11:52:12.45 .net
- ステマってやつだな
- 132 :デフォルトの名無しさん:2012/03/24(土) 12:30:46.46 .net
- かわいいの♪ステマつげるぅ〜♪
いーないーな♪それいいなぁー♪
つげるタイプの魔法だょ〜♪
- 133 :デフォルトの名無しさん:2012/03/25(日) 07:17:46.89 .net
- ステルスマーケティング用語か。個々の技術とまったく関係ない話だな。
要は互換性のなさをごまかそうとしているんだな。ばればれだぞw
- 134 :デフォルトの名無しさん:2012/03/25(日) 16:36:42.85 .net
- >>118
で、きみの書いた誰でも保守できるようなコードはどこにあるの?
- 135 :デフォルトの名無しさん:2012/03/27(火) 21:08:40.38 .net
- 長期に渡る保守が予想されるソフトウェアは一時期の流行に合わせて
書くのではなく、将来を見据えた記述をするのが正解。
- 136 :デフォルトの名無しさん:2012/03/27(火) 21:29:13.75 .net
- 意固地に10年前の書き方を押し付ける必要はない
今使える書き方と今使えるモジュールで書けばいい
- 137 :デフォルトの名無しさん:2012/03/28(水) 05:29:06.98 .net
- 今使えない書き方で書けと読めてるお前がおかしい
ワンライナーや売り切り逃げ切りのソフトならお好きにどうぞ
- 138 :デフォルトの名無しさん:2012/03/28(水) 06:14:36.83 .net
- モダンは互換性がないのと将来のメンテナンスが不安なのが弱点か。
モダンゆえに時間軸の過去も未来もだめってことか。それは困る。
- 139 :デフォルトの名無しさん:2012/03/28(水) 06:17:08.97 .net
- お花を大切に
- 140 :デフォルトの名無しさん:2012/03/28(水) 06:46:19.55 .net
- >>138
>互換性がない
何と?
>将来のメンテナンスが不安
将来のメンテナンスを考えると何を使えばいいの?
- 141 :デフォルトの名無しさん:2012/03/28(水) 21:48:50.07 .net
- 素のPerlや標準モジュールが思いつかないあたり、いい、すごくいいよ、
青尻くん。だんだん気に入ってきた。
- 142 :デフォルトの名無しさん:2012/03/28(水) 22:59:03.49 .net
- たとえば標準モジュールの例としては、
http://perldoc.perl.org/index-modules-A.html
・文字コード関係
Encodeモジュール
(Jcodeは×)
・日付関係
Time::Piece、Time::Seconds
(もろもろある日付モジュールは×)
・オブジェクト指向関係
Object::Accessor、Class::Struct
データベース関係(ファイル以外)は、何もありません。
>>141が言っていることはこういう意味です。
- 143 :デフォルトの名無しさん:2012/03/28(水) 23:57:43.96 .net
- がんばって標準モジュールを列記してみたものの、やっぱり素のPerlは
思いつかないところ、青尻くん、すばらしい。すごくいい。
「モダンPerl使いなのでlocaltimeは使えません。」キリッ
職場で一度言ってみたい。。。試用期間で終わるだろうけどw
- 144 :営利利用に関するLR審議中@詳細は自治スレへ:2012/03/29(木) 00:40:36.87 .net
- >>143
localtimeは、Time::Pieceで使うよw
標準モジュールのTime::Pieceが素のPerlを拡張してくれるのに、
今更配列のインデックスで年取得して+1900とかする
冗長なコード書くバカいるのかい?
- 145 :営利利用に関するLR審議中@詳細は自治スレへ:2012/03/29(木) 01:26:41.94 .net
- >>143
お前がTime::Piece知らないってのが
モロバレだなw
はい、このように、モダンPerlを嫌ってる人=無知なだけ
ってことなのです。
- 146 :営利利用に関するLR審議中@詳細は自治スレへ:2012/03/29(木) 02:28:11.13 .net
- > 素のPerlや標準モジュールが思いつかないあたり
って言っておきながら、標準モジュールをあげたら今度は
> がんばって標準モジュールを列記してみたものの、やっぱり素のPerlは
> 思いつかないところ
もしかして、自分の知らない標準モジュールばっかりで
方向転換したのかいな?
- 147 :デフォルトの名無しさん:2012/03/30(金) 00:32:49.44 .net
- ぷぷぷ。
- 148 :デフォルトの名無しさん:2012/03/30(金) 01:00:11.52 .net
- モダンPerlとそうでないPerlとの違い、メリットについてもっと教えておくれ
- 149 :営利利用に関するLR審議中@詳細は自治スレへ:2012/03/30(金) 02:00:07.89 .net
- 標準モジュールを使いこなすのがモダン。
そうでないものは単に勉強不足なだけ。
- 150 :デフォルトの名無しさん:2012/03/30(金) 21:55:40.66 .net
- なんだ、そうだったのか。てっきりlocaltimeも満足に使えないのかと
思ってたよ。失敬、失敬、こりゃ失敬。
- 151 :営利利用に関するLR審議中@詳細は自治スレへ:2012/03/31(土) 00:55:04.25 .net
- 念のため言っとくがlocaltimeから
リストコンテキストで取得するのは古いやり方だからな。
最近のやり方はlocaltimeからTime::Pieceオブジェクトを返す方法。
もちろん標準モジュール。
- 152 :デフォルトの名無しさん:2012/03/31(土) 01:09:11.56 .net
- で、Time::Pieceのインタフェースってlocaltimeと互換性あるの?
例えばリストコンテキストで使うと同じように値が戻ってくるの?
- 153 :営利利用に関するLR審議中@詳細は自治スレへ:2012/03/31(土) 01:15:37.67 .net
- >>152
% perl -MTime::Piece -E'say (localtime);say scalar localtime;say localtime->datetime'
- 154 :デフォルトの名無しさん:2012/03/31(土) 01:19:35.68 .net
- しばらくメリットを考えてみる。
- 155 :デフォルトの名無しさん:2012/03/31(土) 02:46:36.36 .net
- 職場にようやく5.8が入ったんでよーし、これからはモダンPerlだぞ!と
意気込んできたらTime::Pieceは5.10以上と知ってがっかり。
らくだ本に載ってるTime::localtimeを使って愛想笑いでごまかすしかない。
- 156 :営利利用に関するLR審議中@詳細は自治スレへ:2012/03/31(土) 07:54:16.78 .net
- その職場に5.10が入るのは10年後であった。
そしてcpanmやperlbrewを入れることは全面禁止されていた。
- 157 :営利利用に関するLR審議中@詳細は自治スレへ:2012/03/31(土) 10:15:27.26 .net
- そんなんで仕事できるの?w
少なくとも効率が悪いね。
- 158 :営利利用に関するLR審議中@詳細は自治スレへ:2012/03/31(土) 11:16:41.36 .net
- 古い所が新しい所に
あっさり追い抜かれる原因の一つである。
- 159 :デフォルトの名無しさん:2012/03/31(土) 12:09:29.38 .net
- やっぱりモダンっていうのは供給者側の視点であって、利用者側の視点が
抜け落ちているな。残念。
- 160 :営利利用に関するLR審議中@詳細は自治スレへ:2012/03/31(土) 13:05:29.17 .net
- 利用者?
俺は利用者なんだが。
勉強しない奴に合わせる理由なんてないよ。
- 161 :デフォルトの名無しさん:2012/03/31(土) 15:55:14.37 .net
- おれに合わせる必要はない。逆におれはおれでperl4が使われているところも
あるから、がんばってlocaltimeで書くと。需要ベースで考えるしかない。
残念。
- 162 :デフォルトの名無しさん:2012/03/31(土) 17:19:27.03 .net
- まあゆっくりやっていこう。モダンPerlにタイムリミットがあるわけでなし。
- 163 :営利利用に関するLR審議中@詳細は自治スレへ:2012/03/31(土) 19:21:56.77 .net
- 古いPerlにはタイムリミットあるけどな。
Perl4のサポート期間は10年ぐらい前に終わっていそうだけどw
- 164 :営利利用に関するLR審議中@詳細は自治スレへ:2012/03/31(土) 19:22:54.88 .net
- perl4の需要はすでに99.9%無い
かろうじて残っているような需要に対応する必要はない。
- 165 :デフォルトの名無しさん:2012/03/31(土) 20:22:18.67 .net
- お前に期待してないから大丈夫だ。
- 166 :営利利用に関するLR審議中@詳細は自治スレへ:2012/03/31(土) 21:07:02.42 .net
- >>161
Perl4に拘るのはせいぜいあなた個人あるいはお客様だけでありますように
あなたの後をうける人、あなたの下につく人が不幸にならないことを祈りたいですなぁ
- 167 :デフォルトの名無しさん:2012/03/31(土) 22:03:37.68 .net
- そうだね。
- 168 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/01(日) 12:23:36.71 .net
- windowsXp:ActivePerl環境で、perlをタスクスケジューラからバックグラウンドで実行させたい。
wperl.exeで実行すればよいとgoogle先生が教えてくれたんだけど、
↓でやっても実行時にウィンドウが一瞬だけ開いてしまう。
C:\Perl\bin\wperl.exe sample.pl
↓だと↑より長くウィンドウが表示されるので、wperl.exeが効いていないわけではないっぽい。
C:\Perl\bin\perl.exe sample.pl
うーん、なぜだ
誰か教えてください
- 169 :デフォルトの名無しさん:2012/04/01(日) 19:58:44.51 .net
- タスクスケジューラに設定したのはwperl.exeではなくバッチファイルと予想。
- 170 :デフォルトの名無しさん:2012/04/02(月) 01:47:27.43 .net
- % pp --gui --verbose --output=sample.exe sample.pl
でスクリプトをexeファイルにする。
ttp://search.cpan.org/~rschupp/PAR-1.005/lib/PAR/Tutorial.pod
- 171 :168:2012/04/03(火) 00:54:00.46 .net
- デバッガあててみたら↓が原因だった
our $mech = new WWW::Mechanize(autocheck => 1);
手前は中で何やってるんだよ・・・
これ以上解析するのはめんどいが、
ウィンドウが表示されるのは耐え難いので
暇なときに中をのぞいてやる
>>170
なんかすごそう
暇なときにやってみる
- 172 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/07(土) 01:50:55.99 .net
- ハッシュに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 .net
- 投稿の際に行数を節約しようと修正した部分で動かないところがありました
×*$AUTOLOAD = sub : lvalue { my ($self) = @_; $self->{$1}; };
my $name = $1;
*$AUTOLOAD = sub : lvalue { my ($self) = @_; $self->{$name}; };
- 174 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/07(土) 17:14:55.67 .net
- 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 .net
- 在日韓国・朝鮮人や,
働かないで金をせびるクズ人間を取り締まってくれや。
追うも国士館,追われるも国士館頼むぞ。
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 :172:2012/04/07(土) 23:31:22.35 .net
- >>174
おおーありがとうございます。AUTOLOAD自体をlvalueにするというのは気づきませんでした。
実際のプログラムはもう少し複雑ですが、正しく動作しています。
>>普通のハッシュでよくね?
たしかにw
一応オブジェクトであってはほしいのですが、ハッシュ記法であれば何の不都合もなく
$obj->{name} = 'bar';
と書けるわけですしね。
オマケでメソッド呼び出しも、と考えてたらハマってしまった格好です
- 177 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/08(日) 21:43:29.63 .net
- Apple 社の Mac OS X は、 ベースの一部 が FreeBSD です。Apple 社独自の
ユーザインタフェースとともに、豊富なUNIX(R)基盤が取り入れられています。
- 178 :営利利用に関するLR審議中@詳細は自治スレへ:2012/04/08(日) 23:11:38.92 .net
- OpenStepじゃなかったっけ?
- 179 :デフォルトの名無しさん:2012/04/14(土) 14:38:18.13 .net
- >>171
事前にSTDOUT、STDERRをつぶして
おいたらどーなる?
ウインドウアプリで、そこに吐くと、
自動的に新規コンソールが開く、
とかだったような。
- 180 :デフォルトの名無しさん:2012/04/17(火) 22:06:08.88 .net
- >>179
タスクのウィンドウが表示されなくなってうれしいものの、その他の
ウィンドウも一切表示されなくなりました ;_;
(D-SUB抜いて試しました)
- 181 :デフォルトの名無しさん:2012/04/18(水) 03:18:24.23 .net
- 一方、日本は...
瞳をとじた
- 182 :デフォルトの名無しさん:2012/04/29(日) 00:38:07.87 .net
-
そしてこのスレッドもクローズした
- 183 :デフォルトの名無しさん:2012/04/29(日) 06:35:31.99 .net
- 再開
- 184 :デフォルトの名無しさん:2012/04/29(日) 06:52:54.09 .net
-
∧∧
( ゚Д゚ )∩
⊂ ノ
/ 0
し´
えっ…と、
ここかな…、と
∧∧ ∧∧
∩゚Д゚≡゚Д゚ )
`ヽ |)
| __ |〜
∪ ∪
ドスッ
∧∧.ミ. _
( )┌┴┴┐
/ つ.再開│
〜 ./ └┬┬┘
∪∪ ││_ε3
゛゛゛゛
- 185 :デフォルトの名無しさん:2012/04/29(日) 14:21:23.37 .net
- 最近のPerlでOOP用ライブラリってどんなのが主流ですか?
- 186 :デフォルトの名無しさん:2012/04/29(日) 14:23:06.27 .net
- Mooseだろ?
最近のライブラリでそれ以外使ってるの有るのか?
- 187 :デフォルトの名無しさん:2012/04/29(日) 14:25:50.06 .net
- ありがとうございますMoose調べてきます
- 188 :デフォルトの名無しさん:2012/04/29(日) 18:38:18.38 .net
- Mooseが重いと思ったらMouseとAny::Mooseの組合せで代用もよし
- 189 :デフォルトの名無しさん:2012/04/29(日) 20:25:09.14 .net
- 最初から Mouse 使ったほうが
- 190 :デフォルトの名無しさん:2012/05/15(火) 18:28:38.45 .net
- cpan でモジュールインストールしんたいんだけど
install やら make やら make install やら全部 OK
でたのに
perldoc -l インストールしたモジュール名
やるとそんなのないて怒られる。
なんで?
- 191 :デフォルトの名無しさん:2012/05/15(火) 22:29:19.68 .net
- >>190
普通 perldoc -l DBI などは成功すると思うよ。
どうやって入れたの? モジュール名は?
- 192 :デフォルトの名無しさん:2012/05/16(水) 07:35:09.36 .net
- >>191
cpan>install Math::Vector::Real
でいれて
全部 make やら make install やら全部 OK と出たが
ないようだった。
cpanplus でインストールしてみたらいけたのだが原因がわからない。
- 193 :デフォルトの名無しさん:2012/05/16(水) 19:04:48.32 .net
- Regexp::Assembleでマッチした時って
後方参照使えるの?
- 194 :デフォルトの名無しさん:2012/06/20(水) 00:40:13.88 .net
- 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 :デフォルトの名無しさん:2012/06/20(水) 01:29:26.87 .net
- なんか面白そうなお題なのでとりあえず最悪くさいものを作ってみた
素晴らしい人がボロクソにけなしてくれると期待しつつ投げてみる
$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 .net
- >>194
場当たり的に色々試していたら
@a = $str =~ /(?=(AB|BC))/g;
で、(AB,BC) が取得できました。
(?= で、次の走査開始点を移動させないようにしたから、でしょうか?
- 197 :デフォルトの名無しさん:2012/07/15(日) 14:22:38.65 .net
- 一過性のモダンPerlはもう終わり。
らくだ本の発行によって本来のPerlへの回帰が始まっている。
- 198 :デフォルトの名無しさん:2012/07/15(日) 14:36:07.64 .net
- 本来のPerl=5.0でも動く範囲でしかコード書かない
- 199 :デフォルトの名無しさん:2012/07/15(日) 16:03:33.45 .net
- そういえばPerl5のスレってないね?やっぱりまだPerlの方が使われてるのかな?
- 200 :デフォルトの名無しさん:2012/07/20(金) 00:44:57.65 .net
- モダンPerl書いたひとはどうしてるの?最近見ないけど、やっぱりだめなの?
- 201 :デフォルトの名無しさん:2012/07/20(金) 06:04:14.97 .net
- まあソースをみて改良したりとか前向きな動機はほぼゼロで99.99%はこのメーカー
困らせてやれって開示請求なんだろうな。
- 202 :デフォルトの名無しさん:2012/07/20(金) 23:17:21.71 .net
- モダンな奴はそもそもPerl使わないからな
- 203 :デフォルトの名無しさん:2012/07/25(水) 02:06:14.30 .net
- USP(Universal Shell Programming)研究所は、UNIX/Linuxの基本思想である、
「小さな道具」(コマンド)を組み合わせて「問題を解決する」(シェルス
クリプト)手法の研究・普及を行っています。この開発手法(ユニケージ
開発手法)は、従来のウォーターフォール型開発や、オブジェクト指向言
語・データベースソフトを用いた開発手法と一線を画し、圧倒的な開発生産
性 圧倒的な柔軟性を特徴としています。
ttp://www.usp-lab.com/
- 204 :デフォルトの名無しさん:2012/07/30(月) 19:45:03.06 .net
- 本スレも、荒しに常駐されてぐだぐだだし、
WebProgの方も同じみたいに、スレ違いの会話が
ぐだぐだ続いて終了したし、終りかなあ。
ここのスレの方がまだ真面にperlの話をしてた気がするよ。
- 205 :デフォルトの名無しさん:2012/07/30(月) 20:56:12.50 .net
- まあモダンには2つあって、ひとつはすぐに古くなるモダン。
もうひとつはいつまでも古くならないモダン。
おれは断然古くならないモダンのほうがいいな。
- 206 :デフォルトの名無しさん:2012/07/30(月) 23:46:15.85 .net
- XSを使うと1年後に古くなるほうのモダンですか?
- 207 :デフォルトの名無しさん:2012/07/30(月) 23:47:25.65 .net
- 軟便スキー独りか知らんが、
韓国ネタのコピペしたり
hoge煽りしたり
ググれ煽りしたり
馬鹿じゃねーの?
- 208 :デフォルトの名無しさん:2012/07/31(火) 00:19:41.40 .net
- そしてゆっくりモダンになっていく...
それが理想です
- 209 :デフォルトの名無しさん:2012/07/31(火) 00:27:00.96 .net
- 進歩というものは過去を捨てることではない。
過去に加えて積み上げるものなのだ。
- 210 :デフォルトの名無しさん:2012/07/31(火) 01:28:15.89 .net
- 荒しが950踏んで嬉々としてhoge禁止をテンプレに入れる姿が目に見える様だ
- 211 :デフォルトの名無しさん:2012/08/04(土) 17:51:38.53 .net
- 過去のソフトウェアと作法やインタフェースが異なる言い訳としてモダンと
いう用語を使うのはまずい。今までより苦労が増えるなら移行は進むはず
がない。
- 212 :デフォルトの名無しさん:2012/08/05(日) 20:55:07.11 .net
- ところでこのスレが53箱目の続きってことでいいの?
- 213 :デフォルトの名無しさん:2012/08/05(日) 20:56:46.40 .net
- すまん、53箱目の続きあった。“54目”になってたんで検索に引っかからなかったわ。
- 214 :デフォルトの名無しさん:2012/08/06(月) 18:23:11.89 .net
- 以下のように時刻と曜日が書かれたlogファイルがあります。
Jun 6 00:07:41 xxxxx
Aug 8 00:14:34 yyyyy
Aug 8 00:16:26 zzzzz
〜
(以下略
現時刻から一時間前のログのみ抽出して、抽出したログの行数だけ出したいのですがこの処理って一行(ワンライナー)で書けますか?※重複とかは無視して単純に一時間分のログが引っこ抜ければ良いです。
詳しい人教えてください。
- 215 :デフォルトの名無しさん:2012/08/06(月) 18:26:08.19 .net
- >>214
訂正
1時間前のログのみ抽出じゃ無くて一時間分のログを抽出です。
- 216 :デフォルトの名無しさん:2012/08/06(月) 18:57:53.32 .net
- >>214
> この処理って一行(ワンライナー)で書けますか?
書けます。
- 217 :デフォルトの名無しさん:2012/08/07(火) 18:06:48.10 .net
- >>216
やり方教えてください!
一時間前の日付時刻と現在の日付時刻を比較して条件を満たせば該当行を出力みたいなことをやれば良いとおもうんですが、どう書けば良いのかわかりません
- 218 :デフォルトの名無しさん:2012/08/07(火) 18:12:29.44 .net
- 横レス(別人)
$ 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 :デフォルトの名無しさん:2012/08/07(火) 18:20:05.07 .net
- >>218
あんた2012年の住人じゃないだろw
- 220 :デフォルトの名無しさん:2012/08/07(火) 18:30:46.11 .net
- >>218
レスありがとうございます。
参考にさせてもらいます。
でも2013年以降も使えるのが理想ですが…
- 221 :デフォルトの名無しさん:2012/08/07(火) 18:34:05.93 .net
- 年跨ぎのケースを考え無くて良いなら、コードの2012を2013にすりゃいいだけ。
- 222 :デフォルトの名無しさん:2012/08/08(水) 18:20:12.98 .net
- というより、「年」は全部今年として扱えばいい。
年が明けてから1時間はまともにログを拾えなくなるけど。
そもそもログデータに「年」の情報が入っていないんだから、
厳密に処理するのは無理だべ。
- 223 :デフォルトの名無しさん:2012/08/08(水) 18:36:12.52 .net
- >>218に対して言ってるのなら、
最初からそれを念頭に書いてないか?
コードは既にそうなってるし、
説明文の方は質問者に向けたもんだし、
改造しやすいように除算は態々、2012 -1900 にして残してあるし。
それともtime関数に、年を除外するオプションでもあんの?
- 224 :デフォルトの名無しさん:2012/08/08(水) 19:02:57.22 .net
- >>223
年が変わるごとに 2012 を 2013 だの 2014 だのに書き換えるの面倒だろうから
「年」のところはログの日付も現在の時間も全部localtimeの「今年」という前提で
扱えば毎年コード書き直さなくてもよくなるだろっていってるんだよボケ。
- 225 :デフォルトの名無しさん:2012/08/08(水) 19:09:28.99 .net
- 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 :デフォルトの名無しさん:2012/08/08(水) 19:17:05.60 .net
- で、試しに自分でも書いてみた。
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 :デフォルトの名無しさん:2012/08/08(水) 19:19:19.26 .net
- >>225
了解してくれてどうも。
俺の日本語がわかりにくかったのか…
- 228 :デフォルトの名無しさん:2012/08/08(水) 19:28:58.56 .net
- >>226
> 218の方がすっきりしてるか。なぜかうちの環境だとエラー吐いて動かなかったけど…。
> (Day 'Jun' out of range 1..31 at -e line 1 て言われた)
なぜエラーが出たかわかった。自分でテスト用に切り出して作ったログファイルの
各行頭にスペースが入っていたからだった。(ありがち)
- 229 :デフォルトの名無しさん:2012/08/08(水) 21:24:39.24 .net
- >>227
違う。料理の合間に、斜め読みでレスした俺が悪い。
- 230 :デフォルトの名無しさん:2012/08/09(木) 03:59:05.87 .net
- 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 :デフォルトの名無しさん:2012/08/09(木) 05:09:37.92 .net
- >>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 :デフォルトの名無しさん:2012/08/09(木) 08:02:26.85 .net
- 同じぐらいの長さのワンライナーなのに
>>218がダサくて>>226がスタイリッシュに見えるのはなぜだろう
- 233 :デフォルトの名無しさん:2012/08/09(木) 08:03:44.22 .net
- レスくれた人ありがとうございます>>214です。
まだperlは入門書読み終わった程度なので右も左も分かりませんが、教えて頂いたコードを参考に色々書き方を研究したいと思います。
- 234 :デフォルトの名無しさん:2012/08/12(日) 12:31:10.61 .net
- 入門書読み終えたばかりの初心者には組込みのlocaltime関数を教えてあげないよ
- 235 :デフォルトの名無しさん:2012/08/13(月) 16:57:18.75 .net
- >>234
なにが言いたいのかわからん
- 236 :デフォルトの名無しさん:2012/08/14(火) 00:43:26.35 .net
- ほら、俺ってサ
意外にすいすいしいヤツ
だからサ
- 237 :デフォルトの名無しさん:2012/08/14(火) 23:54:42.42 .net
- 初心者には localtime の方が便利な件
- 238 :デフォルトの名無しさん:2012/08/15(水) 05:40:02.45 .net
- >>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 :266 (未来より参上):2012/08/15(水) 16:15:51.26 .net
- >>238
おおうスタイリッシュ。
state とか使ったことなかったけど便利そうだな。参考にさせていただきます。
ワンライナーはあんまし書かないのもあってオプションも -i -n -p -e くらいしか
普段使ってなかったりしますんで。-E すら滅多に使わないな…。nもpもなしに
while(<>)埋め込むのもループの前後で処理が必要な時とかは普通にやってるし。
その程度のスキルでもとりあえず動くものは書けるってのがPerlのメリットでもあり
欠点でもあると…まあこの場合メリットということで。TMTOWTDI。(覚えづらいよなこれ)
- 240 :デフォルトの名無しさん:2012/08/16(木) 22:01:16.60 .net
- なんで隔離スレで真面目に質問箱してんのよ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 :デフォルトの名無しさん:2012/08/19(日) 22:14:32.47 .net
- 初めてのPerl第6版とPerl5.16.1のことだね。
Unicodeサポートの問題に今頃気づいたって読める。
第5版のときはまだ気づいていなかったのかな?
まあ、そんときは使ってなかったんだろうけどな。
- 242 :デフォルトの名無しさん:2012/08/20(月) 05:51:33.20 .net
- 今上天皇侮辱発言の祭りが落ち着いたから、戻って来たぞゴキブリ。
でも、まあ、5割くらい減ったんじゃねーかな?
- 243 :デフォルトの名無しさん:2012/08/20(月) 22:17:22.42 .net
- バルサン耐性を備えて5割以上パワーあっぷぷぷw
- 244 :デフォルトの名無しさん:2012/08/26(日) 15:07:51.22 .net
- ゆっくりモダンになっていく・・・
・・・モダンRuby。
- 245 :デフォルトの名無しさん:2012/08/29(水) 00:35:50.14 .net
- モダンPERL追いかけてたら時代に取り残されましたとほほ
- 246 :デフォルトの名無しさん:2012/08/30(木) 21:05:34.35 .net
- >>245
その最後の「とほほ」だけで、もう10年以上は時代に取り残されてるよな
- 247 :デフォルトの名無しさん:2012/08/30(木) 21:12:12.26 .net
- とほほだってよw
もうお前5.6こそ最高とかいって周りに強要してろよ
- 248 :デフォルトの名無しさん:2012/08/31(金) 00:07:22.19 .net
- 5.6だと日本語がちゃんと使えません。仕事で使うなら5.005一択です。
- 249 :デフォルトの名無しさん:2012/09/01(土) 09:59:22.19 .net
- どうやらモダンパールは時代遅れみたいですね
本家のパールはすでにその先に進んでます
テキスト処理90%のPerlが文字列を楽に扱えないなんてたちの悪い冗談でしか
ありません
- 250 :デフォルトの名無しさん:2012/09/02(日) 02:19:31.92 .net
- C++へのアンチテーゼの側面もあったPerlなのにモダンPerlはどうしちゃったのかな
- 251 :デフォルトの名無しさん:2012/09/03(月) 01:19:39.59 .net
- テクノロジーはスクラップアンドビルドなものと考える連中はとほほの内容が
古いと考えるようだ
- 252 :デフォルトの名無しさん:2012/09/08(土) 14:37:07.80 .net
- かってに「モダン」とか名乗るなや
- 253 :デフォルトの名無しさん:2012/09/09(日) 00:59:31.20 .net
- モダンでもないのにモダン名乗られてもなあ
- 254 :デフォルトの名無しさん:2012/09/09(日) 08:13:34.65 .net
- リャマ本第6版までモダンに毒されてるよ
おまいらリャマ本は第1版こそ至高・正義だ
定価より高くても中古で第1版を買え!
- 255 :デフォルトの名無しさん:2012/09/09(日) 17:51:10.11 .net
- 第1版ってのはバージョン4のピンク本のことか?あれは本当にいい本
- 256 :デフォルトの名無しさん:2012/09/09(日) 18:42:20.14 .net
- ダヨモンPerl
アリャマ本
- 257 :デフォルトの名無しさん:2012/09/10(月) 00:59:47.94 .net
- 赤らくだ本だとか赤リャマ本の序文、それにポケットリファレンスの序文でLarryはふざけ過ぎてしばらくの間O'reillyから干されていた。今回「まじめに書く」と誓ったためようやく第4版の執筆許可が下りたらしい。
- 258 :デフォルトの名無しさん:2012/09/12(水) 00:04:41.71 .net
- 結局らくだ本的にはモダンPerl(=perl5.8)はスルーってことか
最近は重いモジュールも避けられる傾向にあるしな
- 259 :デフォルトの名無しさん:2012/09/12(水) 00:11:25.67 .net
- 重いモジュールも避けられる傾向にあるしな(キリッ
とか言う奴は十中八九List::Utilとかを使わない
- 260 :デフォルトの名無しさん:2012/09/12(水) 00:30:32.64 .net
- 実際に書かせてみればろくなコード書かないんだろうな
- 261 :デフォルトの名無しさん:2012/09/12(水) 00:31:53.70 .net
- モダンperlと言われているもののうち一部の重たいモジュールを持ち出して
重たいモジュールは避ける傾向にあるからモダンperlも避ける傾向だよねー
なんてどんな詭弁だよ
- 262 :デフォルトの名無しさん:2012/09/12(水) 00:33:07.74 .net
- 確かにLarryはモダンPerlについて多くを語ろうとしないな
きっと軽いスクリプトが好きなんだろうなList::Utilとか使わない
- 263 :デフォルトの名無しさん:2012/09/12(水) 00:55:43.31 .net
- List::UtilはXSで書かれてるから自分でPerlで書くよりよっぽど高速なわけだが
てかとってつけたようにLarry様の名前出すなよw
- 264 :デフォルトの名無しさん:2012/09/12(水) 01:36:14.68 .net
- GUIやバイナリファイル扱うときにXSを使って効率を上げるのは分かるが
そうでないときにXS使ってスクリプトの利便性を下げるのは簡便だな。
- 265 :デフォルトの名無しさん:2012/09/12(水) 01:47:29.25 .net
- 勘弁
- 266 :デフォルトの名無しさん:2012/09/12(水) 02:38:31.59 .net
- >>264
なぜ利便性が下がる?
- 267 :デフォルトの名無しさん:2012/09/13(木) 23:01:41.84 .net
- 第1ヒント:テキスト萌えたんのポータビリティ強化月間
- 268 :デフォルトの名無しさん:2012/09/13(木) 23:29:47.30 .net
- 「スクリプトが何かよく分かっていない」と書いたはらたいらに3,000点。
- 269 :デフォルトの名無しさん:2012/09/14(金) 23:30:28.34 .net
- バイナリではないところがスクリプトの利便性って分かるかな?無理かな?
- 270 :デフォルトの名無しさん:2012/09/15(土) 17:45:47.86 .net
- 利便性の優先度
作る人の利便性 <<< 使う人の利便性
- 271 :デフォルトの名無しさん:2012/09/15(土) 18:43:43.53 .net
- 中身が古いか新しいかは使う人の利便性に影響はしないけどね
- 272 :デフォルトの名無しさん:2012/09/15(土) 22:16:30.43 .net
- 結局モダンかどうかは気持ちの問題だし、供給者側の主張次第でしょ
利用者側にとってはちゃんと使えればどうでもいいよそんなもん
- 273 :デフォルトの名無しさん:2012/09/19(水) 01:43:10.30 .net
- モダンパールは単なる自己満足であったか
そもそも書いたときはモダンでも後で読むときはモダンではないわな
モダンと言われると互換性がないんじゃないかと思って警戒するひとも
いるかもしれないしな
- 274 :デフォルトの名無しさん:2012/09/19(水) 02:38:41.68 .net
- use strict;
use Encode;
- 275 :デフォルトの名無しさん:2012/09/20(木) 09:27:07.77 .net
- Perl 6は、ポストモダンですか
- 276 :デフォルトの名無しさん:2012/09/20(木) 13:14:19.79 .net
- バイナリでの文字列置換をしています
$str =~ s/\xFF/\x00/g;
という書き方ならうまく行くのに、
$src = '\xFF';
$dst = '\x00';
$str =~ s/$src/$dst/g;
ではうまく行きません
$srcの部分は思い通り検索できるのに、
$dstの部分はバイナリではなく \x00 という文字列に置換されます
どうすればいいですか
- 277 :デフォルトの名無しさん:2012/09/20(木) 13:16:41.93 .net
- $dst = "\x00";
- 278 :デフォルトの名無しさん:2012/09/20(木) 13:31:02.66 .net
- 確かにそういうことなのですが、
何故$dstという変数を使うかというと、その中身が不定だからです
$dst に '00' とか '01' とかいろんな文字列が入った場合の置換の書き方はありませんか
とりあえず、pack("C", hex($dst)) と書いて eオプションで評価すれば
うまく行くのは確認したのですが、$srcみたいなスマートな書き方はできないものかと
- 279 :デフォルトの名無しさん:2012/09/20(木) 14:11:13.98 .net
- packするのが一番マシじゃないだろうか
ただ置換内ではなくその直前に追い出したいけど
- 280 :デフォルトの名無しさん:2012/09/20(木) 14:30:17.21 .net
- 後半が文字列で表現されている時に、
それをテキストとして見ていいのかバイナリとして見ていいのか、
両方の解釈が有り得るのが問題なんだな
書いたままだよ、というルールで統一されていれば納得するものを、
コードに埋め込んだ時はバイナリだけど、変数が来たら文字列、という解釈をして、
しかも、置換の前半部分は変数でもバイナリとする変態文法
逆に前半を文字列として認識させたい時はどうするんだろう
- 281 :デフォルトの名無しさん:2012/09/20(木) 22:51:50.63 .net
- すみません、何がなんだか分からないのでゆっくりと、そして複数の質問で
あるのなら分割して1つずつ質問してもらっていいですか?
中卒なんで
- 282 :デフォルトの名無しさん:2012/09/20(木) 22:56:52.61 .net
- eval "" と eval {} と /e で解決しそうに読めるんですけど
- 283 :デフォルトの名無しさん:2012/09/21(金) 00:33:30.46 .net
- よくある
$str =~ s/%([a-zA-z0-9]{2})/pack("C", hex($1))/eg;
こんな置換を、packやらhexやら使わずに書いてみそ
という問題
- 284 :デフォルトの名無しさん:2012/09/21(金) 00:35:30.66 .net
- >>276
> バイナリでの文字列置換をしています
{
no utf8;
$str =~ s/\xFF/\x00/g;
}
- 285 :デフォルトの名無しさん:2012/09/21(金) 00:43:45.02 .net
- eval qq{ \$str =~ s/\\Q$src\\E/$dst/g };
- 286 :デフォルトの名無しさん:2012/09/21(金) 11:42:35.55 .net
- どうやってもスマートじゃないな
前半も後半も素直にpackしておくのが一番分かり易い
なまじ前半に書けてしまうのがおかしい
- 287 :デフォルトの名無しさん:2012/09/22(土) 06:20:20.87 .net
- 文字列とバイナリを区別する時点から問題が発生していると思うので、
区別しなければ解決するのだと思う
- 288 :デフォルトの名無しさん:2012/09/22(土) 12:20:01.08 .net
- 楽になるために区別するのならよいわけだけど、
区別したがゆえに苦労するのであれば、区別しなければ苦労はない。
過去にとらわれるのはもうやめです。進歩しませんよ。
- 289 :デフォルトの名無しさん:2012/09/22(土) 15:03:36.74 .net
- どっちに解釈するか文脈で判断、ということをperlはあちこちでやっていて、
それは多くの場合正しいので表面化しないけど、
こんな風に不合理を露呈する場合もある
- 290 :デフォルトの名無しさん:2012/09/22(土) 20:40:59.67 .net
- プログラムはテキスト、処理するデータはバイナリ
対
プログラムはバイナリ、処理するデータはテキスト
深い質問だな、これは
- 291 :デフォルトの名無しさん:2012/09/22(土) 22:17:29.81 .net
- Win7上で、Strawberry Perl と SQL Server2008 を使用して開発をしています。
DBD::ODBCでDBにアクセスをして、データを操作しています。
質問
・DBIでSQL Serverのデータベースにconnectを作成し、あるキーとなる情報を取得するSQLを
prepare、execute、fetchrow_arrayを使用して取得し、取得したキーをもとに別なSQLを作成し、
実行しようとしましたが、「接続がビジーです」といった内容のエラーが返ってきます。
fetchrow_arrayでデータを参照しつつ、同一のデータベースから同じようにデータを取得する
ことはできないのでしょうか?
何か情報がありましたら、教えてください。
よろしくお願いいたします。
- 292 :デフォルトの名無しさん:2012/09/22(土) 23:59:54.07 .net
- 2つのSQL文をひとつにまとめるのが正攻法に思えるが「参照しつつ」をやめて「参照し終わってから」にすればいいんじゃないかと言ってみた。
- 293 :デフォルトの名無しさん:2012/09/23(日) 09:13:22.29 .net
- SQL文を相関副問い合わせを使って書き直す
- 294 :デフォルトの名無しさん:2012/09/23(日) 10:24:02.93 .net
- Strawberry Perlは「接続がビジーです」に関わっていない件
- 295 :デフォルトの名無しさん:2012/09/23(日) 11:27:29.98 .net
- プログラムはテキスト(簡便)、処理するデータはバイナリ(簡便)
プログラムはバイナリ(勘弁)、処理するデータはテキスト(勘弁)
- 296 :デフォルトの名無しさん:2012/09/23(日) 11:29:56.95 .net
- $str = 'aaa[bbb[c]ddd]eee';
$str =~ s/\[.+?\]//;
こんな感じにした時に
aaa[bbbddd]eee
になって欲しい
gを付けたら、
aaaeee
になって欲しい
うまい書き方はありますか
- 297 :デフォルトの名無しさん:2012/09/23(日) 12:06:04.53 .net
- >>296
s/\[.{1}\]//;
オプションつけて最長マッチとかってあるのか?
- 298 :デフォルトの名無しさん:2012/09/23(日) 12:40:34.62 .net
- 中身が固定だと判ってるなら\[c\]でいいんだけどね
- 299 :デフォルトの名無しさん:2012/09/23(日) 16:22:38.40 .net
- $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 :デフォルトの名無しさん:2012/09/23(日) 20:34:01.47 .net
- スカラーで置換した数を返す、という仕様は
whileで使ってくれと言ってるようなもんだな
- 301 :291:2012/09/24(月) 00:26:24.29 .net
- >>292-293
ありがごうございます。
ただすみません、自分の書き方も悪かったのですが・・・
取得した情報で、その後の処理を変更しています。
そのため、発行するSQLもselectだけでなく、insert,update,deleteなどもあり、
単純にSELECTを見直すというわけにもいかず。
- 302 :デフォルトの名無しさん:2012/09/24(月) 00:48:00.82 .net
- 複数のアクティブな結果セット (MARS) の使用
http://msdn.microsoft.com/ja-jp/library/ms131686.aspx
- 303 :291:2012/09/24(月) 22:40:47.72 .net
- >>302
ありがとうございます。
こんなものがあったんですね。知らなかったです。
- 304 :デフォルトの名無しさん:2012/09/26(水) 00:01:18.00 .net
- Perlのこと聞きたかったら、いつでもこのモダンPerlスレに来な
- 305 :デフォルトの名無しさん:2012/09/26(水) 01:15:59.84 .net
- モダン焼きは四角く切るのと放射状に切るのとどっちがいい?
- 306 :デフォルトの名無しさん:2012/09/26(水) 05:22:19.56 .net
- おちんちんお切ってしまえ
- 307 :デフォルトの名無しさん:2012/09/27(木) 01:25:13.55 .net
- たこ焼き器で作るとひと口サイズなので切らなくともよい。
- 308 :デフォルトの名無しさん:2012/09/27(木) 06:03:41.53 .net
- 私女だけどひと口サイズのおちんちんは勘弁
- 309 :デフォルトの名無しさん:2012/09/30(日) 12:10:27.15 .net
- 切り方変えても味は変わらないのでそのままかぶりつく
- 310 :デフォルトの名無しさん:2012/09/30(日) 23:22:27.63 .net
- 結局一過性のモダンポールか、青臭いな
- 311 :デフォルトの名無しさん:2012/10/06(土) 16:46:58.45 .net
- 少数のエリートが良かれと思っても多数派の一般民が取り入れないと意味がない
ひとがプログラミングする訳だから、フィーリングを大事にしないとだめだな
- 312 :デフォルトの名無しさん:2012/10/14(日) 16:56:04.97 .net
- 開発効率のことだけで言うと
モダンPerlの方が効率がいいね。
- 313 :デフォルトの名無しさん:2012/10/14(日) 23:37:41.19 .net
- 俺が好きなのはポストモダンPerlだな
- 314 :デフォルトの名無しさん:2012/10/15(月) 03:13:27.49 .net
- ああ、アレね、アレのことね
- 315 :デフォルトの名無しさん:2012/10/15(月) 12:16:14.31 .net
- Time::Pieceの実験用モルモットになるよりlocaltimeをツールとして安心して使うタイプか
- 316 :デフォルトの名無しさん:2012/10/15(月) 15:57:01.88 .net
- モジュールに一切頼らないスタイルこそが正義
- 317 :ハートマン軍曹:2012/10/15(月) 18:43:05.44 .net
- お前の顔はモダンアートの醜さだ!
- 318 :デフォルトの名無しさん:2012/10/16(火) 00:31:08.75 .net
- もうPerlは5.16の時代ですよ。
5.12とそれより前はサポート終了しました。
10年前のPerlのことなんか、
考える必要ないんですよ。
- 319 :デフォルトの名無しさん:2012/10/16(火) 00:42:38.62 .net
- 5.6とか使いたい奴は自分らで勝手に使ってたらいい
ただし5.6を他人に強要したり、5.6向けに書いた古臭いスクリプトを他人に押し付けて保守させたりするな
- 320 :デフォルトの名無しさん:2012/10/16(火) 01:21:14.64 .net
- >>319
いやなことあったの?
- 321 :デフォルトの名無しさん:2012/10/16(火) 01:23:22.72 .net
- >>320
主にこのスレでねw
- 322 :デフォルトの名無しさん:2012/10/16(火) 01:37:39.47 .net
- とにかくコードが手元の環境で動くのが正義
そして長期間に渡るメンテが可能で楽なのが正義
localtimeは標準モジュールより格上の標準関数
ポータブルPerlこそがこの世の正義
319による保守は誰も期待していない
- 323 :デフォルトの名無しさん:2012/10/16(火) 01:59:23.74 .net
- >>321
無理して見なくていいぞ
- 324 :デフォルトの名無しさん:2012/10/16(火) 02:00:05.08 .net
- ポータブルPerlって
Perlのバージョンはなんだ?
言ってみろよwおらおらw
- 325 :デフォルトの名無しさん:2012/10/16(火) 02:04:53.00 .net
- >>322
> とにかくコードが手元の環境で動くのが正義
> ポータブルPerlこそがこの世の正義
矛盾してる
- 326 :デフォルトの名無しさん:2012/10/16(火) 02:06:12.86 .net
- >>322
> ポータブルPerlこそがこの世の正義
つまり手元の環境で動きさえすればいいってもんじゃないってか?
- 327 :デフォルトの名無しさん:2012/10/16(火) 02:06:57.24 .net
- >>322
> localtimeは標準モジュールより格上の標準関数
格上わろす
- 328 :デフォルトの名無しさん:2012/10/16(火) 02:21:46.91 .net
- 手元にたくさんあるんだろ、モルモット君。
- 329 :デフォルトの名無しさん:2012/10/16(火) 11:09:16.58 .net
- localtime()は、Cにもあるよ
- 330 :デフォルトの名無しさん:2012/10/17(水) 18:24:12.99 .net
- うるさいゴミ
- 331 :デフォルトの名無しさん:2012/10/20(土) 13:36:25.82 .net
- リストコンテキストとスカラーコンテキストの違いとか printf とかはモダン
うんぬんの前に知らないとだめだろ。
モダンなゆとり世代。壮大な実験に付き合わされたモルモット。かわいそす
- 332 :デフォルトの名無しさん:2012/10/20(土) 14:30:09.12 .net
- 刹那的なモダンPerlでは自分が書いたスクリプトを数十年に渡って保守する
ことは不可能と悟り本来のPerlに戻ってくる。で、localtimeで書く。
- 333 :デフォルトの名無しさん:2012/10/20(土) 14:43:54.03 .net
- >>332
perl本体に組み込まれた関数が何十年後も互換を維持してるとは思えないがな
- 334 :デフォルトの名無しさん:2012/10/20(土) 15:22:59.17 .net
- 寿命が6〜8年のモルモットの推測が当たるとは思えないがな
- 335 :デフォルトの名無しさん:2012/10/20(土) 15:54:12.00 .net
- 数十年後も使い続ける物はCで書いとけよ。
Perl5自体、メンテされてるかどうか分からんぞ。
- 336 :デフォルトの名無しさん:2012/10/20(土) 17:23:24.31 .net
- mooseとか使いまくってる俺が通りますよ
早くPerl6出ないな〜
- 337 :デフォルトの名無しさん:2012/10/20(土) 20:08:44.97 .net
- Cで書いたら実行環境の違いを記述するコードでアプリケーションが
埋め尽くされるんだろーなー
- 338 :デフォルトの名無しさん:2012/10/20(土) 20:25:13.96 .net
- >337
Linuxのソース見たけど、
一部の層で吸収しているから
ほとんどのコードは実行環境の違いなんて関係ないよ。
ま、お前にはそんな芸当出来ないだろうがな。がはははははwwww
- 339 :デフォルトの名無しさん:2012/10/20(土) 20:32:14.18 .net
- ゆとりだからLinuxしか習わなかったんだよね?かわいそす
- 340 :デフォルトの名無しさん:2012/10/20(土) 20:34:13.97 .net
- 「Linuxしか習わなかった」と判断した理由を書いてください。
ゆとりの脳内はよくわかりませんのでw
あ、書かなくても(逃げても)構いませんよwww
- 341 :デフォルトの名無しさん:2012/10/20(土) 20:54:05.91 .net
- 書いてもいいんだけど、Linuxのソースが、Linux以外のオペレーティング
システム上でperlを実行したときの実行環境の違いを吸収できると考えて
いるひとには理解できなそう
- 342 :デフォルトの名無しさん:2012/10/20(土) 21:09:04.20 .net
- たぶん、無理だろうね。かわいそす
- 343 :デフォルトの名無しさん:2012/10/20(土) 21:21:01.55 .net
- やっぱゆとりだったかw
実行環境の違いなんてそれを埋めるレイヤーに固めるから
アプリケーションがそんなコードで埋まることはないってのが
一番の趣旨だろ。
こういう作り方ってのは普通にやることだし、そんなことが
思いつかないってのは自分でやったことがないってことw
そこからこのセリフにつながる
ま、お前にはそんな芸当出来ないだろうがな。がはははははwwww
- 344 :デフォルトの名無しさん:2012/10/20(土) 21:42:31.78 .net
- >>343
意味不明
- 345 :デフォルトの名無しさん:2012/10/20(土) 21:47:19.43 .net
- 意訳 馬鹿だから理解できないw
- 346 :デフォルトの名無しさん:2012/10/20(土) 22:34:46.28 .net
- 興奮してるのか脳に障害があるのか分からないが
文章が無茶苦茶だな
- 347 :デフォルトの名無しさん:2012/10/20(土) 23:27:28.93 .net
- たぶんではなくて完全に無理です。コンテキストの理解を求める俺のほうが
完全に悪かったです。printf も覚えようとしなくて結構です。
どうもすみませんでした。
- 348 :デフォルトの名無しさん:2012/10/20(土) 23:55:00.68 .net
- モダンPerlが脳障■者を集めるのか、脳障■者がモダンPerlを好むのか
これって日本だけの現象なの?モダンRubyとかも同じ状況なの?
- 349 :デフォルトの名無しさん:2012/10/21(日) 00:21:29.73 .net
- いいから黙ってろって
- 350 :デフォルトの名無しさん:2012/10/21(日) 00:34:27.55 .net
- >>343
> こういう作り方ってのは普通にやることだし、そんなことが
> 思いつかないってのは自分でやったことがないってことw
>
> そこからこのセリフにつながる
罵倒を目的とした文章で代名詞の頻度が上がるのは、脳に良くない変化が起きていることを現すから気をつけた方がいい。
- 351 :デフォルトの名無しさん:2012/10/21(日) 00:35:41.55 .net
- じいさんがボケ始めた頃「あれ取って」が増えたのと同じか?
- 352 :デフォルトの名無しさん:2012/10/21(日) 00:46:26.95 .net
- >>350
> 罵倒を目的とした文章で代名詞の頻度が上がるのは、脳に良くない変化が起きていることを現すから気をつけた方がいい。
そんなデータはありませんwww
大丈夫?
- 353 :デフォルトの名無しさん:2012/10/21(日) 01:30:13.87 .net
- ボケ老人風文体わろす
- 354 :デフォルトの名無しさん:2012/10/21(日) 02:33:32.41 .net
- 実行環境の制約(機器であったり、OSであったり、その会社の規則だったり)で
ポータブルなスクリプトを書かなければならないことはあるだろうけど、
制約によってモダンPerlで書かなければならないってことは現実にあるんだろ
うか?
その前にポータブルなスクリプトとレガシーなスクリプトの違いはちゃんと
理解できているのだろうか?
モダンPerlは結局のところ単なる自己満足なのだろうか?回答を求む。
- 355 :デフォルトの名無しさん:2012/10/21(日) 02:48:51.74 .net
- > ポータブルなスクリプトを書かなければならないことはあるだろうけど
お前のポータブルの意味って何?
新しいPerlを入れればいいだけだろ。
お前が言ってるのは、ポータブルなスクリプトを書く。ではなく
古いPerlにも対応したスクリプトを書くって話。
ポータブルとは関係ない。
- 356 :デフォルトの名無しさん:2012/10/21(日) 08:22:34.33 .net
- 古いPerlって、どれくらい前のPerlの事を言ってるの?
CPANライブラリが動かないような古いPerlも視野に入れて開発しないといけないの?
どうして、そんな古いPerlに固執してるの?バージョンアップできないの?
正直モダンPerlって呼ばれてるような書き方をしてはいけないなんて制約がある方が特殊すぎ
- 357 :デフォルトの名無しさん:2012/10/21(日) 14:23:20.43 .net
- 自分の書くプログラムのスタイルなら、モダンだろうとクラシックだろうと好きに書けばよい。
でも、モダンPerl!モダン!モダン!って言う連中って、CPANとかのライブラリを使って書くことを
モダンだと言ってることが多い。
ライブラリを自分で抱えるのでなく、システムに入れろっていうのは横暴だし無理だろう。
すでに作られているシステムに、あとからCPANライブラリを追加したら、
既存のPerlスクリプト全ての再検証必要となるからね
- 358 :デフォルトの名無しさん:2012/10/21(日) 14:57:36.30 .net
- どんなモジュール追加したらそんな大げさなことになるんだよ。
- 359 :デフォルトの名無しさん:2012/10/21(日) 15:03:26.42 .net
- 今のモダンPerlの世界は
perlbrew + cpanminus + local::lib を使って
システムに入れずに最新Perlを使うのです。
- 360 :デフォルトの名無しさん:2012/10/21(日) 20:00:42.97 .net
- 『はじめてのPerl』にlocal::libとcpanmが出てくる時代になりました。
- 361 :デフォルトの名無しさん:2012/10/31(水) 01:25:45.68 .net
- 書いたときにモダンなのは当たり前だろう
モダン推しは時間軸の視点が抜け落ちているんだな
- 362 :デフォルトの名無しさん:2012/11/04(日) 13:29:05.31 .net
- >>358
Encodeモジュールのようなモジュールだろ
まあ、あえて名指しはしないけどな
- 363 :デフォルトの名無しさん:2012/11/04(日) 17:39:50.59 .net
- なんでEncodeモジュールを追加しただけで
再検証が必要になるんだ?
Encodeモジュールは最近のPerlには標準搭載されてるだろ。
まさか最新のPerlで動かないコード書いてるのか?
- 364 :デフォルトの名無しさん:2012/11/06(火) 01:19:20.40 .net
- >>318 >>319
フリーソフトはそもそも AS IS だからサポート切れとかはない
今までのどのらくだ本にも最初に書いてある
で、強要だの押し付けただのってしたことあったっけ?
- 365 :デフォルトの名無しさん:2012/11/06(火) 17:24:09.46 .net
- >>364
http://perldoc.perl.org/perlpolicy.html#MAINTENANCE-AND-SUPPORT
- 366 :デフォルトの名無しさん:2012/11/06(火) 23:57:40.03 .net
- 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
- 367 :デフォルトの名無しさん:2012/11/07(水) 00:29:49.79 .net
- 好きなだけ弄ればいいさ。
誰も止めやしない。
- 368 :デフォルトの名無しさん:2012/11/07(水) 01:58:26.48 .net
- Jcode,pmてまだまだ使われてるの?
さすがに require jcode はないよねー
- 369 :デフォルトの名無しさん:2012/11/07(水) 21:36:21.96 .net
- まだまだ現役です。だって使いやすいんだもん。
- 370 :デフォルトの名無しさん:2012/11/07(水) 21:58:36.93 .net
- Inline CとPerlとの
XSUB変換がperlgutの必須必要事項だと
会社の上司に言われたのですが、最後の
READMEに乗ってる
ようにmakeコマンドが生成されません。基本は
h2xs -A -n ExtModuleを実行し、種々の
実行環境を整えます。
参考URL:
http://d.hatena.ne.jp/perlcodesample/20100809/1278596435
- 371 :デフォルトの名無しさん:2012/11/07(水) 22:03:15.28 .net
- どう説明しようかな
- 372 :デフォルトの名無しさん:2012/11/07(水) 22:04:16.52 .net
- #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 .net
- ちなみに
コマンドプロンプトから
..
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
のディレクトリが成立しています
- 374 :デフォルトの名無しさん:2012/11/07(水) 22:08:46.56 .net
- >>372
事項ではなくて、実行であります。
タイプミスすんまそん
- 375 :デフォルトの名無しさん:2012/11/07(水) 23:24:53.47 .net
- メタな問題が発生しているとだけ回答しておく
- 376 :デフォルトの名無しさん:2012/11/07(水) 23:28:00.83 .net
- Makefile.PLはこの作業を自動化するmakeファイルを生成してくれます。
↑これが原因か
何とも罪作りな記事だな
そのページのコメント欄に質問として書いちゃえよ
- 377 :デフォルトの名無しさん:2012/11/07(水) 23:29:47.33 .net
- 注
※1 これはWindowsではうまく動かない可能性があります。
- 378 :デフォルトの名無しさん:2012/11/08(木) 07:22:49.06 .net
- 初歩的なミスを
した物のどの記事もWin系なのかUni系
なのかわからん記事ばかりで
一応
WindowにGnuWin32を通した物の
make: *** `makefile' に必要なターゲット `C:\Perl\libConfig.pm' を make するルー
ルがありません. 中止.
なんてエラーが
返って来る。結局Windowユーザーは
Xsubpp覚えなくてもいいってことか。
- 379 :デフォルトの名無しさん:2012/11/09(金) 00:56:41.22 .net
- Xsubppによる利便性の低下、な
- 380 :デフォルトの名無しさん:2012/11/09(金) 12:27:18.50 .net
- >>379
これだから2cherはクズ
- 381 :デフォルトの名無しさん:2012/11/09(金) 15:38:32.61 .net
- 新聞じゃないんだからw
- 382 :デフォルトの名無しさん:2012/11/11(日) 22:47:24.71 .net
- 先生!makeファイルがmakeされません!
- 383 :デフォルトの名無しさん:2012/11/11(日) 23:40:24.23 .net
- sudo apt-get install make
- 384 :デフォルトの名無しさん:2012/11/12(月) 09:00:12.42 .net
- active perlだと、今はコンパイラも付いてくるからそれを使う。
makeはdmakeを使う。
- 385 :デフォルトの名無しさん:2012/11/14(水) 00:00:27.32 .net
- 彼女がメイク中でした。
(高見盛に激似です)
- 386 :デフォルトの名無しさん:2012/11/17(土) 20:22:53.85 .net
- DOSこいっ
- 387 :デフォルトの名無しさん:2012/11/18(日) 01:18:35.04 .net
- 文字列がtest_1やtest_2やtest_3のように
test_○のような形になっているかを正規表現で調べるにはどうすればいいんですか?
○の中は数字のみです
- 388 :デフォルトの名無しさん:2012/11/18(日) 02:26:28.96 .net
- $str =~ /\Atest_\d\z/
- 389 :デフォルトの名無しさん:2012/11/19(月) 11:30:45.47 .net
- >>387←正規表現スレじゃなくてここできいてるこの基地害なに?
- 390 :デフォルトの名無しさん:2012/11/25(日) 00:36:01.64 .net
- あげ
- 391 :デフォルトの名無しさん:2012/11/25(日) 00:36:59.73 .net
- モダン厨のすくつ
- 392 :デフォルトの名無しさん:2012/11/25(日) 00:38:10.24 .net
- さらに一文字減らせた!
($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 .net
- printfの後のスペースなくても動いた!
($d,$m,$y)=(localtime)[3..5];printf"%04d"."-%02d"x2,1900+$y,$m+1,$d
- 394 :デフォルトの名無しさん:2012/11/25(日) 00:44:06.73 .net
- そんなに短さにこだわるなら、無理やり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 .net
- おっと馬鹿が勝手に条件変えてきたぞ
- 396 :デフォルトの名無しさん:2012/11/25(日) 00:51:05.56 .net
- >>394
print localtime->ymd;
これでいいんじゃね?
useまで入れたとしても短い。
use Time::Piece;print localtime->ymd;
($d,$m,$y)=(localtime)[3..5];print 1900+$y,"-",$m+1,"-",$d
- 397 :デフォルトの名無しさん:2012/11/25(日) 09:16:00.99 .net
- せめてPOSIX。
use POSIX;
print strftime("%Y-%m-%d", localtime);
- 398 :デフォルトの名無しさん:2012/12/02(日) 11:20:23.79 .net
- どうせすぐ古くなるんだから。保守するのに時間軸の視点は必要だぞ。
- 399 :デフォルトの名無しさん:2012/12/09(日) 14:19:16.53 .net
- ポータブルPerlとかモジュールなしPerlとか
- 400 :デフォルトの名無しさん:2012/12/09(日) 15:03:54.83 .net
- 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 )));
}
- 401 :デフォルトの名無しさん:2012/12/09(日) 15:04:52.27 .net
- 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
- 402 :デフォルトの名無しさん:2012/12/09(日) 15:10:51.49 .net
- ちなみに環境はActive PerlでWindows7を使っています
- 403 :デフォルトの名無しさん:2012/12/09(日) 15:13:07.96 .net
- なお、提出期限は本日中とする。
- 404 :デフォルトの名無しさん:2012/12/09(日) 20:41:15.31 .net
- 確かRETVALて
マジック変数だよな。Perl側にアウトライン
した時に恐らくマジックに変異してるジャマイカ?
そして、またXSに入りINT2PTRで閲覧しよう
とする。うんで、マジックが掛かってるとキズかず
隠蔽された構造体にアプローチしようとしてとする。
上手く考えが定まらず、マジックやら
文法そのものやらに、あっちやこっち浮気し
まくってたらいつの間にやら難題に押しつぶされそうになってた。
もう資料の少ないマジックに手をださないから
RETVALに代入した後の処置を教えください。
- 405 :デフォルトの名無しさん:2012/12/11(火) 00:35:47.74 .net
- つーか、スレまちがい
- 406 :デフォルトの名無しさん:2013/10/12(土) 16:10:02.36 .net
- 今から学ぶならやっぱPerlよりPythonなのかなあ?
- 407 :デフォルトの名無しさん:2013/10/12(土) 21:02:22.21 .net
- >>406
りょうほういっとけ
- 408 :デフォルトの名無しさん:2014/01/05(日) 23:44:28.13 .net
- >>406
さすがにrubyやphpならともかく、pythonはナイわ
- 409 :デフォルトの名無しさん:2014/01/06(月) 16:11:01.27 .net
- 解析するならPythonじゃね?
クラックコンテスト上位者はみんなPython使いのようだし。
- 410 :デフォルトの名無しさん:2014/01/06(月) 16:12:58.25 .net
- 間違えた、ハッキングコンテスト。
- 411 :デフォルトの名無しさん:2014/01/17(金) 01:37:55.47 .net
- Django使うの以外にPython使う理由が見つからない
- 412 :デフォルトの名無しさん:2014/01/17(金) 08:52:36.67 .net
- 倍幅文字を含んだ文字列を端末にテーブル状に整形して表示したいのですが,
==================================
# ソースの文字コード: 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 .net
- 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を返す
- 414 :デフォルトの名無しさん:2014/01/17(金) 14:52:43.34 .net
- >>411
生粋のWeb脳って気持ち悪い
- 415 :デフォルトの名無しさん:2014/01/17(金) 17:55:39.71 .net
- ゴミ
- 416 :デフォルトの名無しさん:2014/01/17(金) 21:47:20.63 .net
- そういうのもうあるみたい
ttps://github.com/kaz-utashiro/MBPrintf
- 417 :デフォルトの名無しさん:2014/01/18(土) 19:55:51.97 .net
- 与えられた文字列から適当な数値を求めたいんだけど
標準関数で簡単にやるにはなにかいい方法ある?
- 418 :デフォルトの名無しさん:2014/01/18(土) 21:05:51.45 .net
- せめて10レスくらい読めよ
$ perl -le 'print for unpack q{C*}, q{もじ}'
227
130
130
227
129
152
- 419 :デフォルトの名無しさん:2014/01/18(土) 21:11:44.49 .net
- >>418
お前やっぱ頭良くないんだな
- 420 :デフォルトの名無しさん:2014/01/18(土) 21:13:59.31 .net
- joinすりゃいいだけじゃん
- 421 :デフォルトの名無しさん:2014/01/18(土) 21:17:28.94 .net
- >>418
それだと文字列が長い時に困るんだよね
- 422 :デフォルトの名無しさん:2014/01/18(土) 21:17:41.63 .net
- そこまで書かなきゃいけなかった?
- 423 :デフォルトの名無しさん:2014/01/18(土) 21:21:14.21 .net
- >>422
いいから早く消えろってことだよ
やんわり言ったら分からなかった?
- 424 :デフォルトの名無しさん:2014/01/18(土) 21:26:46.26 .net
- >>422
ウザ杉
- 425 :デフォルトの名無しさん:2014/01/18(土) 21:27:09.30 .net
- >>421
BigInt付けるか、他の方法を考えるかしたら?
文字列じゃなくて、変数ってんならアドレスとかの方法もあるけど、
- 426 :デフォルトの名無しさん:2014/01/18(土) 21:28:17.27 .net
- あっちで釣りの続きしてればいいのに
- 427 :デフォルトの名無しさん:2014/01/18(土) 21:29:11.08 .net
- >>425
何で上から目線なの?
自己顕示欲満たしてやってんだから嫌なら答えるなよ。
- 428 :デフォルトの名無しさん:2014/01/18(土) 21:31:14.66 .net
- >>425
基地害のお客様はこちらへお引き取りください。
http://toro.2ch.net/test/read.cgi/tech/1385039352/
- 429 :デフォルトの名無しさん:2014/01/18(土) 21:32:59.96 .net
- そもそもこんなところで質問してあーだこーだ言わないと使えないんだったら、
Rubyをサクッと学習してやったほうが早い。
- 430 :デフォルトの名無しさん:2014/01/18(土) 21:33:11.61 .net
- 嬉しそうだなあ、、、
- 431 :デフォルトの名無しさん:2014/01/18(土) 21:38:18.15 .net
- >>426
バーカ
- 432 :デフォルトの名無しさん:2014/01/18(土) 21:39:58.39 .net
- 嬉しそうだな、、、
- 433 :デフォルトの名無しさん:2014/01/18(土) 23:17:08.53 .net
- 配列の配列を戻り値にしたいんだけど
どうしたらいい?
- 434 :デフォルトの名無しさん:2014/01/18(土) 23:21:00.50 .net
- そういう場合は配列のリファレンスを使う
- 435 :デフォルトの名無しさん:2014/01/18(土) 23:47:42.99 .net
- 自演キモw
- 436 :デフォルトの名無しさん:2014/01/19(日) 00:03:33.90 .net
- Perl厨の自演って分かりやすいな。
文章構成能力がないから、短文で一問一答w
- 437 :デフォルトの名無しさん:2014/01/19(日) 08:36:16.42 .net
- お前の自演の方もなかなか解りやすいぞ、PHP厨
- 438 :デフォルトの名無しさん:2014/01/19(日) 14:34:32.39 .net
- 糞言語の糞スレ
- 439 :412:2014/01/19(日) 20:39:49.50 .net
- >>413
制御文字を除外するために文字が特定範囲にあるか調べる方法がテクいです
>>416
同じことを思ってる人はいるものですね.
使ってみた限りでは問題なく調整してくれるみたいです.
\p{East_Asian_Width} で定義されてるかどうか等で判定しているので
半角カナもちゃんと幅1で計算されます.
MBPrintf.pm の方を使って printf を置き換えることにしました.
HTMLとかにして出力するしかないかなと思っていたところ
さくっと printf を置換えするだけで綺麗に出力できそうなので
大変助かりました. 質問してみて良かったです.
レスありがとうございました.
- 440 :デフォルトの名無しさん:2014/01/19(日) 20:47:27.99 .net
- >>439
やっぱ馬鹿なんだな
お前みたいな奴が日本のIT産業をダメにしてんだよ
- 441 :デフォルトの名無しさん:2014/01/19(日) 23:18:27.65 .net
- 同じこと考えるも何も、日本でPerl広めたのはこの人だよ
- 442 :デフォルトの名無しさん:2014/01/20(月) 01:59:57.20 .net
- >>439=無知の極み
- 443 :デフォルトの名無しさん:2014/01/20(月) 02:09:18.33 .net
- 受け答えのレベルから推察するとシフトJISを使うことを思いついていない気がする
- 444 :デフォルトの名無しさん:2014/01/20(月) 04:37:59.99 .net
- Perl以前の知能の問題なんだろw
- 445 :デフォルトの名無しさん:2014/01/20(月) 06:18:02.59 .net
- コマンドラインで使う前提での質問なのにシフトJISってw
質問すら読解する能力無いだろ
ほんとにWebProgに帰れよドアホ
- 446 :デフォルトの名無しさん:2014/01/20(月) 10:35:12.20 .net
- ゴミは黙ってろ
- 447 :デフォルトの名無しさん:2014/01/20(月) 17:02:27.54 .net
- >>445
草生やしてんじゃねーよ。
半笑いのつもりか?
半笑いでバカをアピールする>>445哀れ。
- 448 :デフォルトの名無しさん:2014/01/20(月) 19:07:10.73 .net
- 連レスかまして無知晒すから、解りやすいぞPHP厨
- 449 :デフォルトの名無しさん:2014/01/20(月) 22:18:42.87 .net
- キチスレ
- 450 :デフォルトの名無しさん:2014/01/24(金) 19:52:20.84 .net
- Config::INI とかTiny とかのライブラリで
コメント行は ; になっているけど
これを # にするようにできるライブラリはある?
- 451 :デフォルトの名無しさん:2014/01/24(金) 19:55:55.11 .net
- >>450
ある。
回答きたんだからさっさと消えてね。
- 452 :デフォルトの名無しさん:2014/01/24(金) 20:05:16.41 .net
- >>450
ないよ
- 453 :デフォルトの名無しさん:2014/01/24(金) 20:33:39.02 .net
- >>450
ここが参考になる
ttp://to-a.ru/LEeAgi
- 454 :デフォルトの名無しさん:2014/01/24(金) 20:46:52.82 .net
- >>450
ナイアルヨ
- 455 :デフォルトの名無しさん:2014/01/25(土) 15:26:50.61 .net
- その程度も自分で調べられないとか頭悪いんだろうな
調べたら3分かかからなかったけどな
- 456 :デフォルトの名無しさん:2014/01/25(土) 23:28:51.18 .net
- このスレって何人いるんだろう?
- 457 :デフォルトの名無しさん:2014/01/26(日) 02:01:56.35 .net
- 日本人だと思う
- 458 :デフォルトの名無しさん:2014/01/26(日) 02:47:37.23 .net
- おまえあれだろさっきまでなぞなぞスレにいただろ
- 459 :デフォルトの名無しさん:2014/01/26(日) 04:20:51.88 .net
- うまいw
- 460 :デフォルトの名無しさん:2014/01/26(日) 17:46:42.97 .net
- >>454 は中国人かも知れんぞ
- 461 :デフォルトの名無しさん:2014/01/26(日) 19:06:15.38 .net
- 日本人ですだよ
- 462 :デフォルトの名無しさん:2014/01/26(日) 19:27:54.97 .net
- ニーハオ!
パンニハムハサム ザパニーズニダアルヨ!
ショーグンサマ バンザイ!
テポドン バンザイ!
- 463 :デフォルトの名無しさん:2014/02/05(水) 19:25:52.75 .net
- 文字列が二つあって、その比較をしたい
共通1 差分1 共通2 差分2 共通3
みたいな感じで、2箇所まで差分を抽出したい
現実的な速度で動くうまい方法ないかな
- 464 :デフォルトの名無しさん:2014/02/05(水) 19:28:44.02 .net
- >>463
他人に頼る前提で始めるような馬鹿には無理。
- 465 :デフォルトの名無しさん:2014/02/05(水) 19:37:38.58 .net
- >>463
はぁ?
自分でやったけど何秒かかって、これが何秒以内に終わるようにとかも書けねーの?
本当にお前ゴミだな
リアルでもどうせその調子なんだろ
リアルでもゴミだと思われてるけど気付いてる?
- 466 :デフォルトの名無しさん:2014/02/05(水) 19:44:06.43 .net
- 自分で試すことすらしない猿未満の低能には言うだけ無駄
猿ですら目的達成のために試行錯誤するのに
- 467 :デフォルトの名無しさん:2014/02/05(水) 19:54:20.78 .net
- $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文字とかでもう遅すぎて使えなくなる
- 468 :デフォルトの名無しさん:2014/02/05(水) 19:57:49.18 .net
- こういうのを見るたびに
足りないのは知識やスキルではなく羞恥心なんだなと思う
- 469 :デフォルトの名無しさん:2014/02/05(水) 21:11:10.78 .net
- >>467
ここはごみ捨て場ではありません。
- 470 :デフォルトの名無しさん:2014/02/05(水) 21:26:16.47 .net
- 2つの文字列を文字ごとに分解して2つの配列を作ってから↓
ttp://perldoc.jp/docs/modules/Algorithm-Diff-1.15/Diff.pod
- 471 :デフォルトの名無しさん:2014/02/05(水) 22:05:27.01 .net
- 実に頭の悪そうな回答がきたなw
- 472 :デフォルトの名無しさん:2014/02/05(水) 22:39:45.84 .net
- diffは多少一致してない部分があってもいい、みたいな曖昧な判定をするから、
余計にややこしいんだよな
- 473 :デフォルトの名無しさん:2014/02/05(水) 23:42:17.25 .net
- うちのLarryに何か用かい?
- 474 :デフォルトの名無しさん:2014/02/06(木) 01:46:47.51 .net
- おれならxor使うけどね
- 475 :デフォルトの名無しさん:2015/02/07(土) 15:14:06.33 ID:yYV1uKlQ.net
- ネットで検索する時は単語をスペースで区切ってそのANDで結果を得るけど、
同じことを正規表現でやりたい時はどう書けばいい?
- 476 :デフォルトの名無しさん:2015/02/26(木) 19:17:26.46 ID:0RIBJGtF.net
- 「$s が hello と world の両方にマッチする」なら、単に
$s =~ /hello/ && $s =~ /world/
と書くだけじゃないの?質問がよく分からないのだけれども
- 477 :デフォルトの名無しさん:2015/02/26(木) 20:48:44.94 ID:G3LqtZtx.net
- >>475
あえて無理やり正規表現のみでやるなら否定先読みを使う
if( /(hoge|piyo).*(?!\1)(hoge|piyo)/ ){ print "成功\n"; }
- 478 :デフォルトの名無しさん:2015/02/26(木) 21:43:04.63 ID:dwtaxn6g.net
- 否定の先読みなんかせんでも
print ‘foobar’ if /(?:foo.*?bar|bar.*?foo)/ ;
で良いんじゃねーのか
- 479 :デフォルトの名無しさん:2015/02/26(木) 21:54:30.24 ID:RGF9/3q7.net
- 入力がスペース区切りの文字列なんだよ
- 480 :デフォルトの名無しさん:2015/02/27(金) 00:27:41.82 ID:xTYPuOZ2.net
- 仮に検索エンジンみたいなのを書くにしても
何を対象にするのかとか、検索単位とかを決めてもらわんと書きづらいぞ
「同じこと」の通り「対象:Webサイト、単位:ページ」ならGoogleに投げりゃ済むし
- 481 :デフォルトの名無しさん:2015/02/27(金) 00:34:35.35 ID:dW0+IHnO.net
- 検索対象も文字列に決まってるだろ
正規表現でのマッチングだっつってるんだから
逃げてないで考えてみれ
- 482 :デフォルトの名無しさん:2015/02/27(金) 01:46:02.77 ID:xTYPuOZ2.net
- >>481
文字列?
テキストでもファイルでもなく?
それって何に使うんだろか…結局、目的は何よ?って話だよ
もしかしたらもっと良い方法があるんじゃ?と勘ぐってしまうのよどうしても
- 483 :デフォルトの名無しさん:2015/02/27(金) 06:35:52.51 ID:dW0+IHnO.net
- またよく判らん屁理屈を
検索の単位が文字列に対してで、それがどこから来たかは問題にならないだろ
まあ、大抵はファイルからだろうけど
で、ファイルならこんなツールがあるよ、みたいな感じで本題から逃げたいのが見え見え
- 484 :デフォルトの名無しさん:2015/02/27(金) 09:44:40.27 ID:xTYPuOZ2.net
- >>483
いやまあ、文字列に対してなら
my $hit = 1;
for my $ptn (split(" ",$search)) {
$s =~ /$ptn/ or $hit = 0;
}
こんなんで出来ると思うけど、こんなんで本当に良いのか?
後出し条件とか大量に出てきそうな感じがするんだが
- 485 :デフォルトの名無しさん:2015/02/27(金) 20:22:44.34 ID:JIR4zlR2.net
- お前は、「ワンライナーでどうやりますか」って質問に
スクリプト作成して答えるのか?
「正規表現でどうやりますか?」って質問には、
普通に正規表現で答えりゃいいだろうが。
実際、質問への答えは、
>>476->>478で終了してる。
後出しを心配するなら実際に後出しされてから
盛大に罵倒しろよ
- 486 :デフォルトの名無しさん:2015/02/28(土) 15:03:31.15 ID:6vZKnEo0.net
- あえて制限をつけてパズルとして解くならともかく
現実的な解としては >>476 で十分だよな
- 487 :デフォルトの名無しさん:2015/02/28(土) 16:50:40.78 ID:05aMjvqG.net
- 元々の要求はただのスペース区切りだから、パラメータ数は不定で、
パラメータ抽出して、その全部に対してマッチングを繰り返すという当たり前の処理になる
でも、そんなことは最初から判っているのでわざわざ聞く筈がない
スペース区切りの文字列をそのまま使ってマッチングがしたいなら、
残念ながらperlの正規表現でそんなことは出来ない、が答えとなる
- 488 :デフォルトの名無しさん:2015/02/28(土) 17:32:00.47 ID:JKlRGoUv.net
- 本物のコミュ障だなぁ
粘着されてる>>475が、可哀想だわ。
- 489 :デフォルトの名無しさん:2015/02/28(土) 17:35:55.35 ID:e1yM9CPU.net
- 質問者のレベルまで勝手に想定するし、、、
>>475から読み取れるのは、拡大解釈しても
「ワンセンテンスの正規表現で書くにはどうしたらいい?」
程度だろーに
- 490 :デフォルトの名無しさん:2015/02/28(土) 19:58:12.22 ID:HemDgo4Q.net
- ◯正規表現で、AND検索の実装って、どうやんの?
×正規表現で、「スペースを使って」AND検索の実装って、どうやんの?
「わざわざ聞く筈がない」まで、分かってんなら、
自分の解釈の仕方が間違ってないか、
自問しろよ
- 491 :デフォルトの名無しさん:2016/01/10(日) 13:39:26.30 ID:/ndDSiBm.net
- 971 名前:名無しさん@七周年[] 投稿日:2006/11/11(土) 00:56:10 ID:M8+ahUZV0
自称スーパープログラマー某
強烈加齢臭
メール見ない メール無視
ドキュメント見ない ドキュメント無視
説明聞かない 説明無視
話聞かない 話無視
ガム→むっちゃー むっちゃー むっちゃー むっちゃー
煎餅→バリバリバリバリバリバリ
菓子パン→モグモグモグモグモグモグモグモグモグモグ
カップアイス→むっちゃー むっちゃー ペロペロペロペロ
フロアすべてに響き渡る 超ばかでかいくしゃみ 当然手でおさえない
異音と異振動
ドスーン!ドスーン! ドカーン!ドカーン! バコーン!バコーン! ズドン!ズドン!
机が近いとマウスポインターが飛ぶ 誤操作誘発
書類だしたりしまうだけでドカンドカン
30秒ごとに口と鼻から異音
ふんっっ! ふんっっ!
備品破壊 貸与P C 破壊 他人のもの破壊
奴の作ったスクリプトとプログラムは使えない バグ製造機
電話や共有携帯電話 キーボードが油ベタベタ
奴に電話とPCとコンソールは触らせてはいけない
- 492 :デフォルトの名無しさん:2016/01/10(日) 17:45:28.72 ID:lr/f1ZoA.net
- Perl 5 version 16の正規表現で、地の文の一部としてマッチさせたいときに
バックスラッシュでエスケープせねばならない文字の一覧を教えてください
文字集合[ ]の内外で違うとか、文脈依存があればそれも知りたいです
- 493 :デフォルトの名無しさん:2016/01/10(日) 22:39:51.49 ID:iK/aBQIt.net
- 何をしたいのか知らないけど
http://perldoc.jp/index/core
で疑問のほとんどは解決すると思う。
まあ、エスケープすべき文字を知りたいということならそれは「英数字以外」だ。
\Q と quotemeta 関数について調べてみてほしい。
- 494 :デフォルトの名無しさん:2016/01/11(月) 19:10:22.91 ID:JutXF6Cv.net
- >>493
ありがとうございます。
質問の動機は単に手で正規表現を書くときエスケープすべきかどうか
悩ましかったから(実際には「+」や「:」や「#」とか「[ ]」の外の「-」はエスケープ無しでも通っていそう)
だったからですが、エスケープして無害ということであればそうします
それはそうとしてquotemeta便利杉、
- 495 :デフォルトの名無しさん:2016/01/23(土) 00:11:45.16 ID:ACxJywqs.net
- すまん
Perl 6使った奴おるか
- 496 :デフォルトの名無しさん:2016/01/23(土) 06:03:31.81 ID:mGQek17v.net
- >>495
おるけど?
まだ後10年は掛る。
触る必要無し
処理速度とか早くなってんのかも知れんけど、
起動が遅くて、使い物にならん。
挙動もバギー、docも揃ってない。
止事無き事情から、アルファ版を正式版として
リリースしただけじゃね?
- 497 :デフォルトの名無しさん:2016/02/07(日) 22:53:45.48 ID:zQAcaA+r.net
- 外部コマンドの話が出てて思い出したけど、
外部コマンドを実行するときに任意の文字列を外部コマンドの引数として渡したい場合、
Linux環境でエスケープすべき文字は?
シングルクォートとバックスラッシュだけエスケープして、それをシングルクォートで括ればOK?
- 498 :デフォルトの名無しさん:2016/02/09(火) 22:03:18.36 ID:390QsJXI.net
- なんかPerl 5.16.1のウィンドーズ版のUTF-8対応は中途半端な希ガス、
use utf8;としてUTF-8でソースコードを書いても
open()のファイル名とかsystem()に与えるコマンド文字列とかが'shiftjis'(正確には'cp932')のままだし、
コマンド引数も'shiftjis'(正確には'cp932')のままだし、
なんでああなんですかね…
- 499 :デフォルトの名無しさん:2016/02/09(火) 23:41:10.97 ID:J9+y92l0.net
- dankogaiがのらりくらりうまく回避しちゃうからじゃない?
俺はもうperlでsjis処理するのはあきらめた。
- 500 :デフォルトの名無しさん:2016/02/12(金) 00:23:06.63 ID:kq1OODWj.net
- いろいろ面倒なんで、俺は use utf8; を使わないことにしたよ。
- 501 :デフォルトの名無しさん:2016/02/13(土) 14:58:53.06 ID:vq3C3FT5.net
- >>497
シェルを経由するのならシェルのマニュアルを読みなさいとしか言えない。
bash の場合なら「定義」の項のメタ文字と「クォート」の項。
シングルクォートなら大体大丈夫なはずだけど。
そういう心配をしなきゃならないならシェルを呼ばない方が無難。
シェル経由でなければシステムコールするだけだから。
- 502 :デフォルトの名無しさん:2016/02/14(日) 22:17:05.33 ID:ctVTXhCg.net
- >>497
もしかして、普段は Windows 使ってるからコマンドラインを作って渡す方法しか知らないとかそういうこと?
- 503 :デフォルトの名無しさん:2016/02/14(日) 22:28:48.47 ID:d+6VipxK.net
- 思い付きで気軽にコマンドライン作って出力をキャプチャできるのがLLの良いところなのにね。
- 504 :デフォルトの名無しさん:2016/02/15(月) 12:21:34.14 ID:9WjYXC66.net
- >>503
助けてあげる気が無いなら引っ込んでてくれないか?
- 505 :デフォルトの名無しさん:2016/02/15(月) 15:10:01.24 ID:8Z92Uy24.net
- >>497
" " 内では、「$(変数展開) \ `(コマンド置換) !(ヒストリ)」が展開される。
' ' 内では、展開されない。
\ は直後の1文字の機能を無効化する
メタキャラクタ・特殊文字なら、他にも多数。
? * > >> < << | ~ & など
ただし、「! ~」は、bashのみ
- 506 :デフォルトの名無しさん:2016/02/16(火) 03:32:48.12 ID:y+ZjOqCo.net
- モダンPerl入門 増補改訂版(仮)
http://codezine.jp/book/modernperl2
- 507 :デフォルトの名無しさん:2016/02/16(火) 21:30:09.30 ID:MTIgWlq3.net
- 刊行日: 2014年1月予定
- 508 :デフォルトの名無しさん:2016/02/17(水) 00:23:01.67 ID:wnysiCN2.net
- なんと!もう発売されていましたか!
- 509 :デフォルトの名無しさん:2016/02/23(火) 20:40:57.84 ID:RqQoWDN5.net
- これからPerlを学ぶメリットってある?
- 510 :デフォルトの名無しさん:2016/02/23(火) 21:43:14.01 ID:Oh6h4g2T.net
- いっぱーぃぁる
いっぱーぁある
いっぱーぁる
いっぱーる
- 511 :デフォルトの名無しさん:2016/02/24(水) 02:40:25.37 ID:lkPqYQmC.net
- UNIXの歴史をエッセンスにしてUNIX以外でも使えるようにした言語だから学ぶ価値はある。
おれの場合はWindows上で毎日使ってる。慣れの問題もあるが他の言語だとこうはいかない。
- 512 :デフォルトの名無しさん:2016/02/24(水) 02:47:53.12 ID:RDH9smV+.net
- 他の言語もWindowsで使えるだろ
- 513 :デフォルトの名無しさん:2016/02/24(水) 05:22:56.15 ID:0U45vlYv.net
- バージョンをきにしなくていいなら、Perlは、Windows 2000のパソコンでもつかえる。
現在のRubyは、インストーラがうごかない。インストーラがうごいても、実行時にDLLがどうのこうのいってエラー
Pythonも同様だろう、インストールがめんどくさいのは、損ですよ
Ruby, PythonでもCygwinならいけるかも
Cygwinがきらいなひとは、こまります
- 514 :デフォルトの名無しさん:2016/02/24(水) 05:26:37.80 ID:0U45vlYv.net
- C, Perlならイヤなおもいをしなくていい
- 515 :デフォルトの名無しさん:2016/02/26(金) 20:40:22.77 ID:S1uVBK59.net
- 今時Cigwinなんて使ってるやついるの?
使う理由が見当たらないんだけど…。
- 516 :デフォルトの名無しさん:2016/02/26(金) 21:57:44.67 ID:dBO2xm/m.net
- >>515
Windowsでコマンドラインを使うときに
一番便利な道具だよ。
- 517 :デフォルトの名無しさん:2016/02/26(金) 23:40:31.20 ID:5TeMxoC2.net
- >>515
cygwinはインストールが楽でいいんだよ
- 518 :デフォルトの名無しさん:2016/02/27(土) 21:54:12.18 ID:EDqxACn8.net
- >>516
その使い方こそがもう洋ナシなんじゃないの?
- 519 :デフォルトの名無しさん:2016/02/28(日) 07:42:58.32 ID:0vKPLMUN.net
- >>518
おまえさん、何でム板にいんの?
WebProg板の住人の発言だったら、まだ分るけどさ。
- 520 :デフォルトの名無しさん:2016/02/28(日) 11:25:02.81 ID:jJK+500Y.net
- >>516
cygwin+Perlでできて、バッチファイル(cmd.exe)+Perlでできないこととは…?
- 521 :デフォルトの名無しさん:2016/02/28(日) 11:39:02.77 ID:w1saw6Ta.net
- >>520
その場合、Perlの部分は同じ。違うのは cmd.exe と bash (またはzsh) なので
コマンドプロンプトで出来ないこととは、シェルとシェルスクリプトの実行ということになる。
つまりbash(zsh)の快適な操作性が、cmd.exeにはない。
LinuxやMacで動くシェルスクリプトがcmd.exeでは動かない。
- 522 :デフォルトの名無しさん:2016/02/28(日) 22:48:20.46 ID:Ozi57itY.net
- パスに日本語使わない運用ならね
でもそれって制限きついよね?仕事で使うのはまず無理だな
- 523 :デフォルトの名無しさん:2016/02/28(日) 23:03:09.55 ID:w1saw6Ta.net
- そういやcygwinはファイル名に日本語ついていても
ちゃんと動くよな。凄いことだよな。
>>522
お前何の話してんのー?
- 524 :デフォルトの名無しさん:2016/02/29(月) 21:02:02.19 ID:VLQsoBHX.net
- >>519
個人環境なら好きにやればいいんじゃない?
- 525 :デフォルトの名無しさん:2016/07/18(月) 23:24:13.82 ID:RVsoZVBC.net
- ロブ・パイク語録。
>「UNIXはただ死んだだけでなく、本当にひどい臭いを放ち始めている」 - 1991年ごろ
(中略)
>「そういった日々は過ぎ去り、賛辞は Perl にもたらされた」 - [7] 単機能ツールについて
賛辞は Perl にもたらされた!
- 526 :デフォルトの名無しさん:2016/08/18(木) 07:54:36.84 ID:VLXPL8iW.net
- >>525
25年前の話だからな。
25年も経てば、SMAPも結成して6人から5人になり解散する。
- 527 :デフォルトの名無しさん:2017/04/14(金) 21:43:32.26 ID:zXRfLbO9.net
- win7でactiveperl
`コマンド` からの応答をファイルに書き出したい
テキストならうまくいくけど、バイナリで失敗する
書き出し用のファイルはbinmodeにしてるので、受取側がおかしい
binmode STDIN
にはしてるけど変わらないみたい
C:> コマンド > file.bin
でリダイレクトすると成功するので、コマンド自体はちゃんと動いてる
何が悪いんだろう
- 528 :デフォルトの名無しさん:2017/04/14(金) 22:10:00.52 ID:w+Tu3XlB.net
- どういう具合に失敗するんだ?
バイナリをテキストとして解釈するのか?
- 529 :デフォルトの名無しさん:2017/04/14(金) 22:32:15.06 ID:zXRfLbO9.net
- バイナリエディタとか無いから詳しくは判らないけど、
pptファイルを開こうとしても怒られる
- 530 :デフォルトの名無しさん:2017/04/15(土) 15:32:32.25 ID:40tq7pz4.net
- 再現する最小コード書けや
バイナリエディタもフリーのあるやろ
- 531 :デフォルトの名無しさん:2017/04/15(土) 15:37:15.38 ID:4y1tBhnC.net
- フリーソフトを勝手にインストールできない
- 532 :デフォルトの名無しさん:2017/04/15(土) 15:50:50.88 ID:40tq7pz4.net
- exe単体のもあるしそれさえアウトでも家の環境で再現させられるだろ
つか業務関連なら会社で聞けば
- 533 :デフォルトの名無しさん:2017/04/15(土) 16:02:38.46 ID:4y1tBhnC.net
- 知らないなら黙ってればいいのに
何かバイナリを標準出力に吐くコマンドなら何でも試せる筈
なかなかそういうサンプルが無いけど
- 534 :デフォルトの名無しさん:2017/04/15(土) 19:42:34.21 ID:klGQGN6C.net
- いいからお前の環境で再現するコードを書けよ
- 535 :デフォルトの名無しさん:2017/04/15(土) 20:14:19.75 ID:4y1tBhnC.net
- これだけの情報で判らないならコード見ても判らないよ
binmode STDIN;
$result = `SomeCom.exe`;
open $out, '>', 'outfile.bin';
binmode $out;
print $result;
これだとNGで、
C:> SomeCom.exe > outfile.bin
これならOKになる
- 536 :デフォルトの名無しさん:2017/04/15(土) 20:28:40.15 ID:X2azyrMV.net
- binmode指定しないとダメなの?
- 537 :デフォルトの名無しさん:2017/04/15(土) 21:14:47.45 ID:klGQGN6C.net
- >>535
どう見ても標準出力に吐いてるんだけどそのコードで再現することは当然確認したんだよね?
- 538 :デフォルトの名無しさん:2017/04/15(土) 23:58:48.07 ID:j4gmMNAx.net
- STDINは関係ない
パイプをバイナリモードにしろ
- 539 :デフォルトの名無しさん:2017/04/16(日) 00:22:01.12 ID:h3ZKvGOL.net
- open $in, '-|', 'SomeCom.exe';
binmode $in;
$result = <$in>;
こんな感じか
` ` を使う限り解決できない?
- 540 :デフォルトの名無しさん:2017/04/16(日) 00:23:16.22 ID:h3ZKvGOL.net
- あ、違う
@result に受けて結合か
そこでもまた改行コードが何かしそうな不安が
- 541 :デフォルトの名無しさん:2017/04/17(月) 21:59:30.64 ID:MMDneckh.net
- >>538が正解でした
ちなみに、結果を変数に受ける必要はなくて、
入力から出力にそのまま流す方がスマート
- 542 :デフォルトの名無しさん:2017/04/23(日) 22:19:57.91 ID:RpWO8O1f.net
- 答えを知ってる人はシンプルにいきなり正解のみを示すんだよな
で、必要な知識のない人が見当違いのことをいろいろ書いて掻き回す
- 543 :デフォルトの名無しさん:2018/02/16(金) 06:37:50.13 ID:W1XJdyx1.net
- ☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆
- 544 :デフォルトの名無しさん:2018/02/16(金) 20:54:02.63 ID:YSXjevvC.net
- あれ?そういやこのスレは消化されないまま残ってたの?ちょっと前に63箱目が1000になったんだけど。
じゃあ新スレ立てずにそのままここ使う?
- 545 :デフォルトの名無しさん:2018/02/17(土) 13:11:36.41 ID:m8W4h2UJ.net
- >>544 ここで良いんじゃない?
Windows7 で ActivePerl 5.16.3 を使っているんだけど、改行が CR LF (0D 0A) のファイルを
<> で読み込むと、行末が LF (0A) だけになる。これはなぜに?
- 546 :デフォルトの名無しさん:2018/02/17(土) 13:45:31.82 ID:wW66TFqR.net
- >>545
ストリームがテキストモードだからでしょ。
それがイヤならbinmodeすれば?
- 547 :デフォルトの名無しさん:2018/02/17(土) 14:32:59.21 ID:m8W4h2UJ.net
- >>546 サンクス。できたできた。
- 548 :デフォルトの名無しさん:2018/02/19(月) 12:04:01.90 ID:9O6KBvIf.net
- 63箱目のテンプレこぴっとく
CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
(WEBプログラミング板: http://kohada.2ch.net/php/)
このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
スレ違いの質問にはスルーか、速やかな誘導をお願いします。
荒らしはスルー推奨。
"The duct tape of the Internet" こと、Perlについての質問箱です。
"There's more than one way to do it" ということで、
Perlの奥深さについて皆で語り合い、追求してまいりましょう。
www.perl.org/get.html
Download Latest Stable Source (5.18.2)
▼前スレ
- 549 :デフォルトの名無しさん:2018/02/20(火) 08:19:10.59 ID:Zrzi4SG9.net
- >>548
CGIの話題もム板でいい筈じゃ?
WEBプログラミング板に該当スレが無くなったってのが、理由だったような。
後は、下記を修正。
www.perl.org/get.html
Download Latest Stable Source (5.26.1)
▼前スレ
Perlについての質問箱 63箱目
http://mevius.5ch.net/test/read.cgi/tech/1392820583/
- 550 :デフォルトの名無しさん:2018/02/20(火) 09:05:34.87 ID:67uqfrCT.net
- これが次スレになったのね。
おいらもそうだが、
最近、スレが立てられなくなった人が多いのかな?
- 551 :デフォルトの名無しさん:2018/02/20(火) 10:46:08.66 ID:vE/Q7KOY.net
- >>549
もしやあなたはCGIとPerlの区別がつかない人?
- 552 :デフォルトの名無しさん:2018/03/03(土) 15:00:12.27 ID:y3R+TCM+.net
- websocketをやってみたいんですが、Net::WebSocketというのとProtocol::WebSocketというのが検索で掛かります。
どっちを使うのでしょうか
- 553 :デフォルトの名無しさん:2018/03/03(土) 15:02:25.59 ID:y3R+TCM+.net
- サーバにしたいです
- 554 :デフォルトの名無しさん:2018/03/03(土) 18:32:08.00 ID:9T1Mlbb8.net
- Mojolicious
- 555 :デフォルトの名無しさん:2018/03/05(月) 16:53:07.80 ID:vyqV3ojD.net
- >>554
フレームワークは勉強の為に避けようと思います。
- 556 :デフォルトの名無しさん:2018/03/05(月) 18:51:20.07 ID:p13q4iUt.net
- 正直websocketやるのにPeal選ぶ意味は無い気がする
やりたいってんなら止めないけど
node.jsとかgoでいいような
適材適所というか
- 557 :デフォルトの名無しさん:2018/03/06(火) 11:48:05.65 ID:tpILJMN5.net
- 汎用的なものが作れないかと思っています。
スピードを求めるならjavaで作ろうと思います。
- 558 :デフォルトの名無しさん:2018/03/07(水) 00:30:44.98 ID:RIrp8kCR.net
- とりあえずやってみれば。
ダメなら乗り換えれば。
- 559 :デフォルトの名無しさん:2018/03/18(日) 10:31:45.09 ID:cNEg10A5.net
- perlでサーバーAで計算した値をサーバーBに送り表示することってできますか?
できるならどうやるんですか?
できればモジュールなくても使える方法がいいです。
- 560 :デフォルトの名無しさん:2018/03/18(日) 11:47:09.15 ID:JGqM6rnc.net
- サーバーAで計算した値をサーバーBに送るとはどういうことか、何に表示したいのか
perlの前にここを明らかにした方がいい
- 561 :デフォルトの名無しさん:2018/03/18(日) 12:33:37.42 ID:cNEg10A5.net
- >>560
もっとわかりやすいように質問変更する
サーバーAでログインIDとパスワード入力して
サーバーBに置いてあるユーザー情報と比較してログイン成功なら
サーバーAにログイン成功だと言う情報を送りたい
こういうこと
- 562 :デフォルトの名無しさん:2018/03/18(日) 13:33:56.77 ID:JGqM6rnc.net
- use HTTP::Tiny; # v5.14から標準モジュール
my $response = HTTP::Tiny->new->post_form('サーバーBのURL', {id => $id, password => $password});
if ($response->{success}) {
print '成功';
}
else {
print '失敗';
}
----------
AからBに問い合わせてその結果をAで使うならこんな感じで行けるんじゃない
- 563 :デフォルトの名無しさん:2018/03/18(日) 17:24:24.80 ID:kbqiSgza.net
- ぜんぜんわかりやすくない。
「ログイン」といってもいろいろ。
Webサイトについてだったら、WWW::Mechanizeとかそういう?
https://www.google.co.jp/search?q=perl+mechanize
- 564 :デフォルトの名無しさん:2018/03/18(日) 19:37:28.90 ID:z/qjkhKV.net
- perl関係ないな
仕様のはなしからだろ
- 565 :デフォルトの名無しさん:2018/03/18(日) 20:51:03.76 ID:Cc3+LG/u.net
- 鯖へのログインなのか、それともHTMLページ等でのログインなのかも分からん
- 566 :デフォルトの名無しさん:2018/03/30(金) 12:35:13.04 ID:5tmqHLck.net
- Perlのソケット通信にて、とあるAPIへのリクエストに対して送られてきた全応答を全て取得した上で処理をしたいと思っています。
たとえば簡単な例だと
応答データ例:(00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10);
データは00〜FF全てを含み、終了は6連続"00 00 00 00 00 00"になった場合となります。
==
my $data = <$socket>; # data => 00 01 02 03 04 05 06 07 08 09 0a
my $data2 = <$socket>; # pending....
==
$/ = \x5;
my $data = <$socket>; # data => 00 01 02 03 04 05
my $data2 = <$socket>; # pending....
==
のように、$/に当たるデータで停止してしまいます。$data2は待てど暮らせど進みません。
また6バイトで1組なので、sysread($socket,$buf,6)や$socket->recv($buf,6,0)、recv($socket,$buf,6,0)
といった方法もしてみましたが、これら全てpending...状態で1こちらも待てど暮らせど進みませんでした。
一括で取得する方法はありませんでしょうか。
- 567 :デフォルトの名無しさん:2018/03/30(金) 12:48:02.51 ID:TlFsJGTt.net
- >>566
ノンブロッキングのソケットってできなかったっけ?
fcntl()で指定するんだったような気がするが。
まあでもこの辺はOSによって微妙に違うかも知れないのでよく調べてみて。
で、ブロックしないようにしておいて受信したやつをとにかく全部読んで最後に \0 が6つあるかどうか見ると。
- 568 :デフォルトの名無しさん:2018/03/30(金) 13:25:36.98 ID:5tmqHLck.net
- >>567
ありがとう
試してみた感じとまらなくなりました。
助かりました。
- 569 :デフォルトの名無しさん:2018/03/30(金) 20:15:44.88 ID:1Iia3Fde.net
- while(1) {
PROC1;
if (COND) {
last;
}
PROC2;
}
こんなような処理を、while(1)とかlastとか使わずにスマートに書けない?
- 570 :デフォルトの名無しさん:2018/03/30(金) 20:22:24.29 ID:x2Z4e+RC.net
- >>569
PROC1はCONDの値を返さないってこと?
- 571 :デフォルトの名無しさん:2018/03/30(金) 20:50:04.69 ID:1Iia3Fde.net
- 想定してる例では返さないけど、返す前提じゃないと一般論にならない
- 572 :デフォルトの名無しさん:2018/03/30(金) 20:55:20.44 ID:dOU2138G.net
- >>568
non-blocking にするとデータが何もきてない時にほとんど素通りするので
selectとか使って自分で待たせることを忘れずに。そうしないと入力待ち
ループが物凄く早く回ってしまい無駄にCPUタイムを食うことになる。
- 573 :デフォルトの名無しさん:2018/04/14(土) 09:32:20.00 ID:3ZAO+EKI.net
- x が100000〜100500 なら y=1000
100501〜100700 なら y=1001
100701〜120000 なら y=1002
みたいな感じになってるとする
xはある範囲を全部埋めていて、yはある範囲で連続
で、xが与えられた時にyを求めたい
どんなデータ構造にするのが一番効率的だろう
- 574 :デフォルトの名無しさん:2018/04/14(土) 14:29:40.83 ID:lJIoGN24.net
- Perl関係無いような…
俺だったらxのfrom値をキーにハッシュ作って値にy入れるかなぁ
- 575 :デフォルトの名無しさん:2018/04/16(月) 09:41:27.92 ID:h6scVdPk.net
- >>573
単純な計算ではxからyは求められないようだね。だったら配列にxの下限とyの値のペアを入れといて比較かな。
こんなやつね。どう比較するかは分かると思うので省略。
my @a = (
[100000, 1000],
[100501, 1001],
[100701, 1002],
.
.
.
);
ハッシュ使うとxの値を比較する時に全てのキーを引き出してソートしてから行う必要があって、それだと余計に遅くなると思う。
しかし全てを配列に入れておいて頭から全て比較することが現実的とは思えないほど多い場合(何万件もあるとか)は、もうPerlでやるのは止めてRDBに繋いでやった方が良いかも知れない。
(xの上限、下限、yの値をただ入れる表を作ってxの方はインデックス作っておいて簡単なselectをする)。
そうすると何も考える必要がなくなって楽だ。DBはsqliteが軽くていいぞ。その場合DBIモジュールとDBD::SQLiteモジュールが必要。
- 576 :デフォルトの名無しさん:2018/04/16(月) 12:33:04.08 ID:qlfABgAK.net
- 0, 501, 701, 1001, 1301,
x のfrom 値で、2分探索木にする。
各ノードが、y 値を持つ
- 577 :デフォルトの名無しさん:2018/04/16(月) 19:16:06.77 ID:jtdCSi5V.net
- yを0から999までに単純化して、
下限だけ入れた配列を毎回0から見つかるまで舐める
という実装にしたら、余裕で一瞬で終わるので、これで十分だった
個人でDBが要るようなケースって、まず無い気がする
- 578 :デフォルトの名無しさん:2018/04/16(月) 19:54:02.09 ID:Njbya+hs.net
- >>577
ちなみに、DBを使ったことある?
個人的には、個人用途でもあれば便利。
保存関連がかなり楽になる。
- 579 :デフォルトの名無しさん:2018/04/16(月) 20:29:20.27 ID:jtdCSi5V.net
- 仕事でaccess使ったくらいだけど、
規模的にはテキストでも全然構わないレベルだった
excelと連動させたいからそういう手段が選べないだけで、
個人なら最初からexcelそのものを使わない
- 580 :デフォルトの名無しさん:2018/04/17(火) 09:50:37.14 ID:CpeCFbdf.net
- 扱うデータが多くて一々考えるのが面倒な時は使ってみると良い。
- 581 :デフォルトの名無しさん:2018/04/17(火) 18:45:22.69 ID:O41FhP2w.net
- データの規模よりは、構造の複雑さだろうな
いろんな属性がいっぱいくっついてて、それらが相互に関連してるようなデータを
テキストベースで作るのはなかなか大変
で、個人でそんなデータを扱う機会はやっぱり無い
家計簿をコンビニ別に統計を出したいとか、そんなことは思わないし、
そうできるようにデータ入力するのが面倒すぎて挫折する
- 582 :デフォルトの名無しさん:2018/04/17(火) 20:55:41.70 ID:jy0h/NRq.net
- こんな単純なデータ構造のものをDBにしたら遅くなるのは目に見えてる
単純に2つの配列か、独立してるのが嫌なら、2つの要素を持つオブジェクトの配列でいいだろ
- 583 :デフォルトの名無しさん:2018/04/17(火) 21:07:35.33 ID:O41FhP2w.net
- しまうのはそれでいいけど、検索できんだろ
数が莫大になっても短時間で検索できるようにしまっといてくれるのがDBのいいところ
でも高々1万とかならリニアで十分
100万とかあると探索アルゴリズムが威力が効いてくる
- 584 :デフォルトの名無しさん:2018/04/17(火) 21:08:16.86 ID:IUYvc0m6.net
- 小規模だと遅くなるだろうな。
- 585 :デフォルトの名無しさん:2018/04/17(火) 21:19:21.97 ID:O41FhP2w.net
- 小規模だとどちらも体感0秒だから変わらない
- 586 :デフォルトの名無しさん:2018/04/18(水) 02:06:34.84 ID:yJ81KmRv.net
- >>585
DB使って、どういうキーでクエリー出すの?
俺は詳しくないから考え方だけでいいので教えて
・x>=キーのものの中からMINを取って、それのyを出力?
・x>=キー and 次のレコードのx<キー?(次のレコードって見れるのかは知らんけど)
・x,yの他にx2として範囲の最後をデータとして追加しておき、x<=キー and x2<キー?
何かベストマッチな方法がありそうだけどね
(上記の方法ではとてもDBの検索が効率よくいけるとは思えんので)
- 587 :デフォルトの名無しさん:2018/04/18(水) 03:06:20.17 ID:kaO6I25j.net
- 単純にSELECT y FROM hoge WHERE x BETWEEN a AND bで
実態はSQL側で最適化してくれるよ
データを扱うことに特化した高級言語な訳だし
個人的にはDB使うかどうかって、
データの流動性(?)がポイントな気がする
弄る機会が多ければ多いほど恩恵受けられる訳だから
- 588 :デフォルトの名無しさん:2018/04/18(水) 03:22:30.21 ID:yJ81KmRv.net
- >>587
BETWEEN a AND bって、aからbの間ってことじゃなかったっけ?
x=100502の場合のyを求めるのにどう書くの?
BETWEEN 100502 AND 100502でいいんだっけ?
- 589 :デフォルトの名無しさん:2018/04/18(水) 03:27:30.58 ID:yJ81KmRv.net
- これって例えば、10000から11000の間にあるデータxを全部抽出したい場合とかに使うものなのでは?
- 590 :デフォルトの名無しさん:2018/04/18(水) 03:58:19.16 ID:yJ81KmRv.net
- >>586の例って全部おかしかったので書き直しとく
・MAX(x<=100502)
・x<=100502 and (次のレコードのx)?>100502
・x<=100502 and x2>=100502
- 591 :デフォルトの名無しさん:2018/04/18(水) 11:34:48.13 ID:gg2GabAw.net
- 表は x の最大と最小(xmin,xmax)と y をただ入れといて select y from xytbl where x between xmin and xmax みたいにすればいいじゃん。
xmin + 1 が次の xmax と一致するので無駄があるが xmin, xmax にインデックス作っておけば多分速くはなるだろう。
どうしても無駄をなくしたい場合は xmin と y だけにして xmax はビュー作ってそちらであるかのように見せかけておくか、または複雑になるが一つのSQL文にするかだ。
- 592 :デフォルトの名無しさん:2018/04/19(木) 02:32:23.49 ID:h5gs+kbl.net
- >>591
何を言ってるのか不明
表にxminとyしかないのなら、xは使えないだろ
また、[x,y,xmin,xmax]=
([100000,1000,100000,100500], [100501,1001,100501,100700], [100701,1002,100701,120000],…)
ってことで
select y from xytbl where x between xmin and xmax
なら全レコードがマッチするよ
- 593 :デフォルトの名無しさん:2018/04/19(木) 03:01:26.91 ID:h5gs+kbl.net
- between句は、
SELECT カラム名 , ... FROM テーブル名 WHERE カラム BETWEEN 値1 AND 値2;
で
SELECT カラム名 , ... FROM テーブル名 WHERE カラム >= 値1 AND カラム <= 値2;
と書くのと同等の機能
select y from tbl01 where x between 100000 and 110000
なら
select y from tbl01 where x >= 100000 and x<=110000
と同じってこと
- 594 :デフォルトの名無しさん:2018/04/19(木) 12:07:08.87 ID:SbGYlqelo
- >>576に同意。
>>573の問題は、範囲が被らなく、変更されないならば、二分探索法で十分速い。
- 595 :デフォルトの名無しさん:2018/04/19(木) 10:18:42.11 ID:XRkJ53+o.net
- >>592
うまく伝わらなかったかな?考えてることは多分同じだよ。
例えば以下のようにするの(以下はSQLiteでのSQL)。
create table xytbl (xmin, xmax, y);
insert into xytbl (xmin, xmax, y)
values (100000, 100500, 1000), (100501, 100700, 1001), (100701, 120000, 1002);
create table xtbl (x);
insert into xtbl (x) values (9999), (100300), (100502), (118000), (120100);
select x, y from xytbl, xtbl where x between xmin and xmax;
ここでは xtbl に x の値だけ並べて入れておいて後でまとめて selectして x, y 両方出している。
- 596 :デフォルトの名無しさん:2018/04/19(木) 10:19:56.20 ID:T9/zIgZR.net
- ごめんびとうぃーん言い出しっぺだけどダメだね
感覚と言うかノリだけで書いてしまった
実際書くと即だめじゃんってなるやつ
- 597 :デフォルトの名無しさん:2018/04/19(木) 10:22:29.59 ID:XRkJ53+o.net
- PerlからDBI経由でDBアクセスするならxtbl不要でxの部分はprepareで'?'にしておいてexecuteで実際の値を渡せば良い。
- 598 :デフォルトの名無しさん:2018/04/19(木) 10:28:26.42 ID:T9/zIgZR.net
- 真面目に今考えた結果
Select y From hoge Where ? < x Order by x Desc Limit 1;
で多分取れる
- 599 :デフォルトの名無しさん:2018/04/23(月) 17:03:26.38 ID:YcjqEwjB.net
- $$で取得するプロセスIDはどんな環境でも最大4桁までですか?
- 600 :デフォルトの名無しさん:2018/04/23(月) 17:19:28.43 ID:AJxfAl3T.net
- >>599
んなこたなかろう。Linuxで ps -fe とかやれば5桁ぐらいのが沢山出てくるぞ。
かといって最大5桁で作って安心してはいけない。
将来的に変わるかも知れないしLinux以外ではもっと桁数あるかも知れないからな。
- 601 :デフォルトの名無しさん:2018/05/01(火) 17:33:53.54 ID:Jzi33zXB.net
- 全く初歩的な質問ですいません
ググってみたのですがそのものズバリの例を見つけることができませんでした。
やりたいことは、連装配列に配列を入れて取り出すことです。
最後の出力行が [2] となることを意図していますが、出力は
[] となり、ワーニングもでています。
配列を入れたつもりの連装配列の要素が配列とは認識されていないようです。
この場合どのように書けば、所期の結果が得られるでしょうか?
$ perl -v
This is perl 5, version 18, subversion 2 (v5.18.2) built for x86_64-linux-gnu-thread-multi
(with 46 registered patches, see perl -V for more detail)
〜後半略〜
$ cat sample.pl
my %hasy01;
my @array01;
@array01=(2,4,6,8);
$hash01{"name"}=@array01;
printf( "[%s]\n", $array01[0] );
printf( "[%s]\n", $hash01{"name"}[0] );
$ perl -w sample.pl
[2]
Use of uninitialized value in printf at sample.pl line 9.
[]
- 602 :デフォルトの名無しさん:2018/05/01(火) 17:45:53.43 ID:4WtZiQYp.net
- $hash01{"name"}=\@array01;
こうやるんだよ
- 603 :デフォルトの名無しさん:2018/05/01(火) 17:54:36.04 ID:tWpDsj7U.net
- >>601
$hash01{"name"}=[@array01];
でも可
- 604 :デフォルトの名無しさん:2018/05/01(火) 17:57:41.47 ID:Jzi33zXB.net
- >>602
おお、うまくいきました。
ありがとうございます。
- 605 :デフォルトの名無しさん:2018/05/01(火) 21:28:23.40 ID:J+iCny9E.net
- >>603
リストのリファレンスかコピーかでまったく別物なので注意。
- 606 :デフォルトの名無しさん:2018/05/01(火) 21:42:46.89 ID:4WtZiQYp.net
- デリファレンス側もちょっと不満があるな
printf( "[%s]\n", ${$hash01{"name"}}[0] );
こうか
printf( "[%s]\n", $hash01{"name"}->[0] );
こうがいい
- 607 :デフォルトの名無しさん:2018/05/02(水) 02:19:06.16 ID:bQ3xZw0Z.net
- >>605
目的用途に応じて意識的に書き分ける
>>606
}{][の間の->は略せるので
printf("[%s]\n", $hash01{"name"}[0]);
が良いかと
- 608 :デフォルトの名無しさん:2018/05/02(水) 08:00:00.39 ID:lnsF+QsJ.net
- #自分ならこうするかな
my $hash01;
my @array01;
@array01=(2,4,6,8);
$hash01 = {
name => \@array01 ,
foo => \@array01 ,
bar => \@array01 ,
# .... 多分こういうふうに増えるだろうし
};
printf( "[%s]\n", $h->{name}->[0] ); # -> があると目が滑りにくい!
- 609 :デフォルトの名無しさん:2018/05/05(土) 20:27:28.60 ID:yJAqb+uF.net
- 正規表現でマッチした部分を$1,$2などで取り出すけど
$いくつまであるかわからない場合$1,$2...$nをまとめて配列に入れる方法ってどうやるんですか?
- 610 :デフォルトの名無しさん:2018/05/05(土) 21:54:57.88 ID:ddSxgz72.net
- >>609
ttp://perldoc.jp/docs/perl/5.22.1/perlrequick.pod#Extracting32matches
>リストコンテキストでは、グループ化付きのマッチング /regex/ は マッチングした値のリスト ($1,$2,...) を返します。 従ってこれは以下のように書き換えられます
> ($hours, $minutes, $second) = ($time =~ /(\d\d):(\d\d):(\d\d)/);
ttp://perldoc.jp/docs/perl/5.22.1/perlrequick.pod#More32matching
>リストコンテキストでは、//g はマッチングしたグループのリストを返します; グループ化の指定がなければ、正規表現全体にマッチングするリストを返します。 従って
> @words = ($x =~ /(\w+)/g);
- 611 :デフォルトの名無しさん:2018/05/05(土) 22:30:46.21 ID:BVQmyJFO.net
- そういえば$10まで行って困ったこと一度もないな
- 612 :デフォルトの名無しさん:2018/05/06(日) 12:36:15.67 ID:Bse1bLkg.net
- >>611
え?困らんだろ。普通に $10 とか $11 とか書けば良いだけだし。
- 613 :デフォルトの名無しさん:2018/05/06(日) 13:41:43.10 ID:1K09Bg92.net
- Perl のことだとは言ってないな。正規表現の話なら 9 までしか使えない方が多数派だ。Perl でさえ昔はそうだった。
まあ、そういう話なら $10 ではなく \10 と書くべきかもしれないが。
- 614 :デフォルトの名無しさん:2018/05/06(日) 18:20:08.93 ID:Bse1bLkg.net
- いやこのスレは「Perl についての質問箱」なわけで・・・
- 615 :デフォルトの名無しさん:2018/05/15(火) 01:25:39.67 ID:bz5cqKe9.net
- ユーザ定義関数のリファレンスを変数に代入しておき、そのリファレンス変数を
参照することによって関数を呼び出すことができます。たとえばこんな感じに。
sub s { $_[0]+1 }
$r = \&s;
print $r->(1)."\n";
$ perl usr.pl
2
それでは、popやshift、printなどの組み込み関数についても、リファレンスを変数に代入しておき、変数を参照することによって組み込み関数を呼び出すことができないか方法を探しています。
しかしCOREやCORE::GLOBAL名前空間を使ってできないか、ためしてみましたがうまくいきません。たとえば
$r = \CORE::print;
#print "$r\n";
print $r->(3.14, "\n");
を実行すると
Not a CODE reference at 〜.pl line 3.
となります。
$r = \CORE::GLOBAL::print;
#print "$r\n";
print $r->(3.14, "\n");
を実行しても
Not a CODE reference at 〜.pl line 3.
となってしまします。何かいい方法をご存知でしたら教えてくださいませ。
- 616 :デフォルトの名無しさん:2018/05/15(火) 07:18:03.41 ID:PvTz5h0y.net
- ユーザー定義関数だと\&でやってるのにCOREは\&でやってないのはなんで?
- 617 :615:2018/05/15(火) 23:35:25.73 ID:fP8R1+3G.net
- >>616
\&CORE もためしたけれど
$r = \&CORE::print;
print "$r\n";
$r->(3.14, "\n");
実行すると
Undefined subroutine &CORE::print called at 〜.pl line 3.
CODE(0x3919c)
となるのよ。
できなことなのかね…
- 618 :デフォルトの名無しさん:2018/05/16(水) 00:12:42.68 ID:uHifQt6J.net
- ttps://perldoc.perl.org/CORE.html
COREパッケージの関数もリファレンスを取得したり別名を定義することができる(pushなど)
ただし一部はベアワードでしか呼び出せない(printなど)
>組み込み関数についても、リファレンスを変数に代入しておき、変数を参照することによって組み込み関数を呼び出すことができないか
結論: ものによる
- 619 :615:2018/05/16(水) 01:13:39.26 ID:N7L5seGg.net
- >>618
ありがとう。
- 620 :デフォルトの名無しさん:2018/05/16(水) 04:01:32.31 ID:5FKSCtlR.net
- 無名関数のリファレンスを使えば。
- 621 :615:2018/05/16(水) 07:58:19.21 ID:lqxKAjJz.net
- >>620
そうすれば機能的に可能だけれど、
ユーザ関数のコードがワンクッション間に入るので
パーフォマンス的にみて、
できれば組み込み関数を直接、第一級関数としてクロージャーなどに
使えないか調べていた、ってわけですのよ
- 622 :デフォルトの名無しさん:2018/05/20(日) 02:13:22.75 ID:QVTwsNDJ.net
- https://log.perl.org/2018/05/goodbye-search-dot-cpan-dot-org.html
search.cpan.orgが6月に終了だと。
mcpan使ってねってことだけど、終焉を感じるなぁ…
- 623 :デフォルトの名無しさん:2018/05/23(水) 19:29:13.97 ID:Au5e7VGg.net
- 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
U85LY
- 624 :デフォルトの名無しさん:2018/05/23(水) 21:28:50.98 ID:/p8qS87L.net
- 意味もなく、関係ない変数を bless
- 625 :デフォルトの名無しさん:2018/05/24(木) 12:17:56.05 ID:62mXzMMG.net
- bless
それは祝福
- 626 :デフォルトの名無しさん:2018/05/26(土) 02:04:34.60 ID:NxLTutQ0.net
- God bless you!
- 627 :デフォルトの名無しさん:2018/05/26(土) 06:15:15.44 ID:qdFYQfps.net
- さすがにリファレンスですらない変数だと怒られた
でも、勝手に作った偽オブジェクトを食わせたりはできる
他の言語はそのへんの安全装置はどうなってるんだろう
- 628 :デフォルトの名無しさん:2018/05/26(土) 11:44:11.22 ID:nibGH99w.net
- blessは、オブジェクトにパッケージを関連付けるだけだろ。
どんな「安全装置」が必要なのか?
ちなみに、RubyもJavaScriptも、動的に後からメソッドとか足し放題だな。
まあ、スクリプト言語としては残念でもないし当然。
- 629 :デフォルトの名無しさん:2018/05/26(土) 11:59:50.95 ID:qdFYQfps.net
- メソッドを足すのと、コンストラクタが生成してないものを使うのは全然違うだろ
- 630 :デフォルトの名無しさん:2018/05/26(土) 15:30:59.65 ID:NxLTutQ0.net
- Pod::PerldocJp という日本語 perldoc を cpanm 使ってインストールしてみたが、root でないとエラーが出て動かない(Linux 環境ね)。
$ perldocjp perldocjp
Error stat on '/tmp/.perldocjp/perldocjp.pod': そのようなファイルやディレクトリはありません at /usr/local/share/perl5/Pod/PerldocJp.pm line 78.
$
root になるとちゃんと出てくる。ただし sudo perldocjp perldocjp ではダメで、 sudo su - とかで root でログインした状態で perldocjp perldocjp とするとちゃんと動く。
実行時の環境変数 LANG は一般ユーザもroootも ja_JP.UTF-8 になっている。
これ Linux でインストールしてみてうまく行った人いる?
Pod::PerldocJpとperldocjpコマンドについての日本語での説明はここね。
http://search.cpan.org/~ishigaki/Pod-PerldocJp-0.18/perldocjp
- 631 :デフォルトの名無しさん:2018/06/03(日) 15:51:19.96 ID:F3uiBXX1.net
- 5.28まだ?
- 632 :デフォルトの名無しさん:2018/06/08(金) 21:09:03.47 ID:JtDK6GNM.net
- 例えばファイル名を入れて関数を呼んで、
処理結果を入れた配列なりのリファレンスを戻り値で返す
別のファイル名で同じ関数を呼んで、結果のリファレンスを別の変数で受ける
それで普通に動くんだけど、
なぜ同じ関数のmyで宣言した変数が違うオブジェクトを指しているのか、
なぜ古い方は消えてしまわないのか、
そもそもいつまで残ってるのか、
みたいな部分が何となく不安
参照カウントの仕組みを理解しても、やっぱり不安
- 633 :615:2018/06/09(土) 01:53:50.05 ID:dh6JCgcP.net
- >>632
気持ちはなんとなく分かるけど、
こういう人に対して何と言って分かりやすく説明したら
よりよいかは
少し考えてしまうな…
- 634 :デフォルトの名無しさん:2018/06/09(土) 05:26:23.38 ID:uYb8xFM5.net
- 大丈夫。参照されなくなったやつは自動で消える。
- 635 :デフォルトの名無しさん:2018/06/09(土) 08:22:42.99 ID:VVS81UdD.net
- 消えないことに対する不安じゃないんだよな
肉体は既に滅びているけど、どこかにある名簿にまだ名前があるお陰で、
辛うじて魂だけまだ現世に留まってる感じ
リファレンスを戻り値で受けるんじゃなくて、
自分で宣言した変数のリファレンスを引数で渡して、
そこに入れて貰う方式なら安心できる
意味は同じなんだけど
- 636 :デフォルトの名無しさん:2018/06/09(土) 08:45:10.02 ID:ngqKHOqq.net
- strdupの仕様の気持ち悪さ
無名関数のリファレンスの気持ち悪さ
みたいなやつなら、俺も感じる
- 637 :デフォルトの名無しさん:2018/06/09(土) 17:49:06.89 ID:uYb8xFM5.net
- うーん。しかし、そういうのは言語を実現する環境の実装にバグがあるかどうかの問題だよなあ。
そのバグを気にするならどんな言語も使えなくなるのでは?コンパイルする言語でもバグってて
変なコード作られたら終わりだしなあ。
- 638 :デフォルトの名無しさん:2018/06/09(土) 19:13:31.22 ID:sS73Mbwb.net
- 信頼性の話じゃないだろ。
言ってしまえば、リファレンスとかオブジェクトとか、なんかふわふわしてて、なんとなく納得がいかん、てだけ。
感覚的には慣れの話でしかないと思うけど、どうしてもというなら、C++でもやってみればいいのでは。
newとかヒープとかを把握できれば、実はぜんぜんふわふわしてないことが理解できるはず。
余計に混乱するかもしらんけども。w
- 639 :デフォルトの名無しさん:2018/06/09(土) 19:58:15.52 ID:VVS81UdD.net
- C言語で関数内にstatic変数を持ってて、
そこに何か格納してそのポインタを返す、みたいな仕組みなら安心する
何回呼んでも同じポインタが返ってきて、前回の内容は保存されていない
だから必要なら呼んだ側の責任で保存しとかないといけない
家がない子はいない
perlのsub内のmy変数のリファレンスも見かけはそれと似てるけど、
実際の動作が全然違って、実体は動的に生成される
じゃあC言語のauto変数みたいなもんかというと、関数が終わってもスコープを抜けない
かといってずっと存在する訳でもなくて「要らなくなったら消える」というルールが人智を超える
うまく動くように出来てるんだから、怖がらずに飛んでみろ的な
- 640 :デフォルトの名無しさん:2018/06/09(土) 20:16:55.67 ID:vLAdQtfD.net
- もはや信じるか否かという宗教的問題か?
- 641 :デフォルトの名無しさん:2018/06/09(土) 20:29:44.29 ID:VVS81UdD.net
- 変数の寿命なんて本来はコードから静的に判るものだったのに、
それを動的にする代わりに管理を手放して機械に任せることにした
それはなかなかのパラダイムシフトである筈なのに、
オブジェクト指向のデータ隠蔽とセットで隠蔽されてあんまり気にしてない
コンストラクタさんに任せとけば全部うまくやってくれるから
- 642 :デフォルトの名無しさん:2018/06/10(日) 02:37:37.78 ID:3IVbSRGy.net
- >>639
人智は超えないだろ…
- 643 :デフォルトの名無しさん:2018/06/10(日) 05:50:21.80 ID:eOmqsLdO.net
- >>639
それだとマルチスレッドの時に困るわけだな。呼び出し側でバッファ作ってそのポインタを渡すという手もあるが、
量が動的に変化する場合はそれだけでは実現できない。で、malloc() 使うわけだが、そうするとどこかで必ず
free() する必要が出てくる。これが煩わしいので自動でなんとかならないかと色々やってるのが今時の言語。
とはいっても Perl は30年以上前に作られた言語だけどね。
- 644 :デフォルトの名無しさん:2018/06/10(日) 18:45:28.50 ID:vU7l4ry5.net
- Perl++
- 645 :デフォルトの名無しさん:2018/06/10(日) 18:52:31.32 ID:7xflXXzg.net
- 個人環境をMariaDBに代えてみたけど
DBD::MariaDBがgithubにしかなくてMySQLに戻したわ(´・ω・`)
こういうとこ困るなー枯れてると
- 646 :デフォルトの名無しさん:2018/06/10(日) 23:05:19.73 ID:A0irmCxf.net
- MySQL用で動きそうなもんだが。
実際、数年前だけどRubyでは使えた。
- 647 :デフォルトの名無しさん:2018/06/11(月) 00:28:21.09 ID:giD/kjqV.net
- それは枯れてないのでは
- 648 :デフォルトの名無しさん:2018/06/11(月) 13:01:10.20 ID:FLjqN/A3.net
- 枯れてるって、不具合とか掘り尽くされて安定してるって言ういい意味と
動きが無いって言う悪い意味の両面がある気が
- 649 :デフォルトの名無しさん:2018/06/11(月) 13:04:00.52 ID:FLjqN/A3.net
- >>646
my.conf的な(my.confではない)、恐らくMySQLにあってまりあDBに無いファイル読みにいってこける。
たぶん簡単に修正できるけど、CPAN取得ファイルは弄りたくないから様子見にしたわ
- 650 :デフォルトの名無しさん:2018/06/11(月) 17:12:02.09 ID:ah84zYcK.net
- >>648
IT系で後者の意味では普通使わない。
「枯れる ソフトウェア」などでググってみ。
- 651 :デフォルトの名無しさん:2018/06/11(月) 17:21:23.85 ID:FLjqN/A3.net
- >>650
この場合「枯れる 言語」のが適切だと思うけど…
俺は文脈でどっちの意味でも使ってたわ
- 652 :デフォルトの名無しさん:2018/06/11(月) 19:02:34.25 ID:HvQh9O78.net
- 不具合が枯れたなら分かるけど、動きがないはよくわからん。
ユーザー数は関係ないってこと?C言語はどっち?
- 653 :デフォルトの名無しさん:2018/06/11(月) 19:30:59.90 ID:giD/kjqV.net
- %cat = (%hash1, %hash2);
みたいにするとハッシュが結合できる
keys %cat でkeyの配列が取得できる
でも、keys (%hash1, %hash2)
とすると怒られる
keys {%hash1, %hash2}
ならいけるけど、5.12では通らない
どうすれば
- 654 :デフォルトの名無しさん:2018/06/11(月) 21:05:27.50 ID:HvQh9O78.net
- (keys %hash1, keys %hash2)かなあ
- 655 :デフォルトの名無しさん:2018/06/11(月) 21:25:55.72 ID:C5cAV0Rs.net
- それだけだと同じキーがあった場合に2つ出て来るのでもう一捻り必要ということになるんだろうな。
こうかねえ?
keys map { $_ => 1 } keys %hash1, keys %hash2
- 656 :デフォルトの名無しさん:2018/06/11(月) 21:27:28.65 ID:bgvsbZyV.net
- >>653
$cat a.pl
use strict;
my %h0 = ( a => 1, b => 2);
my %h1 = ( b => 3, c => 4);
print( keys( %{ +{ %h0 , %h1 }}),"\n");
$perl a.pl
acb
$
$# できるといえばできるけど、君がやってるやり方をおすすめするよ。その方が余計なバグを防止できる。
- 657 :デフォルトの名無しさん:2018/06/11(月) 21:37:24.11 ID:giD/kjqV.net
- 怒られる方法が何故悪いのかがよく判らんのだよな
普通に無名のハッシュになるんじゃないのかと思うんだけど、
> Type of argument to keys on reference must be unblessed hashref or arrayref
hashでもarrayでもない何かのリファレンスになってる?
- 658 :デフォルトの名無しさん:2018/06/11(月) 21:46:36.09 ID:C5cAV0Rs.net
- {}で括ってるからhashrefと思ったとか
- 659 :デフォルトの名無しさん:2018/06/11(月) 23:58:04.20 ID:kxBy2s6A.net
- keys()が引数にリファレンスをとれるようになったのは最近(でもないけど)だから、曽野せいなんでは。
>>657
- 660 :デフォルトの名無しさん:2018/06/11(月) 23:59:00.05 ID:kxBy2s6A.net
- >>656は、わざわざデリファレンスしてるし。
- 661 :デフォルトの名無しさん:2018/06/12(火) 00:01:02.77 ID:DCSlzX2w.net
- %hash1 = (a => 1, b => 2);
%hash2 = (c => 3, d => 4);
$ref = (%hash1, %hash2);
print $ref;
さて、何が表示されるでしょう?
- 662 :デフォルトの名無しさん:2018/06/12(火) 02:21:03.71 ID:zyhS8Ljg.net
- perl -e "use Data::Dumper; %hash1 = (a => 1, b => 2); %hash2 = (c => 3, d => 4); $ref = (\%hash1, \%hash2); print Dumper($ref);"
- 663 :656:2018/06/12(火) 13:02:00.90 ID:0nDO7HX7.net
- >>660
つっこみありがとう。もう長いこと Perl 使ってるからね、そこはデリファレンスしたいんだよ。
そもそも Perl4 にはリファレンスが無かったんだ。
C でも関数ポインタ使うときは (*p)() みたいな書き方してるよ。
- 664 :デフォルトの名無しさん:2018/06/13(水) 02:19:57.94 ID:mK+NhzCY.net
- >>661
2/8 と出た。何が出てるんだこれ?
- 665 :デフォルトの名無しさん:2018/06/13(水) 06:32:37.33 ID:a9+2+9qX.net
- >>661
通常はそこはリスト値に展開されて %hash2 の要素のどれかが全体のスカラ値になるはずだけど、そうなってないね。
その仕様は公式ドキュメントのどこに書かれてるの?
通常の評価をしてもらうにはどう書けばいいの?
- 666 :デフォルトの名無しさん:2018/06/13(水) 07:40:41.18 ID:3GuASBgR.net
- >>664
5.26からは挙動が変わったので注意
ttp://perldoc.jp/docs/perl/5.26.0/perl5260delta.pod#scalar40-37hash41-32return32signature32changed
>>665
リスト値が展開されてから代入されるのではなく
左辺がスカラコンテキスト -> リストの一番右側の値が代入される -> %hashをスカラコンテキストで評価
と思われ
- 667 :デフォルトの名無しさん:2018/06/13(水) 10:44:03.43 ID:a9+2+9qX.net
- ありがとう。perldata は読んでたけど理解できてなかった。
- 668 :デフォルトの名無しさん:2018/06/15(金) 22:18:58.35 ID:Cep0TxDe.net
- 正規表現のマッチ結果って、どこかのデフォルト変数に入ってないの?
($match1, $match2) = ($1, $2);
とやる代わりに、
($match1, $match2) = @_;
みたいにやりたい
- 669 :デフォルトの名無しさん:2018/06/15(金) 22:34:53.18 ID:+TY+tyj1.net
- リストコンテキストで評価すれば$1とか使わず代入できる
($hours, $minutes, $second) = ($time =~ /(\d\d):(\d\d):(\d\d)/);
ttp://perldoc.jp/docs/perl/5.22.1/perlretut.pod#Extracting32matches
- 670 :デフォルトの名無しさん:2018/06/16(土) 06:32:34.79 ID:CnQY4Co9.net
- >>668-669
もしくは %+ と %-
http://perldoc.jp/docs/perl/5.24.1/perlvar.pod#Variables32related32to32regular32expressions
- 671 :デフォルトの名無しさん:2018/06/16(土) 06:48:42.62 ID:QsFR7Mzm.net
- インデックスだけ渡されてもなー
- 672 :デフォルトの名無しさん:2018/06/16(土) 13:31:25.59 ID:CnQY4Co9.net
- >>671
@+・@- と勘違いしてないか?
http://perldoc.jp/docs/perl/5.22.1/perlretut.pod#Named32backreferences
- 673 :デフォルトの名無しさん:2018/06/16(土) 14:40:46.76 ID:QsFR7Mzm.net
- どうやっても、($1, $2)に相当するような配列は、自分で作らないと無いんだけど、
そもそもそのやり方は便利なのか? という問題があって
括弧の数を左から数えて、挿入したら間違えずにずらして、というやり方は、
どう考えても避けるべきテクニックなので、わざわざ改良版でそんな方法を
準備したりはしない
- 674 :デフォルトの名無しさん:2018/06/17(日) 02:57:43.02 ID:rS3/QTqY.net
- >>669
ちょっと捻ってこうすると配列に入るね。
@t = ($time =~ /(\d\d):(\d\d):(\d\d)/);
で、マッチしなければ @t には何も入らないので if (@t) { マッチした時の処理 } のように書ける。
- 675 :デフォルトの名無しさん:2018/06/17(日) 04:40:03.87 ID:rS3/QTqY.net
- if の中に突っ込んじゃえば見た目が元とあまり変わらなくなるな。
if (my @t = $time =~ /(\d\d):(\d\d):(\d\d)/) {
# このブロックに入った場合は @t[0..2] に値が入っている。
}
- 676 :デフォルトの名無しさん:2018/06/17(日) 09:21:55.81 ID:jBtDb+3n.net
- それが常套手段
でも、次の行で使うためだけにテンポラリの変数を命名して、
ということを避ける手段が大抵はあるのに、この場合は無さそうなのが気になる
- 677 :デフォルトの名無しさん:2018/06/17(日) 16:50:23.88 ID:YZJ2jt3n.net
- 気にするな。
- 678 :デフォルトの名無しさん:2018/06/17(日) 17:15:26.48 ID:1gNDCUDy.net
- リストのスライスを使えばいいんじゃないかなあ。
- 679 :デフォルトの名無しさん:2018/06/17(日) 17:43:24.21 ID:jBtDb+3n.net
- もう括弧を数えるのはやめようぜ、ということなのだろう
$1, $2 の代わりの配列があったとしても、数えないといけないのは同じなので、
明示的にラベルを付けて書くのが人間的
- 680 :デフォルトの名無しさん:2018/06/17(日) 21:23:30.12 ID:hnLcPBvl.net
- あー。まあそうかな。
- 681 :デフォルトの名無しさん:2018/07/04(水) 17:49:09.45 ID:XD9RzW/r.net
- 使ってる Perl が 24.1 になったんだけど、どこかで do の仕様変わった?
do('.state')
がエラーになるんだが。
@INC に '.' を加えれば見つけてくれるけど
do('./.state')
と書いとくべきだったよ。
- 682 :デフォルトの名無しさん:2018/07/04(水) 21:00:50.16 ID:pO2eBJuX.net
- それは do の仕様が変わったんではなく、@INC の仕様が変わったんだな。
- 683 :デフォルトの名無しさん:2018/07/04(水) 21:36:23.59 ID:k7IkWFxo.net
- @_ とタイプしようとしても必ずミスする
下手すると、`\ になる
- 684 :デフォルトの名無しさん:2018/07/04(水) 22:16:13.94 ID:gFgZc5FG.net
- WCG
- 685 :デフォルトの名無しさん:2018/07/04(水) 23:54:26.65 ID:pO2eBJuX.net
- >>683
いっそ `\ とタイプするよう心がけたらミスで @_ となる率が上がったりして。
- 686 :681:2018/07/05(木) 06:47:48.29 ID:xxuahHpW.net
- >>602
ありがとう。perl5241delta だったんだね。
@INC でなく do を探してたからわからなかったよ。
- 687 :681:2018/07/05(木) 06:50:01.14 ID:xxuahHpW.net
- ごめん、>>602 でなく >>682 ね。
- 688 :デフォルトの名無しさん:2018/07/06(金) 00:12:17.27 ID:sx2dCES6.net
- 質問じゃないけど、愚痴なんで聞き流してください。
Perlが好きなんですが、モジュールを使って実践サンプルが多いんが、つくって覚えるだけなんで
すごいさみしいです。
Perlのモジュールプログラムは最高に面白いのに、なんであの本だけなんですかね?
あと、PythonのTKinterも好きだけど、全然出てない。
- 689 :デフォルトの名無しさん:2018/07/06(金) 08:01:08.76 ID:MZPdd74D.net
- 今回のプロジェクトは大掛かりだったので、
自分で使う用のツールを大量に作った
こういうの好き
- 690 :デフォルトの名無しさん:2018/08/11(土) 13:47:45.26 ID:DaBLZ7U5.net
- perlの話でもなんでもないけど、再帰呼び出しの話
あるディレクトリから下の階層構造について、再帰的に調べたい
その時に、そのターゲットのディレクトリからの相対パスで出力させたい
それを再帰呼び出しを使ってやらせようとすると、
最初: ターゲット
次: ターゲット/file1
次の次: ターゲット/file1/file11
次の次の次: ターゲット/file1/file11/file111
が調べる対象で、単純に受け取った相対パスに対して
ターゲット/相対パス/ファイル名
を調べればいい訳ではないし、再帰的に渡す相対パス名も、
相対パス/ファイル名
と決め打ちすると最初だけ例外がある
何かスマートにやる方法は無いもんかなと
いっそフルパスで扱って、後から文字列置換でターゲット部分だけ削るという方法もあるけど
- 691 :デフォルトの名無しさん:2018/08/11(土) 14:01:06.83 ID:4zfRZVUI.net
- >>690
台無しなこというと、ディレクトリ以下のファイルを列挙するシェルコマンドとプロセス通信したほうが速い。
- 692 :デフォルトの名無しさん:2018/08/11(土) 14:16:49.10 ID:DaBLZ7U5.net
- 再帰しなくてよくなるだけで、相対パスの問題は解決しないというか、
より遠のくような
- 693 :デフォルトの名無しさん:2018/08/11(土) 15:52:58.06 ID:edehoOie.net
- Perlの話をするが、File::Findモジュールを使えば。
- 694 :デフォルトの名無しさん:2018/08/11(土) 20:53:56.37 ID:4zfRZVUI.net
- >>693
まさにFile::Findが遅い。シェルコマンドとプロセス間通信読み取りしたほうがいい。
具体的には以下のようなシェルコマンドをパイプ読み取りするといい。
unixの場合: find [path] -type f
windowsの場合: dir /B /S /A:-D [path]
- 695 :デフォルトの名無しさん:2018/08/11(土) 21:20:05.57 ID:DaBLZ7U5.net
- まさにそんな感じになった
dir の結果になんかハングルとかSJISじゃないものが混じってて、
それをそのままbatファイルに吐いて、
batファイルを見ても・・・みたいに化けてても、
実行させるとちゃんと正常に動作する
何作ってたかというと、差分バックアップツール
tarコマンドでできそうで試したけどうまくいかないので作ったった
全ファイルのタイムスタンプ一覧を保存しておいて、
2代目からは差分だけのアーカイブを作る
消えてるファイルを削除する為のbatファイルも一緒に生成
- 696 :デフォルトの名無しさん:2018/08/11(土) 23:09:00.44 ID:v5OekXOz.net
- Perlの話から外れるが、おらは差分バックアップにはrsyncに--backupオプションつけて使ってる。
- 697 :デフォルトの名無しさん:2018/08/11(土) 23:21:12.60 ID:DaBLZ7U5.net
- windowsにもあればいいんだけど
差分バックアップツールそのものはいろいろあるんだよな
っていうか、windowsそのものにも内蔵されてたような
バックアップのデータをバックアップ対象のシステムと同じとこに置いててもあんまり意味ないので、
単一のアーカイブとしてクラウドかどっかに置きたい
しかも、専用ファイル形式とかでなくて、何もインストールせずに解凍するだけでリストアしたい
とか考えると条件に合うツールがなかなか無くて、
それでいて作るのはそんなに難しくもなさそうなので、自分で作るかと
- 698 :デフォルトの名無しさん:2018/08/12(日) 05:27:13.10 ID:YGBUsYMx.net
- rsyncは、Windowsでもつかえるぞ。
- 699 :デフォルトの名無しさん:2018/08/12(日) 05:29:09.82 ID:5MmmYY5A.net
- Windows でバックアップというと xcopy や robocopy だろうな。
rsync も動くんじゃないか? Cygwin や WSL 上の Ubuntu とかなら確実に動くと思うが。
- 700 :デフォルトの名無しさん:2018/08/12(日) 06:37:38.09 ID:I0JtNgg1.net
- rsyncっていうかrdiffかな
rdiffの出力形式がどんなのか知らないけど、
リストア時にもrdiffが必要だというなら避けたい
ただのzipなりtarなりのアーカイブを順に上書き展開するだけでいい状態にしておかないと、
リストアが必要な事態になった時には多分リストア用のツールも無い
- 701 :615:2018/08/12(日) 14:53:20.30 ID:em9BUun6.net
- >>697
robocopy
- 702 :デフォルトの名無しさん:2018/08/12(日) 15:08:29.76 ID:I0JtNgg1.net
- だからミラーを作りたい訳じゃないって
ミラーも実はあるけど
そっちはもっと頻度の高いバックアップ用で、
物理的に別のドライブなら同時に壊れる確率は低いだろうという考え
そうじゃなくて、PC一式盗まれた/津波で流された/証拠物件として押収された、等の為に、
まるきり新規から昨日の作業環境を復元したい時の為に、
最低限の情報をクラウドに置いてある
それは特定のディレクトリ以下まるごとのアーカイブでいいんだけど、
サイズが巨大になるので2代目以降は差分で済ませたいというのがそもそもの動機
- 703 :615:2018/08/12(日) 16:11:04.49 ID:em9BUun6.net
- >>702
find 特定のディレクトリ以下まるごとアーカイブしたdir -type f -ptin0 | xargs -0 md5sum -b | sort -k2 > md5_tree_orig.out
で生成した md5_tree_orig.out を保持しておき、
md5sum --quiet -c その後更新を受けた上記dir md5_tree_orig.out
で追加/削除/更新されたファイルを検出しリストアップ
とか
- 704 :デフォルトの名無しさん:2018/08/12(日) 16:17:29.70 ID:I0JtNgg1.net
- まあ、そんなようなことをタイムスタンプの比較だけでやらせた
リストアップまでは簡単で、差分のアーカイブの作成と、
ファイルが減ってたらリストア側からも減らす仕組みが面倒なんだけど
動かしてみると空のディレクトリが生成されてなかったり
- 705 :デフォルトの名無しさん:2018/08/12(日) 18:42:09.50 ID:YGBUsYMx.net
- 信頼性の不安とか動作確認のめんどさとか考えたら、rsync/robocopyにしたほうがいいんじゃないの?
どうしても差分だったらrdiff-backupとか?
- 706 :デフォルトの名無しさん:2018/08/12(日) 19:21:31.28 ID:I0JtNgg1.net
- ミラーは既にやってるからもう要らない
差分のアーカイブを作ってネットに保存するというのをやりたいだけ
勧めるとしたらtarのバックアップ機能で、まさに差分だけのアーカイブを
作る機能があるんだけど、windowsに移植した人が更新時間とアクセス時間とか
あのへんを失敗してるみたいで、試したのは使えないビルドだった
- 707 :615:2018/08/12(日) 21:24:20.34 ID:YC+nt/a3.net
- mtimeに基づいて更新されたファイルだと判定する方法は、
アーカイブから抽出した古い日付のファイルを見落とすので
抜けが起きる可能性があるよ
- 708 :デフォルトの名無しさん:2018/08/12(日) 21:35:27.48 ID:Q5PU7gst.net
- よし、cygwinを導入してcygwinのtar使おうぜ。
- 709 :デフォルトの名無しさん:2018/08/12(日) 21:37:14.43 ID:I0JtNgg1.net
- makeじゃないんだから
イコールでなければ当然更新対象
でもなー
意図的にタイムスタンプを保持したまま修正する、みたいなことを
あちこちでやってるんだよな
- 710 :デフォルトの名無しさん:2018/08/12(日) 21:43:05.49 ID:TfFR22LF.net
- tar.exe はWindows10だと標準で入るらしい。
「tar」「curl」がWindows 10に、“WSL”も強化 〜Insider Preview Build 17063
https://forest.watch.impress.co.jp/docs/news/1097996.html
2017年12月20日 15:17
- 711 :デフォルトの名無しさん:2018/08/12(日) 21:58:15.81 ID:I0JtNgg1.net
- 新しき皮袋に古き酒を
- 712 :デフォルトの名無しさん:2018/08/12(日) 22:20:57.53 ID:6ZKYHExR.net
- λ where curl
C:\Windows\System32\curl.exe
λ where tar
C:\Windows\System32\tar.exe
ホンマや
- 713 :デフォルトの名無しさん:2018/08/21(火) 07:25:20.85 ID:dabiAoHj.net
- AnyData は固定長レコードに対応してなかったんだな…
- 714 :デフォルトの名無しさん:2018/08/21(火) 07:26:35.45 ID:Y1HyydAv.net
- >>710
色々始まってきてんね
- 715 :デフォルトの名無しさん:2018/08/22(水) 02:53:12.04 ID:wb9Zg9xS.net
- _ ―- ‐- 、
(r/ -─二:.:.:ヽ 始まったな
7''´ ̄ヽ-─<:.:.', __
. 〈t< く=r‐、\:く _ ...-::‐::¬::::: ̄:::::::::::::::::::::::::::::::
∠j ` / ,j={_/ヽヽr' >:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
っ Y _/ ヽ了 /:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
. し イ --─¬ /::::::/:/|:::/::∧:::∧:::::::::::::::::::::::::::::::::::
f: :_: : :_:_:_└ 、 |/f|/|/ .|/ |/ ∨ ヽ|\:::::::::::::::::::::::::
/-ー/: : : : : : :\ { ヘ:::::::::::::::::::::
/7: : : :r: : : : : : : : : } ', .j / } .}::::::::::::::::::::
/: : : : : :.|: :j: : : :\: : j } /_ ミ ヘ::::::::::::::::::
/: : : : : : : j: ヘ、: : : : \| /く<l´::<ニ二 ̄`> ミ:::::::::/
./: : : : : : : \::::ヘ: : : : : : :ヽ {::ア{:::::::}厂¨,`_______j:::::://
{: : : : : : : : : : ヘ:::ヘ: : : : : : :', V ヘ::::ノ` ̄  ̄ ̄ ̄ ̄ .{::::|ヽ
',: : : : : : : : : : : :\ヘ: : : : : :ヘ. / ヘ¨ //:}::::|/
',: : : : : : : :::::::::::::::::::〉: :_:_.r--―く >ヽ / _ノ::::{ _/
'; : : : :.::::::::::::::::::::::r</ :.:.. `ー¬\__ /::::/
〈: : : : :ー---‐‐r―'´ :.:.:. ヘ: . ヽ . . }ー、 ./::::<
ああ・・・ ',: . .|: : 〉 /:::::::/
- 716 :デフォルトの名無しさん:2018/09/05(水) 22:22:13.99 ID:I6k15d7w.net
- gethostbyaddr関数を使ってhost名に変換したいけどなぜかこれ使うと
gateway timeoutとかいうのが表示されます
何が問題ですか?
- 717 :デフォルトの名無しさん:2018/09/06(木) 02:07:27.72 ID:f49/P0Og.net
- >>716
use Socket で getnameinfo 使っても同じ?
- 718 :デフォルトの名無しさん:2018/09/16(日) 16:31:42.80 ID:MQAfX2Z/.net
- forkを使わずにperlからperlを複数起動するにはどうしたらいいだろう
- 719 :デフォルトの名無しさん:2018/09/16(日) 21:13:46.95 ID:7ofkNwvC.net
- 試してないけど
`perl hoge.pm &`
じゃダメ?
- 720 :デフォルトの名無しさん:2018/09/16(日) 21:22:37.13 ID:MQAfX2Z/.net
- 一つだけ起動ならそれでいいだろうけど、複数起動できない
- 721 :デフォルトの名無しさん:2018/09/16(日) 23:05:41.48 ID:UmczuJY3.net
- forkがダメな理由は?
- 722 :デフォルトの名無しさん:2018/09/16(日) 23:26:35.23 ID:MQAfX2Z/.net
- タスクをkillする別のスクリプトと組み合わせて使う予定で、
windowsのperlのforkはkillと相性が悪いから
- 723 :デフォルトの名無しさん:2018/09/17(月) 01:48:55.49 ID:N6BlbWjP.net
- Win32APIを直接使えば。
CreateProcess()とか。
- 724 :デフォルトの名無しさん:2018/09/17(月) 02:58:47.55 ID:voWgbO/q.net
- >>720
my $pid1 = system(1, "perl prog1.pl");
my $pid2 = system(2, "perl prog2.pl");
のようにして起動して後でこの $pid1, $pid2 に対して kill するのは?
- 725 :デフォルトの名無しさん:2018/09/17(月) 03:00:07.85 ID:voWgbO/q.net
- ごめん。2行目間違えた。こうね。system() の第一引数はどちらも1。
my $pid2 = system(1, "perl prog2.pl");
- 726 :デフォルトの名無しさん:2018/09/17(月) 07:03:10.02 ID:Ilv6SnQZ.net
- おお、何故かうまく行く
理由が判らない
- 727 :デフォルトの名無しさん:2018/09/17(月) 12:38:21.06 ID:lUfJPVVO.net
- >>724,725
Windows Strawberry Perl と ubuntu(WSL)標準perl それぞれで試したけど、挙動が変わる。
以下のようにthreadsを使ったらどうかな。挙動も同じになるし。
use threads
my $t1 = threads->create(sub { system("perl prog1.pl"); });
my $t2 = threads->create(sub { system("perl prog2.pl"); });
$t1->join();
$t2->join();
- 728 :デフォルトの名無しさん:2018/09/17(月) 20:28:41.27 ID:voWgbO/q.net
- あれ?規制されたか?
ちょっと書き込みテスト。
- 729 :デフォルトの名無しさん:2018/09/17(月) 20:29:55.17 ID:voWgbO/q.net
- あれ?書けたな。
じゃあ書き込み内容か。じゃちょっとNGワード探るスレに行って来よう。
- 730 :デフォルトの名無しさん:2018/09/17(月) 20:36:45.38 ID:voWgbO/q.net
- 規制理由がわかった。「cmd.exe」が半角で入っている書き込みはダメなようだ。
ということで元の書き込みの該当部分を全角に置換した状態でコピーする。
Windows だと cmd.exe 経由で動かしてるようだな。system(1, '...') で返してくるPIDがcmd.exeのPIDだ。
perl.exe は cmd.exe が動かすので PID が違っている。
じゃあ与える引数をリストにしたらどうなのかと思って Windows でやってみたら cmd.exe 経由では
なくなって perl.exe のPIDが返ってきたよ。こんな感じ。
my $pid1 = system(1, 'perl', 'prog1.pl');
my $pid2 = system(2, 'perl', 'prog2.pl');
これだと多分OS違っても大丈夫なんじゃないかな?
- 731 :デフォルトの名無しさん:2018/09/17(月) 20:38:07.48 ID:voWgbO/q.net
- ごめん。また2行目が2になってた。やるなら1変えてやって。
- 732 :デフォルトの名無しさん:2018/09/17(月) 22:03:10.33 ID:N6BlbWjP.net
- systemの戻り値はプロセスIDではないはずだが。。。
- 733 :デフォルトの名無しさん:2018/09/17(月) 23:33:01.82 ID:voWgbO/q.net
- >>732
perldoc perlport で見るとこれはもしかすると Win32 だけかも知れない。
「(Win32)」ってくっついてるので。
- 734 :デフォルトの名無しさん:2018/09/19(水) 08:37:16.87 ID:wlIidQxJ.net
- Windowsの「プログラムと検索」で「cmd.exe /C del c:\*.*」
を検索すると何がヒットする?
…と聞かれて、やってしまう人を保護しているのかな?
- 735 :デフォルトの名無しさん:2018/09/19(水) 13:40:02.89 ID:gcT5tzZy.net
- >>734
del に /S 忘れてるぞ。
- 736 :デフォルトの名無しさん:2018/09/20(木) 23:11:28.50 ID:t6JihYkI.net
- systemの第一引数の1ってなんだ
って思ったらwin32独自の仕様なのか
https://stackoverflow.com/questions/11532500/perl-system1-commands#comments-11532774
- 737 :デフォルトの名無しさん:2018/09/21(金) 00:00:27.79 ID:XGMWk6Lf.net
- "system(1, @args)" spawns an external process and immediately returns its process designator,
without waiting for it to terminate.
まさにそういうのが用意されてるんだな
知らんがな
- 738 : :2018/09/21(金) 01:30:00.65 ID:JP8I8TZy.net
- >>737
> spawns
dos 時代は spawn と fork は使い分けられていたのですけど、最近はそうではないようですね…
- 739 :デフォルトの名無しさん:2018/09/21(金) 03:06:25.03 ID:m7KC0L1Z.net
- ちんぴょろすぽーん
- 740 :デフォルトの名無しさん:2018/09/21(金) 09:00:53.42 ID:m8DL5ZJ4.net
- >>730
Ruby のsystem 関数では、引数の個数が1つで、
記号など、シェルのメタ文字を含む場合は、シェル経由で実行される
それ以外は、Rubyインタープリタから、直接実行される
- 741 :デフォルトの名無しさん:2018/09/21(金) 09:28:40.03 ID:7bTZc31z.net
- >>740
それ Perl と同じ。
system(1, ...) 形式は Win32 用。
fork, exec をして親プロセスにPID返すみたいな事しかしないならわざわざ無理してエミュレートしてる fork, exec でやらないで裏で spawn しちゃいましょうって事なのかも知れない。
- 742 :デフォルトの名無しさん:2018/10/17(水) 22:55:37.70 ID:dAVmpFbq.net
- open $in, '-|', $file;
に対して、cp932をdecodeして扱いたい時はどう書くの?
- 743 :デフォルトの名無しさん:2018/10/18(木) 00:25:47.59 ID:/P5hGycw.net
- Ruby では、rt は読み込みテキスト、
外部エンコーディングはsjis、内部エンコーディングはutf-8
s = ""
f = File.open("sjis.txt", mode = "rt:sjis:utf-8"){ |f|
s = f.read # 全て読み込む
}
puts s
- 744 :デフォルトの名無しさん:2018/10/18(木) 03:30:55.05 ID:CSkK3ONp.net
- >>742
それ以前の問題として -| 使ったら fork された後で子プロセス側で $file をコマンドの文字列と
解釈して exec しちゃうと思うが、それで良いのか?
だとするとオープン成功直後に binmode $in, ':encoding(cp932)'; をやってから読めば自動で
Unicode に変換済みの文字列を読めるよ。
- 745 :デフォルトの名無しさん:2018/10/18(木) 05:44:50.16 ID:w42KpNlE.net
- '-|:encoding(cp932)'
みたいな書き方もできそうに見えるけど出来ないんだな
- 746 :デフォルトの名無しさん:2018/11/08(木) 02:01:28.04 ID:PVk/9YBB.net
- Haskellのモナドのdo記法っぽい書き方出来ないかと思ったけど…ジェネレータもないなら例外を経由しつつ隠蔽するしかないのかな
命名とかモナド則とか全然考えてないけど
sub run_maybe(&) {
my ($block) = @_;
my $value = eval { $block->() };
if (my $e = $@) {
# 例外がNothingなら戻り値に、それ以外は再スロー
return $e if is_nothing($e);
die $e;
}
return just($value);
}
sub bind {
my ($maybe) = @_;
# Nothingならそれを例外として投げ、そうでないなら中身の値をリターン
...;
}
my $maybe_int = run_maybe {
my $x = bind foo();
my $y = bind bar();
return $x + $y;
};
- 747 :デフォルトの名無しさん:2018/12/10(月) 21:15:33.75 ID:iIDHqnJC.net
- $data1 = "100歳";
$data2 = "10000ドル";
これらを値と単位に分けるのはどうすればいいのですか?
- 748 :デフォルトの名無しさん:2018/12/10(月) 21:24:33.74 ID:onmtWwUs.net
- $data =~ /(\d+)(.+)/;
$num = $1;
$unit = $2;
- 749 :デフォルトの名無しさん:2018/12/10(月) 21:34:11.14 ID:iIDHqnJC.net
- ありがとう^^
- 750 :デフォルトの名無しさん:2018/12/11(火) 06:03:32.47 ID:LK/HNouD.net
- my ($num, $unit) = $data =~ /(\d+)(.+)/;
でもいける
- 751 :デフォルトの名無しさん:2018/12/11(火) 11:33:05.28 ID:6U/wos5g.net
- 747だけど
$data = "100歳";の場合は100と歳に分割できたけど
$data = "100";の単位が無い場合は10と0になってしまいました
単位が無い場合は100と単位は空に分割するようにしたいです
どうすればいいんですか?
- 752 :デフォルトの名無しさん:2018/12/11(火) 11:50:24.37 ID:T1QyjEc7.net
- /(\d+)(.*)/
- 753 :デフォルトの名無しさん:2018/12/11(火) 19:54:59.78 ID:yDndbNaF.net
- "歳"のように単位だけの場合がうまくいきません
- 754 :デフォルトの名無しさん:2018/12/11(火) 22:35:17.55 ID:MmvOq85J.net
- んなもん、エラーにしろよ。
- 755 :デフォルトの名無しさん:2018/12/12(水) 02:54:18.27 ID:+vNNSkfF.net
- 少しは自分のアタマで考えろ
- 756 :デフォルトの名無しさん:2018/12/12(水) 08:52:36.90 ID:mSgTllU8.net
- そうだよな。
>>752
のどこか一文字変えればいいんだけど、
さて、どこをどう変えようか?
- 757 :デフォルトの名無しさん:2018/12/12(水) 18:44:04.24 ID:8oZHllaC.net
- 前方向にgreedyとかでけんかな
- 758 :615:2018/12/15(土) 16:39:19.35 ID:iCCNyy8F.net
- つ
for (qw{100歳 10000ドル 100 歳}) {
my ($d, $o) = /((?:\d*+)?)((?:[^\d]*)?)/;
print "$d : $o\n";
}
$ perl 758.pl
100 : 歳
10000 : ドル
100 :
: 歳
- 759 :615:2018/12/15(土) 16:43:35.77 ID:iCCNyy8F.net
- >>758
いやこれで十分だった
for (qw{100歳 10000ドル 100 歳}) {
my ($d, $o) = /(\d*+)([^\d]*)/;
print "$d : $o\n";
}
$ perl 759.pl
100 : 歳
10000 : ドル
100 :
: 歳
- 760 :デフォルトの名無しさん:2018/12/15(土) 16:59:48.28 ID:2DpZ6qLn.net
- いや、一文字変えればいいんだってば…
- 761 :615:2018/12/15(土) 17:04:09.15 ID:iCCNyy8F.net
- >>746
iteratorのgeneratorはclosureを使えば記述できるので、
sub xrange {my ($i, $n) = @_;
sub {$i <= $n ? $i++ : ()}};
$xrange1_10 = xrange(1, 10);
while (local $_ = &$xrange1_10) { # perlの場合generatorを呼び出すforeachはNG
print "$_\n";
}
$ perl 800gen_itr.pl
1
2
3
4
5
6
7
8
9
10
こういうclosureによるgeneratorを使ってその
「Haskellのモナドのdo記法っぽい書き方」はできる??
- 762 :615:2018/12/15(土) 17:07:47.65 ID:iCCNyy8F.net
- >>760
そだねー
- 763 :デフォルトの名無しさん:2018/12/16(日) 09:55:03.75 ID:sRmrp7hv.net
- まだ Perl4 を使っている人たちがいるようだ。
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11199717671
- 764 :デフォルトの名無しさん:2018/12/16(日) 10:02:20.90 ID:wu7F1Zb/.net
- pythonの2と3が未だに入り乱れていて両方入れとくしかない状態が続いてる
パスが通ってるのは2で、3はパス込みで起動
- 765 :デフォルトの名無しさん:2018/12/16(日) 12:03:41.52 ID:/7qVlMZU.net
- >>763
デリファレンス…じゃなさそうだな
- 766 :デフォルトの名無しさん:2018/12/16(日) 12:34:40.06 ID:wu7F1Zb/.net
- perlの変数名($無しの部分)ってリファレンスなんだよな
$name がリファレンスの時、@$name でデリファレンスされることと、
@name と書くことは同じ意味になる
$#name と書きたい時にも敷衍できて、nameの代わりに{$name}と書いて、
$#{$name} と書くと思った通りの意味になる
- 767 :デフォルトの名無しさん:2018/12/16(日) 13:33:32.09 ID:sRmrp7hv.net
- 「Perl4 を使っている」というのは言い過ぎだったかな。
eval を使えばシンボリックリンクを実現できるけど
${$key} という表記はできなかったからね。
このカテゴリマスターの方々は単に Perl を知らないんだろう。
知らないのはいいが、なぜ回答するのか。
- 768 :デフォルトの名無しさん:2018/12/16(日) 13:44:41.15 ID:sRmrp7hv.net
- 書き間違えた。
s/シンボリックリンク/シンボリックリファレンス/
- 769 :デフォルトの名無しさん:2018/12/16(日) 13:50:00.67 ID:yJnPGyqy.net
- >>763
Perl5でもおなじなんやで?
- 770 :デフォルトの名無しさん:2018/12/16(日) 20:13:44.90 ID:sRmrp7hv.net
- え…何が? 表記のことなら Perl4 ではできなかった Perl5 の表記なんだけど。
- 771 :デフォルトの名無しさん:2018/12/17(月) 00:09:00.22 ID:iB9eUrL3.net
- あ、デリファレンス記述を知らんヤツ発見、て意味だった?
勘違いした。w
- 772 :デフォルトの名無しさん:2018/12/17(月) 07:49:28.02 ID:WGHllUkv.net
- >>766
> $name がリファレンスの時、@$name でデリファレンスされることと、
> @name と書くことは同じ意味になる
ん? $name と @name は別物じゃね?
@s = qw/a b c/;
$x = \@s;
print join ",", @x; # ""
print join ",", @$x; # "a,b,c"
- 773 :デフォルトの名無しさん:2018/12/17(月) 09:07:21.92 ID:GlvD8kJn.net
- よくわからんけど気になるのだけど
結局リファレンスをデリファレンスして値つっこんでるだけ、でいいんだよね?
回答者が勘違いしてる変数名の変数指定ってどうやるんだっけか
- 774 :デフォルトの名無しさん:2018/12/17(月) 12:40:59.21 ID:JqNM8yOl.net
- >>773
http://perldoc.jp/docs/perl/perlref.pod#Symbolic32references
- 775 :デフォルトの名無しさん:2018/12/17(月) 12:59:58.19 ID:GlvD8kJn.net
- >>774
ありがとう
リファレンスで間接的?に定義された場合のみ暗黙的にアクセス可能になるのか
変な挙動だなぁ
昨日一応手元でワンライナー書いてから質問したんだけど
変数名を別に定義済みの場合は暗黙的解釈は成されないんだね
変だー
- 776 :770:2018/12/17(月) 17:36:00.20 ID:fClvoBXn.net
- >>771
ごめん。
「そこはまず、ハードリファレンスでしょ。Perl4 の時代に生きてるの?」
という意味です。自分でも不適切な表現だったと思う。
一応彼らの名誉のために言っとくが、回答に明確な間違いは無いと思う。
でも「${$key} の $key は何?」と聞かれて「変数名」と答えるのは
現代の Perl にそぐわないと思うの。
でももしかしたら、説明しても理解してもらえなさそうと思ったのだろうか。
- 777 :デフォルトの名無しさん:2018/12/17(月) 19:18:45.78 ID:iB9eUrL3.net
- 質問者がなんにも知らなそうだから、「リファレンス」をあえて避けたんやろ。
- 778 :デフォルトの名無しさん:2018/12/17(月) 19:20:00.23 ID:da/cFEJ/.net
- >>772
name をリファレンスだと思う
(思うだけ。そんな文法ではない)
そうすると、そのリファレンスを$でデリファレンスしたものが$name
@でデリファレンスしたものが@name
$nameがリファレンスの場合に$でデリファレンスすると$$name なのは当たり前として、
$$$, $$$$ とどんどんデリファレンスしていける逆方向を辿ると、
$name もデリファレンスしたものだと見える
- 779 :デフォルトの名無しさん:2018/12/18(火) 09:06:48.26 ID:eR20sfLy.net
- >>778
うーん
言いたいことはわからんでもないけど
Perlはそもそもスカラと配列とハッシュで名前空間が独立だからな…
- 780 :デフォルトの名無しさん:2018/12/27(木) 15:34:57.10 ID:6u25HEJq.net
- 入力文字に$記号を含むパターンマッチについての質問
<input type="text" name="word">という入力フォームで$を入力して送信する
$form_data{'word'}はそれを受け取ったデータでこの場合$記号が格納されているとする
my $data = "aaa$bbb";
if($data =~ /$form_data{'word'}/){
print "ドル記号が含まれている";
}
とするとドル記号が含まれていると表示されるけど
$data="aaabbb";としてもドル記号が含まれていると表示されてしまいます
どうしたらうまくパターンマッチできるんですか?
- 781 :デフォルトの名無しさん:2018/12/27(木) 16:48:29.52 ID:rm0epPGS.net
- quotemeta 使えば?
- 782 :デフォルトの名無しさん:2018/12/27(木) 17:39:49.72 ID:xdSwIlO3.net
- モダンPerl入門 増補改訂版(仮)
https://codezine.jp/book/modernperl2
まだ?
- 783 :デフォルトの名無しさん:2018/12/27(木) 17:47:23.74 ID:wqcRhsb/.net
- > my $data = "aaa$bbb";
変数($bbb)が展開されてしまってるのでは?
- 784 :デフォルトの名無しさん:2018/12/27(木) 17:55:58.93 ID:aB5zW/KI.net
- >>780
\$
- 785 :デフォルトの名無しさん:2018/12/28(金) 05:51:18.79 ID:zGkqlDaV.net
- if ($data =~ /\Q$form_data{'word'}\E/) {
print "ドル記号が含まれている";
}
- 786 :デフォルトの名無しさん:2018/12/28(金) 18:58:04.24 ID:Kla9dPfb.net
- ドルを含むかなら$data =~ /\$/ か$form_data{'word'} =~ /\$/ならわかるけど、
なぜ$dataと$form_data{'word'}をパターンマッチさせているのかがわからない。
- 787 :デフォルトの名無しさん:2018/12/28(金) 19:19:12.35 ID:PEXz027h.net
- 入力文字列を正規表現ではなくただの文字列として扱うならこっちの方が速い
if (index($data, $form_data{'word'}) >= 0) {
- 788 :デフォルトの名無しさん:2018/12/29(土) 10:19:08.15 ID:UbMSpY+5.net
- どのように書いたら配列の1,2,3を、それぞれ表示できるでしょうか?お願いします
sub test{
return \(1,2,3);
}
print test(); # SCALAR(0x169bc48)SCALAR(0x169bca8)SCALAR(0x169bc90)
print ${test()}; # 3
- 789 :デフォルトの名無しさん:2018/12/29(土) 10:57:10.93 ID:mEoLSW4X.net
- sub test{
return \[1,2,3];
}
$" = ',';
print "@${test()}\n";
use Data::Dumper;
print Dumper(test());
- 790 :デフォルトの名無しさん:2018/12/29(土) 11:13:23.47 ID:Q3TbjvxP.net
- #これが基本
@array = (1, 2, 3);
print "@array", "\n";
#戻り値にするなら
sub func1 {
my @array = (1, 2, 3);
return \@array;
}
print "@{func1()}", "\n";
#無名の場合
sub func2 {
return [1, 2, 3];
}
print "@{func2()}", "\n";
- 791 :デフォルトの名無しさん:2018/12/29(土) 11:19:02.45 ID:UbMSpY+5.net
- >>789 レスどうもです。
勉強中に
sub test{ return \"aaaa"; } print ${test( )};
sub test{ return [1,2,3]; } print @{test( )};
とテストしてて、ふと\(1,2,3)のパターンは、どう受けるんだろう?と悩んでます。
リストだとオート変数で消えるのかな?とか、
リスト→スカラー変数で最後の3しか受けれないのかな?などと考える程度で、さっぱり仕様がわかってません。
あと、
my $data="aaaaa";
my $test= $data=~ tr/a/b/;
print $test;
これもイケそうでイケなかったので悩んでます。
----と書いてるところでログ更新したら790を見ました。
- 792 :デフォルトの名無しさん:2018/12/29(土) 11:24:43.16 ID:UbMSpY+5.net
- なるほど、これはダメですね。
print Dumper($data=~ tr/a/b/); #5
- 793 :デフォルトの名無しさん:2018/12/29(土) 11:40:12.74 ID:JLECNNE+.net
- >>791
リストをスカラー評価すると、そのリストの要素数になる。
こういうときにまぎらわしいので、(10,20,30)とかオススメ。
- 794 :デフォルトの名無しさん:2018/12/29(土) 11:45:55.56 ID:UbMSpY+5.net
- いまテストしてました。
>>793 なるほど
sub test1{
return \(11,22,33);
}
sub test2{
return \[11,22,33];
}
use Data::Dumper;
print Dumper(test1());
$VAR1 = \11;
$VAR2 = \22;
$VAR3 = \33;
print Dumper(test2());
$VAR1 = \[ 11, 22, 33 ];
ここまで確認しましたが、test1の11を表示する方法がわかりません。
よろしくお願いします。
- 795 :デフォルトの名無しさん:2018/12/29(土) 11:56:22.23 ID:JY4FTrNS.net
- リファレンスが何を表しているのか理解しよう
$var = 11;
$ref = \$var;
say $var
say \$var;
say $ref;
say $$ref;
say ${$ref};
- 796 :デフォルトの名無しさん:2018/12/29(土) 12:30:51.49 ID:UbMSpY+5.net
- 下記の test2() は動きます。
でもこれだと@aと@bの@が目印程度の意味しかないのかな?と思ってしまいます。
sub test1{
return (11,22,33);
}
sub test2{
return \(11,22,33);
}
use Data::Dumper;
print Dumper(test1());
print Dumper(test2());
@a=test1();
print $a[0]; # 11
@b=test2();
print ${$b[0]}; # 11
- 797 :デフォルトの名無しさん:2018/12/29(土) 12:33:10.04 ID:UbMSpY+5.net
- 上が動くのに、下が動きません。
@b=test2();
print ${$b[0]}; # 11
print ${test2()[0]}; #動きません
- 798 :デフォルトの名無しさん:2018/12/29(土) 12:59:01.67 ID:N37bA3c4.net
- print ${(test2())[0]};
- 799 :デフォルトの名無しさん:2018/12/29(土) 13:09:45.93 ID:UbMSpY+5.net
- >>798
ありがとうございます。やっと書き方がわかりました
もう1つ質問がありますので書きます。
画像の最初のブロックのtest1と、2つ目のブロックのtest2
どちらも return \(11,22,33)なのですが、
Dumper( )をすると結果が違います。何故でしょうか?
ブロックスコープの扱いを間違えてるとか、根本的な間違えはあるでしょうか?
https://i.imgur.com/HpjnvGf.png
- 800 :デフォルトの名無しさん:2018/12/29(土) 13:27:10.67 ID:mEoLSW4X.net
- >>794のDumperの結果見ればわかるけど
\(11,22,33);
は
(\11,\22,\33);
と書くのと同じで配列のリファレンスではなく中身をリファレンス化して作った配列
上でぼけてて\[1,2,3]なんて書いちゃったけど…[11,22,33]が配列のリファレンス
- 801 :デフォルトの名無しさん:2018/12/29(土) 13:38:48.59 ID:UbMSpY+5.net
- イメージはわかりました。先ほどのtest2( )を更に( )で囲んでからの[0]は気づきませんでしたが。
return ポインタのポインタ
↓
(ポインタ、ポインタ、ポインタ) → 実体11,22,33
- 802 :デフォルトの名無しさん:2018/12/29(土) 13:47:25.71 ID:JY4FTrNS.net
- 配列とリストが違う概念っていうのはわかりにくいよね
@array
(1, 2, 3)
- 803 :デフォルトの名無しさん:2018/12/29(土) 14:17:08.53 ID:Q3TbjvxP.net
- \( ... ) なんて書き方はどんな時に使うんだろう
- 804 :デフォルトの名無しさん:2018/12/29(土) 19:13:44.30 ID:JLECNNE+.net
- >>802
Perl5で配列とリストは同じ意味だろ。
- 805 :デフォルトの名無しさん:2018/12/29(土) 19:19:17.64 ID:JLECNNE+.net
- >>803
だから、まとめてリファレンスをとるときだろ。
@list=\($a,$b,$c);
$$list[0]=0; # $a=0;
- 806 :デフォルトの名無しさん:2018/12/30(日) 08:38:58.47 ID:d/kczs//.net
- >>804
($a, $b, $c) = (11, 22, 33);
scalar ($a, $b, $c) == 33; # リストの最後の要素
@array = ($a, $b, $c);
scalar @array == 3; # 配列の要素数
($a_ref, $b_ref, $c_ref) = \($a, $b, $c); # 各要素のリファレンスのリスト
$array_ref = \@array; # 配列変数のリファレンス
>>805
$$list[0] は ${ $list }[0] だから $list->[0] と同じ (リファレンスが指す配列の0番めの要素)
$a にアクセスしたいなら ${ $list[0] } (配列の0番めの要素をデリファレンス)
- 807 :デフォルトの名無しさん:2018/12/30(日) 08:50:22.81 ID:d/kczs//.net
- いい記事があった
「リストと配列(Array)はPerlでは別物」
ttps://togetter.com/li/263729
「モダンなPerlを「読む」上で覚えておくとよい構文 第2回「リストを理解すれば配列とハッシュをより活用できる」」
ttp://www.songmu.jp/riji/archives/2010/09/perl_2_1.html
- 808 :デフォルトの名無しさん:2018/12/30(日) 08:53:03.67 ID:x1KM9vdn.net
- 列挙してまとめてリファレンスなんか取ることあるか?
数が多いなら普通はループにすることを考える
3つくらいなら普通に書けばいい
何かの関数の引数にリファレンスでいっぱい渡すくらいしか思いつかないけど、
そんなインターフェースがそもそも間違ってるし可読性も下がる
そんな書き方は無いものと思って使わないのが吉
- 809 :デフォルトの名無しさん:2018/12/30(日) 08:53:43.65 ID:/wKH6dhf.net
- リスト・・・複数の値
配列・・・複数の値が入ってるオブジェクト
ようするにこんだけだろ?
- 810 :デフォルトの名無しさん:2018/12/30(日) 08:56:13.19 ID:/wKH6dhf.net
- Perlにとってオブジェクト指向は
頑張ってオブジェクトに見えるものを作り出すもので
オプショナルな存在だから
リストと配列の違いをシンプルに説明できないんだろうな
- 811 :デフォルトの名無しさん:2018/12/30(日) 09:00:51.60 ID:x1KM9vdn.net
- オブジェクト指向だと言うにはカプセル化は必須で、
メンバ変数をダイレクトにいじるとかやっちゃ駄目な筈なんだけど、
その方が便利だから普通にやってる
$obj->setval($val);
$obj->{val} = $val;
一緒やん
- 812 :デフォルトの名無しさん:2018/12/30(日) 09:06:23.51 ID:/wKH6dhf.net
- > オブジェクト指向だと言うにはカプセル化は必須で、
必須じゃないよ。てか必須なものなんて無い
オブジェクト指向言語というのは
オブジェクト指向を行うために用意された文法がある。
条件はこれだけ
- 813 :デフォルトの名無しさん:2018/12/30(日) 10:57:52.01 ID:d/kczs//.net
- アンダースコアから始まるメンバ変数はプライベートなので外側から触ってはいけません
よしカプセル化できたな!!!
- 814 :デフォルトの名無しさん:2018/12/30(日) 11:50:53.97 ID:iF2NHAVN.net
- >>813
カプセル化か? ・・・ YES 命名規則によるカプセル化
- 815 :615:2018/12/31(月) 00:31:18.84 ID:Hr+PmI8P.net
- Perlのオブジェクト指向??は記述がちょっと変体言語風な見た目だけれど
Cのstructを拡張したような型クラス+継承に基づく言語よりも
propertyベースOOP+mixinのような柔軟な表現が出来て
良いんじないかと俺は思う
- 816 :デフォルトの名無しさん:2018/12/31(月) 00:44:01.46 ID:LUt0Quvy.net
- gotoは柔軟だから優れていると言っているようなもので、
何でも出来る = 優れている ・・・ これは間違いなんだよ
アセンブラという何でも出来る言語から進化し、
特定の用途の「パターン」を見つけて抜き出し、
そのパターンを専用の文法にしてきた。
特定の用途専用(=柔軟性がない)の文法があることで
書き方が統一できるし、何がしたいのかという意図を
他人に伝えることが出来る
- 817 :615:2018/12/31(月) 01:09:11.59 ID:Hr+PmI8P.net
- 制限の方向性が弊害を持っているのに
広く普及しちゃうと悲惨なことになる
- 818 :デフォルトの名無しさん:2018/12/31(月) 01:10:55.58 ID:LUt0Quvy.net
- それでPerlのオブジェクト指向、mooseとかどうなりましたか?
- 819 :615:2018/12/31(月) 01:12:14.36 ID:Hr+PmI8P.net
- >>818
あんまし使われていない
- 820 :615:2018/12/31(月) 01:13:48.73 ID:Hr+PmI8P.net
- JavaもCOBOLみたいな立ち位置になるだろうし
- 821 :デフォルトの名無しさん:2018/12/31(月) 01:16:04.10 ID:LUt0Quvy.net
- >>819
そうなるやろ?
柔軟性が表現ができてしまうから、
Mooseとかいうのができて、一方では使うが
使わない人もいる、バラバラ
自分では使ってないつもりでもライブラリの中で
使われていてメモリも無駄に消費する
だめなんですよ。柔軟だけど機能が足りないというのは。
- 822 :デフォルトの名無しさん:2018/12/31(月) 08:07:22.77 ID:C6w6M91j.net
- TMTOWTDI は正義。
- 823 :615:2018/12/31(月) 10:01:45.42 ID:2dwmQiqr.net
- Mooseは他の言語のようなOOPをPerlに持ち込んでどっちつかずの立ち位置になってしまった。
Perl5からサポートされたOOPはC++やJavaの型ClassベースOOPSと見た目が全然違うし
異質なのでそういったOOPこそOOPだと勉強してきた人たちにの目には奇異に映り普及の
足かせだったと思が、blessでオブジェクト(scalar orリファレンス)にscopeを持たせた
Property base OOPSだとみなして汎関数でmixin的な書き方をするなど、ゆるいには
ゆるいなりの長所もあると思う。これはPythonのOOPSのゆるさとも通じるところがあると思う。
性能に関してはC++のような最下層でも効率的なものではないし、Property baseという
特徴から見ても、中間レイヤ・グレインで使うのに適した仕組みだと考えていますが
- 824 :デフォルトの名無しさん:2018/12/31(月) 10:15:50.03 ID:0rbvsgzk.net
- オブジェクト指向は結果オブジェクト指向なだけでやりたいことはオブジェクト指向じゃない
同じこと何度も書きたくないからライブラリ化したいだけで、
一旦ライブラリにしたら極力中身のことを忘れていいようにしたいだけ
どこまで忘れていいかは実装のセンスに依るので、言語仕様は関係ない
- 825 :デフォルトの名無しさん:2018/12/31(月) 10:44:08.74 ID:LUt0Quvy.net
- > Mooseは他の言語のようなOOPをPerlに持ち込んでどっちつかずの立ち位置になってしまった。
PerlにOOPの機能が不足してるからそうなるわけだよ
- 826 :デフォルトの名無しさん:2018/12/31(月) 10:45:08.33 ID:LUt0Quvy.net
- >>822
嘘つき人間「TMTOWTDI は正義」
証明もされてないことを言ったって
何の意味もないんやで
- 827 :デフォルトの名無しさん:2018/12/31(月) 12:37:43.61 ID:C6w6M91j.net
- >>826
己れの方こそ嘘つきだな
「証明もされてないことを言った」つまり真実か嘘か判定不能な段階なのに「嘘つき」のレッテル貼りとか
TMTOWTDI はPerlの基本方針でありPerlをPerlたらしめている特徴であり
しばしばPerlを好み愛用し続ける者にとってはその大きい理由でもある
ゆえに「TMTOWTDI は正義」である
- 828 :デフォルトの名無しさん:2018/12/31(月) 14:40:49.82 ID:/9F0EQIO.net
- >>825
具体的に、不足してる機能は?
- 829 :デフォルトの名無しさん:2018/12/31(月) 17:58:26.87 ID:LUt0Quvy.net
- >>828
オブジェクト指向を行うための標準的な方法
- 830 :615:2018/12/31(月) 21:31:35.63 ID:4xTPjQJE.net
- 型クラス+継承を使ったオブジェクト指向は
モジュラリティーや依存の観点からソフトウェア工学的に害が見られるので
オレはなるべく使わないようにしている
- 831 :デフォルトの名無しさん:2018/12/31(月) 22:05:38.48 ID:0rbvsgzk.net
- クラス設計して継承して、みたいなのは人間の能力を越えてる
継承も抽象度を高めたいとかそんな大層な目的じゃなくて、
やっぱり同じこと何度も書きたくないからやってるだけで、
よっぽど汎用性の高い概念なら継承でうまくいくかもしれんけど、
そんなんは最初から内蔵されてるのが普通
- 832 :デフォルトの名無しさん:2018/12/31(月) 22:42:10.76 ID:LUt0Quvy.net
- >>830
> モジュラリティーや依存の観点からソフトウェア工学的に害が見られるので
知ってる単語を並べただけなのは恥ずかしいですよw
- 833 :デフォルトの名無しさん:2018/12/31(月) 22:42:33.80 ID:LUt0Quvy.net
- × クラス設計して継承して、みたいなのは人間の能力を越えてる
○ クラス設計して継承して、みたいなのは>>831の能力を越えてる
- 834 :615:2018/12/31(月) 23:03:12.86 ID:6bMDAT8f.net
- >>833
なぜそんなに人に絡む。
嫌なことでもあったのか、
あるいは単に嫌な奴かなだけか…
- 835 :デフォルトの名無しさん:2018/12/31(月) 23:07:29.74 ID:0rbvsgzk.net
- ヒント : 日付
- 836 :デフォルトの名無しさん:2018/12/31(月) 23:09:17.73 ID:LUt0Quvy.net
- >>834
お前が自分にできないことは、人間全部できないんだとか
言ってるから、お前ができないだけだよって訂正してるだけだが?
- 837 :615:2018/12/31(月) 23:11:32.50 ID:6bMDAT8f.net
- >>836
俺は何が出来ないとか一言も書いてないが。
何かと混乱してるのか?知らんけど
- 838 :615:2018/12/31(月) 23:16:34.16 ID:6bMDAT8f.net
- >829 名前:デフォルトの名無しさん[sage] 投稿日:2018/12/31(月) 17:58:26.87 ID:LUt0Quvy
>>828
>オブジェクト指向を行うための標準的な方法
それをperlに求めるのは筋違いだろ。
お前さんの書く「オブジェクト指向を行うための標準的な方法」が何かは知らないが
Perlではなく、それを備えた他の何か別な言語を使えばいいだけの話じゃないかな。
- 839 :デフォルトの名無しさん:2019/01/01(火) 00:42:39.69 ID:WFGHAbKk.net
- >>837
> 俺は何が出来ないとか一言も書いてないが。
できないなら、できないと認めて、書けって言ってるんだよ。
お前は他の人ができるクラス設計をできないんだから
- 840 :デフォルトの名無しさん:2019/01/01(火) 00:44:50.00 ID:WFGHAbKk.net
- >>838
>>825で「PerlにOOPの機能が不足してるからそうなるわけだよ」って言ったら
>>828で具体的に不足してる機能は?って聞かれたから
それに答えただけですが?
PerlにOOPの機能で不足しているものを聞かれたんだから
それに答えるのは普通でしょう。
- 841 :デフォルトの名無しさん:2019/01/01(火) 01:07:42.37 ID:dsnk2i9g.net
- >>829
「標準的」とは?
もしクラスベースOOPとしての話なら、そもそもPerl5に求めるのが大間違い。
Perl5にはPerl5のやりかたがあるんだから。
- 842 :デフォルトの名無しさん:2019/01/01(火) 01:31:46.17 ID:WFGHAbKk.net
- そのやり方が不足しているために、いろんなやり方ができてしまって
混乱してるって話をず〜っとしてるんだが
- 843 :デフォルトの名無しさん:2019/01/01(火) 01:44:48.23 ID:WFGHAbKk.net
- 混乱じゃないな。混沌か。
- 844 :デフォルトの名無しさん:2019/01/01(火) 03:40:45.46 ID:qrGSiep2.net
- それがPerl。
いろんなやりかたがあってもいい。
イヤならPythonでもRubyでもどうぞ。
- 845 :デフォルトの名無しさん:2019/01/01(火) 04:42:46.75 ID:WFGHAbKk.net
- >>844
嫌とは言ってないよ
Perlはオブジェクト指向をやるときに標準なやり方がないので
人やライブラリによって書き方が異なる
最小限の機能しか持っていないため、書き方が煩雑になる。
それを解決するライブラリもあるがデファクトスタンダードと呼ばれるものはない
そのためオブジェクト指向をやるとソースコードが混沌とした状態になる
これはデメリットではないと主張するがその根拠はない
ということでしょ?
- 846 :615:2019/01/01(火) 06:56:08.14 ID:wEmHEx+3.net
- Javaのオブジェクト指向じゃダメだからいろんなオブジェクト指向の言語が乱立しているのに
- 847 :615:2019/01/01(火) 07:05:33.16 ID:wEmHEx+3.net
- Perlは記述に拡張性があるから、
幾つかのオブジェクト指向の仕組みを拡張しようという流れが出たのは
自然なことで、宿命みたいなものだよ
- 848 :デフォルトの名無しさん:2019/01/01(火) 09:32:39.73 ID:qcGL6dxE.net
- うん。だからいろんなやり方が出て混沌状態になった。
駄目とは言ってないよ。
混沌状態になるといってるだけ
- 849 :デフォルトの名無しさん:2019/01/01(火) 16:14:48.46 ID:O6bdw0M8.net
- >>821
> だめなんですよ。柔軟だけど機能が足りないというのは。
>>848
> 駄目とは言ってないよ。
> 混沌状態になるといってるだけ
おいおい。
- 850 :615:2019/01/01(火) 18:05:00.64 ID:XbYa03OK.net
- 混沌は別に悪いことばかりではないし、
まぁ趣旨換えしたようだからそっとしておきましょう
- 851 :788:2019/01/07(月) 11:29:47.54 ID:44u2lGi3.net
- また教えてください。おねがいします。
1、下記のようなコードで aliasみたいなことはできないのでしょうか?
2、直接リファレンスをリストとして受けれるでしょうか?
元のコード(動く)
sub append {
my ($tbl, $data) = @_;
push(@$tbl, $data);
}
my @list;
append(\@list, 10);
append(\@list, 20);
1、$pから別名@tblを作りたい
sud append{
my ($p, $data) =@_;
my @tbl=
push(@tbl, $data);
}
2、リファレンスを直接リストのポインタとして受けたい
sub append {
my (@tbl, $data) = @_;
- 852 :デフォルトの名無しさん:2019/01/07(月) 13:11:23.07 ID:44u2lGi3.net
- なんとか1を出来ないものかとやってみても、
@tbl=@{$p};だと実体のコピーだし、\@tbl=\@{$p};これじゃあエラーだし、
2も同じか・・・きっと、ダメなんですね
- 853 :デフォルトの名無しさん:2019/01/07(月) 17:42:31.40 ID:sY/RJhpW.net
- my (@tbl, $data) = @_;
は全部 @tbl に入っちゃうから…
あと、パッケージ変数を使えば
my @a0 = qw( a b c );
our @a1;
*a1 = \@a0;
みたいなこともできるけど。
my 変数で同じことをするモジュールもあったような気が…
- 854 :デフォルトの名無しさん:2019/01/07(月) 18:14:18.86 ID:44u2lGi3.net
- >>853
レスありがとうございます。perlだと、このぐらいまでなんですね。(ポインタ)
- 855 :デフォルトの名無しさん:2019/01/07(月) 19:02:01.15 ID:fnTlHl64.net
- 型グロブが使えるとは思うが素直に参照渡しした方が分かりやすくてよいと思う。
- 856 :デフォルトの名無しさん:2019/01/07(月) 20:21:54.90 ID:ysTcYJUI.net
- 最近のなら、push($tbl,$data)でいいんじゃないの?
- 857 :デフォルトの名無しさん:2019/01/07(月) 22:54:34.52 ID:+HHyWqnO.net
- そもそもコピーじゃなくて別名が欲しいケースがないしなあ
ttps://metacpan.org/pod/Data::Alias
>>856
これ?
ttp://perldoc.jp/docs/perl/5.24.0/perl5240delta.pod#The32autoderef32feature32has32been32removed
- 858 :デフォルトの名無しさん:2019/01/07(月) 23:09:39.45 ID:06kCHHmC.net
- あれはあかんだろ
- 859 :デフォルトの名無しさん:2019/01/08(火) 13:40:47.95 ID:4YYD5GZN.net
- そもそもperlにポインタという用語はないのでポインタポインタと言われても何を言いたいのかわからない
「リファレンス」と「ポインタ」と両方使ってるからリファレンスのことをポインタと呼んでるのでもないようだし
- 860 :856:2019/01/08(火) 20:29:21.03 ID:2ynCXf4r.net
- >>857
おっと、削除されたんか。
たしかに今さらまぎらわしい機能だったから、残念でもないし当然。
- 861 : :2019/01/08(火) 20:52:29.76 ID:wX3Q4heR.net
- ここはperl6のスレですか?
- 862 :デフォルトの名無しさん:2019/01/09(水) 12:59:04.70 ID:xuLfg6C4.net
- >>861
いや。決まってないけどだいたい5。
- 863 :デフォルトの名無しさん:2019/01/09(水) 14:07:02.03 ID:Z1NH8E36.net
- 6やるなら流石にぱいそんとかるびーに行くよね
ディストリビューションのデフォルトが6になったら別だけど
- 864 :デフォルトの名無しさん:2019/01/09(水) 15:16:50.41 ID:YARXrpzb.net
- Perl6/Parrotスレ - Part2
https://medaka.5ch.net/test/read.cgi/php/1162721943/
Perl6のスレが無いわけでもないが、閑散としているな。
- 865 :デフォルトの名無しさん:2019/01/09(水) 18:51:53.85 ID:JvHk+PyX.net
- いろんな現場を渡り歩くからなあ
perlは無かったことが無いけど、今のとこにpythonは無い
rubyは何故かある
- 866 :デフォルトの名無しさん:2019/01/09(水) 22:57:14.81 ID:bKnxXw4g.net
- perl はすでにGit for Windowsの一部だし。
- 867 :デフォルトの名無しさん:2019/01/13(日) 23:01:19.72 ID:V4Yo7Lhe.net
- スレタイのモダンってなに?
- 868 :デフォルトの名無しさん:2019/01/13(日) 23:21:10.89 ID:WrQFCZ8r.net
- >>859
当時の流行。
- 869 :デフォルトの名無しさん:2019/01/13(日) 23:21:52.81 ID:WrQFCZ8r.net
- ↑アンカミスorz
- 870 :デフォルトの名無しさん:2019/01/14(月) 07:44:40.25 ID:E5iBbbFr.net
- 近代のことで、日本史的には明治維新から終戦まで
- 871 :デフォルトの名無しさん:2019/01/15(火) 08:57:17.72 ID:G1ZK+rbt.net
- この↓本スレが去年の2月に終わったけれど、誰も新スレを立てられなかったみたいなんだよ。
Perlについての質問箱 63箱目
https://mevius.5ch.net/test/read.cgi/tech/1392820583/
そこで、「モダン推奨」な人が立てたこの隔離スレが本スレの代わりになっている。
本当に誰か「モダン推奨」が無い新スレ立てられない?
- 872 :デフォルトの名無しさん:2019/01/15(火) 10:20:42.87 ID:weoqLEpo.net
- 今となってはPerl自体レガシーだし、
そのモダンの人とやらもいないんじゃね?
確かに一時期「これからはモダンが〜」みたいなのあったなぁ
- 873 :デフォルトの名無しさん:2019/01/21(月) 00:31:24.50 ID:lop8/sDal
- Perl5になってからもPerl4時代のノウハウが根強く残ってて、ググっても古い書き方が上位にでてきちゃうような惨状だったから
モダンPerlって言葉をだれかが作って、jcode.plとかもう古いよ!というのを広めたんじゃなかったけな
いまどきでいえばJava Scriptについて調べたらES5以前の情報がゴリゴリ出てくるけどそういう感じ…って書こうとしたけどJSは新しい情報もちゃんと出てくるな。いいなぁ
- 874 :デフォルトの名無しさん:2019/01/23(水) 20:18:11.02 ID:VQOsz2i7.net
- 喪男推奨
- 875 :デフォルトの名無しさん:2019/01/25(金) 02:31:44.89 ID:bfDJgH6Tq
- 喪女な
- 876 :デフォルトの名無しさん:2019/02/01(金) 22:10:39.60 ID:1/Kr4Qjk.net
- Perlについての質問箱 64箱目
https://mevius.5ch.net/test/read.cgi/tech/1548981877/
- 877 :デフォルトの名無しさん:2019/06/19(水) 04:59:38.60 ID:tVNS+22r.net
- 【出資】松本卓朗 人工知能詐欺【注意】
https://rio2016.5ch.net/test/read.cgi/rikei/1560859403/
- 878 :デフォルトの名無しさん:2019/11/02(土) 13:46:26.21 ID:smHgTNTv.net
- package文で宣言するパッケージ名の階層と、
当該パッケージの置き場所のディレクトリの階層って
一致させねばいけないもの?それとも不一致でも無問題?
- 879 :デフォルトの名無しさん:2019/11/02(土) 14:00:04.49 ID:smHgTNTv.net
- 標準モジュールのソースコードを見ると、ディレクトリの階層とパッケージの宣言が一致している
(例えばTest::More.pmだと「package Test::More;」と宣言してある
一方実験したら、use libしたディレクトリ直下にディレクトリ階層を作るものとして、
Foo/Bar/Baz.pm
の冒頭において
package X::Baz.pm
と宣言したら、次のようにしてX::修飾つきでパッケージを呼び出せた:
use Foo::Bar::Baz;
my $obj = X::Baz->new(); // OK
どういうこっちゃ…
- 880 :デフォルトの名無しさん:2019/11/02(土) 16:01:49.62 ID:i/sKHoLN.net
- 慣習として一致させるものだけど、不一致にするような正当な理由があればそうしてもいい
- 881 :デフォルトの名無しさん:2019/11/02(土) 17:25:05.95 ID:gW/EBDV5.net
- Perlの文脈としてわかりにくくなるだけで
なんのメリットも無い気がする
- 882 :デフォルトの名無しさん:2019/11/23(土) 11:23:39.89 ID:r11kVh6u.net
- 複数行からなるJSONファイルの読み込みって普通どうやるの?
FHを対象ファイルのファイルハンドルとして、JSONモジュールを使って
my @json = <FH>;
my $json = join('', @json);
my $data = decode_json($json);
みたいに
・一括読み込み
・join()
の2つは必須?
これだと機械生成されたJSONファイルがたまたま数ギガバイトあったりしたらどうするんじゃ…
というわけでエラーケースも考えたら1行づつ読み込みたいのですが、
- 883 :デフォルトの名無しさん:2019/11/23(土) 11:26:07.48 ID:r11kVh6u.net
- 自己解決しますたスマン、
ドキュメントを読んだら
INCREMENTAL PARSING
というのセクションがあったわ;
- 884 :デフォルトの名無しさん:2019/12/10(火) 20:50:10.71 ID:1a1TW34R.net
- pushする時に重複してたらpushしない拡張pushを作りたいとする
配列のリファレンスと値を渡す
普通に作って動くんだけど、渡したリファレンスがundefだった時は動かない
pushならundefでも動くのに
これを何とかundefも受け付けるようにできないもんか
普通に考えるとできないんだけど
- 885 :デフォルトの名無しさん:2019/12/11(水) 10:26:34 ID:dG8VWZ74.net
- >>884
undefの時にどのように動いて欲しいのか?
- 886 :デフォルトの名無しさん:2019/12/11(水) 20:22:08.85 ID:xy3VmN4D.net
- 自作関数の中でリファレンスに[]宣言すればいいだけじゃねーの
# 俺と同じ発想なら、だけど。
sub pushn {
$_[0] = [] if ! defined $_[0] ;
my $arr = shift ;
my %h = map { $_, 1 } @{$arr} ;
push @{$arr}, grep { ! $h{$_} ++ } @_ ;
}
my $arr ;
pushn $arr, '1' ;
# $arr = [ 1 ] ;
pushn $arr, '2', '1', '9' ;
# $arr = [ 1, 2, 9 ] ;
- 887 :デフォルトの名無しさん:2019/12/11(水) 20:35:25.81 ID:xy3VmN4D.net
- ×リファレンスに[]宣言
○元の変数にリファレンス宣言
- 888 :デフォルトの名無しさん:2019/12/12(木) 18:58:31.26 ID:3Xh4/du7.net
- $_ がエイリアスだからできるのか
普通は危ないから左辺値にしないよな
- 889 :デフォルトの名無しさん:2019/12/12(木) 21:46:01.56 ID:8fLoSBsV.net
- my @tmp = map { hogehoge } ( (ref $_[0]) ? @$_[0] : () );
こんなんで動かないかね?
- 890 :デフォルトの名無しさん:2019/12/12(木) 21:56:12.99 ID:3Xh4/du7.net
- 読みにくく書いても得しないからなあ
$_ を使わずに実現する方法があればそうしたい
- 891 :デフォルトの名無しさん:2019/12/12(木) 22:06:26.14 ID:V4YdibXT.net
- >普通は危ないから左辺値にしないよな
理解してりゃ、危なくもなんともないと思うが、、、
- 892 :デフォルトの名無しさん:2019/12/12(木) 22:25:24.61 ID:V4YdibXT.net
- >>890
だったらコンセプト変えて普通にプロトタイプ使え
sub pushm (¥@@){
my $arr = shift ;
my %h ;
push @{$arr}, grep { ! $h{$_} ++ } @{$arr} , @_ ;
}
my $arr ;
pushm @{$arr}, 1, 2, 3, 4 ;
コードの変更は殆どいらなくて、且つ自作変数の外側で、
(暗黙の)初期化をせざるを得ないから、$_[0] への初期化は
しなくてすむ。
- 893 :デフォルトの名無しさん:2019/12/12(木) 22:28:33.66 ID:V4YdibXT.net
- ああ、コード間違えてるけど、>>886のコード流用してくれ
- 894 :デフォルトの名無しさん:2019/12/13(金) 00:04:09.33 ID:Oz2tw7ml.net
- $_と@_の区別すら付いてない奴に教える必要なんかねえよ
- 895 :デフォルトの名無しさん:2019/12/13(金) 18:59:29.78 ID:xux/XkmF.net
- こういう時にプロトタイプが役立つのか
sub func(\@@);
とプロトタイプが書いてあって、perlは使えるけどプロトタイプ知らない人に、
この関数呼び出してみろって言ったら、10人が10人
func(\@array1, @array2);
って書くと思うな
- 896 :デフォルトの名無しさん:2019/12/13(金) 23:43:34.11 ID:tge0kpAy.net
- それでもちゃんと呼び出せるからべつにいいやん。
- 897 :デフォルトの名無しさん:2019/12/13(金) 23:53:07.48 ID:Roals1MV.net
- (\@∀@)
- 898 :デフォルトの名無しさん:2019/12/14(土) 00:01:01.77 ID:C/H6m2n1.net
- 配列をコンマで区切って並べると、多次元配列にならずに配列が繋がるだけ
というシンプルな仕様が仇になってるんだよな
どうあがいても、引数に配列が現れると、その後の引数と合体してしまうので、
リファレンスで渡すしか無い
だからって、push(\@array, $var) みたい使い方を強いるのは不格好過ぎる
ということで、呼び出し側では実引数を渡しているように見えて、
裏ではリファレンスで受け取るというねじれが生じていて、
プロトタイプでそのねじれを吸収している
- 899 :デフォルトの名無しさん:2019/12/14(土) 08:31:07.01 ID:tdigeeoh.net
- >>895
10人中一人は
my $arr ; my @arr ;
&func($arr, @arr);
って書いて、>>884みたいに「undefだったら動かない」って
首をひねるハメになる。
- 900 :デフォルトの名無しさん:2019/12/14(土) 08:37:29.90 ID:tdigeeoh.net
- 通常は、プロトタイプ使ったサブルーチンはモジュールの中に隔離して
perldocだけ読ませて使わせるから、>>895の問題は生じないんだけどなw
個人のコードでどう扱うかは知らん。
代表的なプロトタイプのコードの例↓(List::MoreUtilsの古いバージョン)
https://fastapi.metacpan.org/source/ADAMK/List-MoreUtils-0.33/lib/List/MoreUtils.pm
- 901 :デフォルトの名無しさん:2019/12/14(土) 09:03:25.68 ID:C/H6m2n1.net
- >>899
それエラーになるだけ
- 902 :デフォルトの名無しさん:2019/12/14(土) 09:22:43.70 ID:tdigeeoh.net
- >>901
ん?
「&つけて呼び出すと、プロトタイプを無視する」って言う
古くからある悪名高い挙動が変更になったのか?
すまんが俺は古いバージョンでレスってたわ。
それだったら喜ばしい事だね。
- 903 :デフォルトの名無しさん:2019/12/14(土) 10:07:00.59 ID:tdigeeoh.net
- 暇だったから、plenv に 5.30.1 突っ込んで確認したが、エラーにならん
もちろんuse strict; use warnings; 効かせて
# ストロベリーとかの環境は知らん
sub pusht (¥@@){ my $c = shift ; push @{$c}, @_ ; }
my @arr ;
my $arr ;
pusht @arr, 1, 2, 3, 4 ;
&pusht( $arr, 1, 2, 3, 4 ) ;
# @arr => ( 1, 2, 3, 4 )
# $arr => undef
- 904 :デフォルトの名無しさん:2019/12/14(土) 11:03:07.43 ID:6h9Np3wz.net
- ふつうに関数を呼び出すのにわざわざ&をつけるようなヤツは、10人に1人もいねえよ。w
- 905 :デフォルトの名無しさん:2019/12/14(土) 11:20:47.16 ID:FPT3g5nH.net
- いないとどれだけ楽か(泣)
「KENT-webに書いてありましたよ」
「」
- 906 :デフォルトの名無しさん:2019/12/14(土) 11:36:46.61 ID:tdigeeoh.net
- >>904
そのレスは>>901がレスる前に欲しかったなw
無駄な作業しなくて済んだし、恥もかかずに済んだw
- 907 :デフォルトの名無しさん:2019/12/15(日) 00:13:17.48 ID:uHh4aFtn.net
- &つけるのって少数派なのか
俺絶対つけてるけど
ある現場で「え、今そんなのつけませんよ…」ってちょっと引いてすらいる感じで言われたことある
まあもうその現場もrailsになったはずだけど
- 908 :デフォルトの名無しさん:2019/12/15(日) 00:30:38.21 ID:gPijPjuC.net
- C言語でもautoって書いてそうだ
- 909 :デフォルトの名無しさん:2019/12/15(日) 01:55:45.57 ID:EMEs5NEs.net
- Perl5で&を使うのは、関数リファレンスを解決するときだけやろ。
>>905
Perl4レベルの遺跡やな。
もう昔々のことだから、忘れてやれ。。。
- 910 :デフォルトの名無しさん:2019/12/15(日) 02:19:39 ID:uHh4aFtn.net
- これは関数であるって目印としてつけてる
俺の中では可読性の為
つけないのはData::Dumper()とかモジュールから直で呼ぶ場合だけかな
- 911 :デフォルトの名無しさん:2019/12/15(日) 07:37:43.49 ID:R35TvKP/.net
- 呼出で挙動がかわるの、充分に分ってるなら「個人で使うなら」いいんじゃねーの?
- 912 :デフォルトの名無しさん:2019/12/15(日) 07:43:22.45 ID:R35TvKP/.net
- プロトタイプの呼出以外にも
@_ = (1,2,3,4) ; &func ;
で特殊挙動するし、地雷だらけだよXXルーチン
なんでXXがNGワードになってんの?
北島三郎のことXXちゃんって書き込めないの?
俺の環境だけ?
>>909
「perl, XXルーチン」でググると検索上位に来るんだよ、今でも
- 913 :デフォルトの名無しさん:2019/12/15(日) 07:46:10 ID:gPijPjuC.net
- サブルーチン
- 914 :デフォルトの名無しさん:2019/12/15(日) 07:47:19 ID:KI19HfKk.net
- teratailのサブルーチン絡みの質問斜め見て、頭痛くなったわ。
質問者はしょうがないとしても、回答で&付けるってどういう了見だ?
- 915 :デフォルトの名無しさん:2019/12/15(日) 07:48:41 ID:R35TvKP/.net
- 俺の環境だけかよorz…
- 916 :デフォルトの名無しさん:2019/12/15(日) 08:32:32 ID:KI19HfKk.net
- >>906
お作法本全盛期(2010年代前半)なら、相手はお作法本を読んでる可能性がある。
引いてる程度じゃなくて、どん引きされたのかもよ
# お作法本: Perl ベストプラクティス、Effective Perl etc.
KENT-webもだけど、お作法本インスパイヤで、オレオレお作法のページが
山程あるのも滅んで欲しいわ。
- 917 :デフォルトの名無しさん:2019/12/15(日) 08:34:58 ID:KI19HfKk.net
- アンカミス
×>>906
○>>907
- 918 :デフォルトの名無しさん:2019/12/15(日) 08:46:16 ID:gPijPjuC.net
- 作法は一つではない
- 919 :デフォルトの名無しさん:2019/12/15(日) 08:51:11 ID:KI19HfKk.net
- 一つじゃないのは当たり前
けど、オレオレお作法のページはいらない
- 920 :デフォルトの名無しさん:2019/12/20(金) 00:38:27.17 ID:nzfj8t5I.net
- Perl6無くなったんだね。今更知った。
新言語「Raku」として生きていくそうな
https://ja.wikipedia.org/wiki/Raku
- 921 :デフォルトの名無しさん:2019/12/20(金) 00:57:05.41 ID:cphYS5E7.net
- YAPC が YARC になって ヤラしい
- 922 :デフォルトの名無しさん:2019/12/20(金) 06:50:52.69 ID:GiJ3WKor.net
- keysがスカラを引数に取れるせいで、なんか間違った書き方してる所があちこちある
どっちでも大抵は動くけど、エラーで止まりやすい
明示的にデリファレンスしてればエラーにはならない
- 923 :デフォルトの名無しさん:2019/12/20(金) 07:10:52.86 ID:8NcASRwh.net
- それ、実験的に5.14から搭載されて、5.24で削除された機能
エラーで止るのは環境依存か、書き手がヘボか
そもそも使うんじゃねー、ってのが主旨なら、同意
- 924 :デフォルトの名無しさん:2020/02/14(金) 23:14:26 ID:x2wQj3nb.net
- 配列があって、条件に合わないものを削りたい
0 .. $#array に対してループしながらspliceすると、
$i-- でも redo でもなんか不安がある
どうするのが定番なんだろう
- 925 :デフォルトの名無しさん:2020/02/15(土) 13:11:27 ID:Slu9Ub4W.net
- grep { $_ > 0 } @array
- 926 :デフォルトの名無しさん:2020/02/15(土) 18:06:37 ID:jU+J++ht.net
- @array = grep { $_ > 0 } @array
とやって平気な気がしない
別の配列を用意していいなら既に出来ていて、
それを何とかすっきりできないかと
- 927 :デフォルトの名無しさん:2020/02/15(土) 19:06:58.27 ID:Slu9Ub4W.net
- (平気な気がしないとか言われても知らんがな)
まず「すっきりできる」を定義してください
- 928 :デフォルトの名無しさん:2020/02/15(土) 19:20:44 ID:jU+J++ht.net
- ああー
逃げに入っちゃった
- 929 :デフォルトの名無しさん:2020/02/15(土) 23:03:36 ID:pIpzwBTs.net
- spliceするのはよくない気がする→何が定番なんだろうって話だと
grepが定番でしょ
別に結果配列用意するのでもいいんじゃないの
- 930 :デフォルトの名無しさん:2020/02/15(土) 23:40:20 ID:KTVOtCHP.net
- spliceの、僕が考えた最強関数的な仕様はイヤかも。
もっと構文レベルで同じことができると良かった。
- 931 :デフォルトの名無しさん:2020/05/09(土) 14:56:48 ID:KF1jgHuK.net
- WindowsでPerlを使いたいんですが、どれが良いですか。
ActivePerlはアンインストールしてもゴミが残るそうなので避けたいのですが。
- 932 :デフォルトの名無しさん:2020/05/09(土) 18:21:47 ID:HzJsK433.net
- ストロベリーパニック
- 933 :デフォルトの名無しさん:2020/05/09(土) 18:51:24 ID:/Z4Vk9Yy.net
- Windows10, WSL, Ubuntu 18.04 なら、最初から入っているけど
file `which perl`
/usr/bin/perl: ELF 64-bit LSB shared object 以下省略
- 934 :デフォルトの名無しさん:2020/05/27(水) 01:20:04.31 ID:VqjzWrQC.net
- Perlを勉強しています。
「use constant」で定義したハッシュのキーを
keys関数で取り出したいのですが出来ません。
どのような方法で取り出せますか?
use constant H => { a=>'AAA', b=>'BBB' };
foreach ( keys H ) #エラー。「keys %H」とするとエラーにならないが何も得られない。
{
print $_, "\n";
}
宜しくお願いします。
- 935 :デフォルトの名無しさん:2020/05/27(水) 01:33:03 ID:h9Mc4KsU.net
- use constant H => { a=>'AAA', b=>'BBB' };
foreach (keys %{H()}) {
print $_, "\n";
}
- 936 :デフォルトの名無しさん:2020/05/27(水) 02:12:19.49 ID:VqjzWrQC.net
- >>935
ぬおおおおっ…Perlムズイっす。
「H()」この部分はハッシュへの参照を返してるのだと思うのですが、
実体はサブルーチンだったのですね!「&H」でも上手く行きました。
- 937 :934:2020/05/27(水) 03:05:09.48 ID:VqjzWrQC.net
- >>935
お礼を記し忘れていました。
ありがとうございました。
- 938 :デフォルトの名無しさん:2020/05/27(水) 05:13:22.61 ID:ISGE1WR5.net
- Perl は難しすぎる。
Ruby では、
hash = { a: 1, b: 2 }
hash.each_key { |key| p key }
出力。:a などはシンボル
:a
:b
- 939 :デフォルトの名無しさん:2020/05/27(水) 06:47:35 ID:VqjzWrQC.net
- >>938
そういう話をしているのではないです。
そのコードを見る限り、
普通のハッシュキーを取り出すだけだったらPerlの方が簡単な気がします。
my %h = ( a => 1, b => 2 );
print "$_\n" foreach ( sort keys %h );
結果:
a
b
※>>935は、「use constant」で定義したハッシュのキーの事です。
- 940 :615:2020/05/27(水) 08:50:36.01 ID:Bt/CFCtA.net
- constantの実体は値を返すsubなので、%{}でデリファレンスしてね
- 941 :デフォルトの名無しさん:2020/09/28(月) 17:41:16.96 ID:7jydyBLu.net
- (?:)
をいつも忘れるんだが、何かいい覚え方は無いだろうか
- 942 :デフォルトの名無しさん:2020/09/28(月) 19:13:20.83 ID:SgTMPvZg.net
- >>941
何を忘れんの?
「?」?「:」?
さすがに「()」は忘れんよな?
- 943 :デフォルトの名無しさん:2020/10/04(日) 23:18:25.80 ID:4IGvE5yV.net
- >>941
いいじゃんべつに。気にせず普通の括弧にして捨てろ。
- 944 :デフォルトの名無しさん:2020/10/05(月) 07:42:46.02 ID:c4eZ6okl.net
- ずれるやん
- 945 :デフォルトの名無しさん:2020/10/07(水) 12:09:24.93 ID:70BaWviw.net
- >>941
後で参照する ? 単に丸括弧を使う : 丸括弧内に「何か」を入れる
さて、「何か」とは、一体何だっただろうか?そうだ、三項演算子だ!
…と覚える。
- 946 :デフォルトの名無しさん:2020/10/07(水) 13:37:28.91 ID:TO7pfOqH.net
- >>945
「(?」でひとつとするべき。
その次に「:」「!」などが修飾子としてつく。
- 947 :デフォルトの名無しさん:2020/10/07(水) 15:33:40.38 ID:GbKtGfRD.net
- あと、マッチングのオプションのsとmも毎回検索してる
最初に思うのは大抵逆
- 948 :デフォルトの名無しさん:2020/10/08(木) 09:33:52.95 ID:e3wo1zjN.net
- (?シリーズをいろいろ使ってれば、あとは:だけだけど、
そもそも(?:しか使わないんだよな
いろいろ便利そうな拡張ではあるけどこれ以上可読性下げてどうする
- 949 :デフォルトの名無しさん:2020/10/09(金) 14:54:01.89 ID:JXQ8Trls.net
- TABをデリミタにしてデータが1行に並んでいる
但し、""で囲まれていれば内部にTABを使ってもよい
というルールのデータに対して、""に囲まれているTABをスペースで置換したい
どう書けばいい?
- 950 :デフォルトの名無しさん:2020/10/11(日) 19:55:14.93 ID:LEwrAD/J.net
- 多分、これでいけると思う。
while(s{(".*?)\t(.*?")}{$1 $2}){}
- 951 :デフォルトの名無しさん:2020/10/11(日) 21:05:02.09 ID:OOWRCRR6.net
- どうやって使うかすら判らん
- 952 :デフォルトの名無しさん:2020/10/11(日) 22:14:06.89 ID:LEwrAD/J.net
- while(<>){
while(s{(".*?)\t(.*?")}{$1 $2}){}
print;
}
これで解らないなら、「Perlの入門書をよく読みましょう」
としか言えないのだが。
- 953 :デフォルトの名無しさん:2020/10/11(日) 22:42:11.43 ID:OOWRCRR6.net
- せめて入力が$strとかになってないと
- 954 :デフォルトの名無しさん:2020/10/11(日) 23:29:39.25 ID:LEwrAD/J.net
- while($str =~ s{(".*?)\t(.*?")}{$1 $2}){}
しかし、Perlを使うなら、文中で省略されている$_ のことは
知っておかないといけない。
- 955 :デフォルトの名無しさん:2020/10/11(日) 23:56:48.98 ID:LtBR6JI3.net
- タブ文字が複数あったら?とかダブルクォートが含まれてたら?とか、不安もいろいろ。
いわゆるExcelCSVなら、置換一発とはイカンやろな。
CSVモジュールでも探すか、マジメに自作するかして、セルごとに置換しないと個人的には落ち着かないな。
- 956 :デフォルトの名無しさん:2021/03/25(木) 23:19:00.52 ID:BFmdRR/m.net
- $_ などの特殊変数に依存したコードを書くと移植性と可読性が著しく低下する。
正規表現にまつわる特殊変数も厄介。別の正規表現が呼ばれて上書きされてしまうからすぐにコピーしないといけない。
- 957 :デフォルトの名無しさん:2021/04/05(月) 00:24:54.71 ID:SDYSIyNbI
- フリーランスエンジニア専門の案件一括検索サイト「フリーランススタート」、
掲載案件数15万件突破!さらにリモートワークの掲載案件数4,000件突破!
https://prtimes.jp/main/html/rd/p/000000010.000038976.html
ITフリーランスの独立支援サービス『テックビズ』&定額制全国住み放題『ADDress』提携開始
https://prtimes.jp/main/html/rd/p/000000035.000047639.html
ITフリーランスの独立支援サービス『テックビズ』とフリーランス向け報酬即日払いサービス『先払い』提携開始
https://prtimes.jp/main/html/rd/p/000000034.000047639.html
新潟県、移住してきたテレワーカー/フリーランスに最大50万円を支給
https://internet.watch.impress.co.jp/docs/news/1287094.html
茨城県日立市、県外からの「テレワーク移住者」に最大151万円の助成金
https://internet.watch.impress.co.jp/docs/news/1281120.html
長野市、市内に移転・事業所設置し、移住することで最大550万円の支援金を支給
https://internet.watch.impress.co.jp/docs/news/1274735.html
フリーランスが活用できる「最大1,000〜3,000万円・補助率50%〜75%」の
『ものづくり・商業・サービス補助金』とは?概要や条件を解説
https://freenance.net/media/money/4255/
新型コロナの影響で、常駐型フリーランスエンジニアのリモート対応が増加
https://codezine.jp/article/detail/13800
- 958 :デフォルトの名無しさん:2021/04/28(水) 14:52:38.35 ID:RETJLOh2.net
- ビットシフト演算の挙動の違いが表面化した
32bitと64bitのビルドの違いにより、1 << 32の結果が変わる
32bitのperlが2^32以上の整数を扱えない訳ではないので、
ビットシフト演算子を使わずにビットシフト演算子と同じことをやらないといけない
何か抜け道は無いもんか
- 959 :デフォルトの名無しさん:2021/04/30(金) 18:29:08.85 ID:m/tHuDzV.net
- >>958
シフトするだけなら2倍したり2で割ってintにすれば良いのでは?
もっと大きなビットを扱いたい場合は Math::BigInt かな。
- 960 :デフォルトの名無しさん:2021/04/30(金) 19:23:07.21 ID:vAph35tm.net
- もっそい遅いんだっけ
- 961 :デフォルトの名無しさん:2021/04/30(金) 19:31:00.11 ID:m/tHuDzV.net
- use bigint だと透過的にできることがわかった。
こんなのできたし。
$ perl -e 'use bigint; my $x = 1; $x <<= 256; print "$x\n"; if ($x & (1 << 256)){print "OK\n";}'
115792089237316195423570985008687907853269984665640564039457584007913129639936
OK
$
日本語訳された bigint のマニュアル
https://perldoc.jp/docs/modules/bignum-0.23/bigint.pod
- 962 :デフォルトの名無しさん:2021/04/30(金) 19:43:01.50 ID:vAph35tm.net
- 何をしたいかというと、8byte単位の送信データがあって、
実際にはそれを64bitと見ていて、あるレコードは何bit目から何bit長、みたいに詰め込まれている
byte間とか平気でまたぐ
そういう64bitにデータをセットしたり取り出したり、という操作をしようと思うと、
1変数が64bitになっている方が楽に書ける
でも32bitの処理系だとできない
- 963 :デフォルトの名無しさん:2021/05/01(土) 05:00:07.50 ID:R5WysE71.net
- ネットワークの通信データの取り出しなら unpack でフォーマットを N2 で配列または変数2個に取り出してからやれば楽なのでは?
- 964 :デフォルトの名無しさん:2021/05/01(土) 09:00:30.12 ID:/n1q7kUC.net
- やれるとすっきりするけど、バイトオーダーやエンディアンがころころ変わるから、
何か落とし穴がありそう
- 965 :デフォルトの名無しさん:2021/05/01(土) 09:21:38.72 ID:ZNKsJp5F.net
- Perl の仕様が邪魔してるということなら Inline::C とかが役に立つかも。
- 966 :デフォルトの名無しさん:2021/05/01(土) 16:05:36.08 ID:R5WysE71.net
- pack, unpack は互換性重視していると思うが? 少なくともフォーマットの N 等は同じ4バイトだよ。
その辺どうしても信用できないなら自分専用の pack, unpack を作れば良いんじゃないかな。
そうすると pack, unpack と同じ形式である必要もないわけだが。
- 967 :デフォルトの名無しさん:2021/05/01(土) 18:01:49.35 ID:/n1q7kUC.net
- そんなようなことをしてるのが現状の実装
- 968 :デフォルトの名無しさん:2021/05/02(日) 17:15:11.59 ID:9gapCdI8.net
- そういえば Perl のネイティブな整数のサイズって C のどれなのかな。
perlnumber には「perl をビルドする際に使われた C コンパイラが対応している形式」と
書かれてるけど。
ちなみに今使ってる環境では int ではなく long , long long と同じ 8 バイトのようだ。
- 969 :デフォルトの名無しさん:2021/05/03(月) 17:40:45.60 ID:UFgXt23Q.net
- Perl5のビルドはやった事ないので知らないが、多分デフォルトがCのintと同じで指定すれば変えられるって感じなのではないかな。
perl -V で実行するとそういう設定値が沢山出てくるよね。その中に intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678
のようなものが出てくる。
そういや前に整数のバイト数でハマったことあったな。 fcntl() の F_SETLKW の時に渡す flock 構造体のバイナリで
pack('s2l3', F_WRLCK, SEEK_SET, 0, 0, 0) ってやっててうまく行ってたプログラムが別の環境に持って行って動かしたら
ロックが掛かったり掛からなかったりするようになり、良く調べてみたら pack の l は64bit環境でも 32bit 固定だが
struct flock の方は l_start, l_len が32bit OS では 4 バイト、64bit 環境では 8 バイトになっていた。
そもそも pack してバイナリにしなければいけないような引数の渡し方がいけないだけだとは思うが、結局どちらの
環境でも動くプログラムにするために pack('s2l5', F_WRLCK, SEEK_SET, 0, 0, 0, 0, 0) で誤魔化した。
やっぱこういうのは本来ならモジュール作ってそこで吸収した方が良いんだろうな。
と思ったらあった。
https://metacpan.org/pod/File::FcntlLock
是非デフォルトでこういうモジュールも perl と一緒にインストールされて欲しいものだな。
- 970 :デフォルトの名無しさん:2021/05/04(火) 07:28:36.10 ID:2rafzDNd.net
- ありがとう。たまたま Perl のソースコードをダウンロードしてあるから
INSTALL を読んでみたら (いや、先に読んどけという話だが)
C コンパイラがサポートしてなくても use64bitint というオプションを使えば
整数のサイズが 64 ビットになるらしい。
Debian のパッケージでもこれを使ってるようだ。
C コンパイラの仕様は Config モジュールで得られるから
それを使って環境に合わせた処理が可能になる場合もあるが
Linux の flock 構造体はメンバの順番すら保証されてないようだから無理そう。
- 971 :デフォルトの名無しさん:2021/05/04(火) 11:47:57.60 ID:2rafzDNd.net
- 間違えた。「C コンパイラが」じゃなくて「CPU が」だ。
Configure を見た限りでは、8 バイト整数の型として採用する優先順位は
int, long, long long, int64_t の順で
8 バイトの型が無ければ Configure が失敗するようだ。
あっても CPU が対応してなくてライブラリで実現してるような環境だと
速度のためにあえて使わないという選択もあるかと思うが
long が 8 バイトだと強制的に使わされるようだ。
試せる環境が無いから勘違いしてるかもしれないが。
- 972 :デフォルトの名無しさん:2021/05/04(火) 16:45:05.36 ID:xGoTe+aq.net
- さいですか
- 973 :デフォルトの名無しさん:2021/05/04(火) 16:56:22.60 ID:1LbVAR3E.net
- きりんです
- 974 :デフォルトの名無しさん:2021/05/04(火) 16:58:56.75 ID:siU8Ev75.net
- なんできりんなんだよ
そこはラクダだろ
- 975 :デフォルトの名無しさん:2021/05/04(火) 17:08:17.38 ID:FheU4VJA.net
- でも象さんのほうがもっと好きです
- 976 :デフォルトの名無しさん:2021/05/05(水) 15:08:24.73 ID:CxAIF4J7.net
- テーブルがあってインデックスで取り扱いたい
でもテーブルを作る時にカウンタとか意識したくない
配列なら
push @table, $data;
で済むけど、ハッシュにしたい
$table[$i]->data1 = $data1;
あるいは
$table->[$i]->data1 = $data1;
そんなことできたっけ
- 977 :デフォルトの名無しさん:2021/05/05(水) 15:53:07.29 ID:zZpLK+nt.net
- 日本語でおk
- 978 :デフォルトの名無しさん:2021/05/05(水) 16:00:54.87 ID:CxAIF4J7.net
- 全部一度に判ってるなら、無名ハッシュをpushすればいいんだけど
ちょびちょび追加していきたい
- 979 :デフォルトの名無しさん:2021/05/06(木) 21:44:26.70 ID:ajjDZVcw.net
- 君が何をしたいのかよくわからない。
- 980 :デフォルトの名無しさん:2021/05/06(木) 21:49:53.54 ID:WUloT9c9.net
- ->data1は->{data1}の間違い
- 981 :デフォルトの名無しさん:2021/05/16(日) 14:19:41.36 ID:vhU8s59y.net
- pontiffがprintfに見える
- 982 :デフォルトの名無しさん:2021/05/24(月) 07:52:58.62 ID:GjHEXSDD.net
- 親の方は無限ループにしておいて、適宜forkしてメインの処理をさせる
終わったら子はexitする
という作りで基本的にうまくいってるのに、たまに親が子だと思ってexitしとる
$pid = fork;
if (!$pid) {
exec($command);
exit;
}
この書き方に何か問題が?
- 983 :デフォルトの名無しさん:2021/05/24(月) 08:16:28.74 ID:INcwcLMt.net
- 親プロセスがwait $pid しないとゾンビが蓄積される。
それが続くと0ではなくundefを返すと思う。思うとしか言えないのはperldocに書かれてないから。
defined $pid でundefと0を区別する必要あり。
$!にResource temporarily unavailableのようなエラーが渡されるのでたぶんそう。
なのでちゃんと親プロセスがwait $pidすれば回避できる。
- 984 :デフォルトの名無しさん:2021/05/24(月) 08:19:17.40 ID:INcwcLMt.net
- 訂正。
perldoc -f forkにfork失敗時にundefを返すことが書かれてたわ
- 985 :デフォルトの名無しさん:2021/05/24(月) 08:22:50.85 ID:GjHEXSDD.net
- やっぱり失敗してるんだよな
リトライするように直して試してみてるとこ
どういう理由で失敗するんだ?
activeperl
- 986 :デフォルトの名無しさん:2021/05/24(月) 13:11:06.83 ID:SHUy6n38.net
- windows版のforkもどきだからじゃないの?
- 987 :デフォルトの名無しさん:2021/05/24(月) 13:35:57.27 ID:INcwcLMt.net
- macOSでも起きるよ
- 988 :デフォルトの名無しさん:2021/05/24(月) 13:56:03.81 ID:GjHEXSDD.net
- 今たまたま何かのリソースが全部埋まってて、一瞬待ってくれたら準備できるよ
なんだったら、リトライは隠蔽してくれて良さそうなもんなのに
IO関係はみんなそうなってる
- 989 :デフォルトの名無しさん:2021/05/24(月) 16:23:07.38 ID:mQhym/iw.net
- Perlはかなりの低レイヤーでも使われることがあるからな。
そんな冗長にはできんやろ。
そもそも、ぜんぜんwaitpid()しなかったらいずれ困るんだから、早くエラーになったほうがまし。
- 990 :デフォルトの名無しさん:2021/05/25(火) 22:10:30.48 ID:z8jztsTP.net
- activeperlで
forkで返るpidがマイナスの値なんだけど、
Win32::Process::List で GetProcesses して得られるものとは別物なの?
- 991 :デフォルトの名無しさん:2021/05/25(火) 22:38:53.48 ID:/Axm+K1V.net
- >>990
かもね。
聞く前にドキュメントを読め!
https://docs.activestate.com/activeperl/5.28/perl/perlfork.html
- 992 :デフォルトの名無しさん:2021/05/25(火) 22:59:31.10 ID:z8jztsTP.net
- 疑似プロセスIDは、OSのプロセスIDとは別物なのか
要は、forkで分岐したプロセスがまだ生きてるかどうか親から周期的に監視したいんだけど
waitすると親が止まってしまうのでどうしたもんか
- 993 :デフォルトの名無しさん:2021/05/25(火) 23:54:54.75 ID:/Axm+K1V.net
- 別スレッドでsystem()ではアカンのか?
- 994 :デフォルトの名無しさん:2021/05/26(水) 07:17:11.86 ID:niBt7hlg.net
- スレッド使ったことない
- 995 :デフォルトの名無しさん:2021/05/26(水) 08:32:40.50 ID:VVGa10VW.net
- perlのスレッドは標準IOやパイプの取り扱いが難しい、というか動きが怪しい
- 996 :デフォルトの名無しさん:2021/05/26(水) 09:53:00.68 ID:+WmbAELr.net
- シェルスクリプトではkill -0 PIDでプロセスが生きてるか調べられる!
そういう用途にはシェルスクリプトを使うべき!
- 997 :デフォルトの名無しさん:2021/05/26(水) 09:53:29.06 ID:+WmbAELr.net
- ユーチューバーのKENTとかも言ってる!
- 998 :デフォルトの名無しさん:2021/05/26(水) 10:20:29.11 ID:niBt7hlg.net
- GetProcessesでpython.exeを見つければだいたい目的は達成するんだけど、
他に使ってる人がいると間違う
- 999 :デフォルトの名無しさん:2021/05/26(水) 10:37:03.92 ID:VVGa10VW.net
- 実行バイナリやシェルコマンドをP言語スクリプトから呼び出すソリューションが最も汎用性が高い
古事記にもそう書いてある
- 1000 :デフォルトの名無しさん:2021/05/26(水) 10:40:21.49 ID:+WmbAELr.net
- そこもちゃんとユーチューバーのKANTのサロンで言ってる!って
語尾に付けないと
- 1001 :デフォルトの名無しさん:2021/05/26(水) 10:48:36.67 ID:VVGa10VW.net
- このスレ、消費に9年以上かかってるとか盛者必衰の理をあらわしてて草
- 1002 :デフォルトの名無しさん:2021/05/26(水) 11:00:06.47 ID:+WmbAELr.net
- 9年か・・・。Perlもずいぶんと長生きだね。
次スレ
【古典的モダン】Perlについての質問箱 51箱目
https://mevius.5ch.net/test/read.cgi/tech/1621994129/
- 1003 :デフォルトの名無しさん:2021/05/26(水) 11:35:56.72 ID:a7TiWa6C.net
- 質問してもええか? ええのんか?
- 1004 :2ch.net投稿限界:Over 1000 Thread
- 2ch.netからのレス数が1000に到達しました。
総レス数 1004
248 KB
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★