【古典的モダン】Perlについての質問箱 51箱目
■ このスレッドは過去ログ倉庫に格納されています
かつて一斉を風靡したPerlについての当時のモダンな質問をするための質問箱です。
【一つ前のスレのテンプレ】当時の状況を鑑みまた芸術作品であることに配慮して原文のままとした。
【モダン推奨】Perlについての質問箱 50箱目
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辺り [プログラミング自体の経験が無い奴はまずココを読め]
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/ [モジュール]
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 『モダンPerl入門』本日発売!
Webで立ち読みできるサンプルPDFも提供中
https://codezine.jp/article/detail/3563
翔泳社は2月9日、『モダンPerl入門』を刊行した。
Perlの初中級者やPerlをサブ言語として使いたい開発者向けの技術書で、
サンプルとして一部をPDFで閲覧することができる。
モダンPerl入門 増補改訂版(仮)
https://codezine.jp/book/modernperl2?p=tyosya
※本ページは『モダンPerl入門 増補改訂版(仮)』の特設サイトです。
商品紹介のほか、電子書籍版の早期ディスカウント販売(β版を先行提供)など
を予定しています。今後の更新情報は「CodeZine Books」のFacebookページなどで
配信していきます。
https://codezine.jp/book/modernperl2?p=mokuji
以下は、2013/9/18時点での目次案ver.1です。随時更新予定。
初版の目次項目については、こちらを参照してください。 スレ乙。
>>1
> 理由はもう2012年です。いい加減2000年以前の方法はやめましょう。
> 最新のPerlを使うほうがかっこいいです。
笑える。w
今は一周回って、「モダン」よりも伝統的なほうがいいよな。 中途半端に高機能だったから、適当に機能を追加して
みんなバラバラの方法で拡張して作者もそれを制御しなくて
結果 Python や Ruby といった他の言語に追い越されてしまったよな
逆にもっと低機能なシェルスクリプトの方が長生きしてるという
使う範囲をわきまえてる。下手に高機能に手を出さない。 未だにクラス構文さえないのに、謎機能を延々追加し続けるのほんま…
着々と良い機能を追加するPHPを見習ってほしい >>9
「クラス構文」は不要。
クラスのようなものの表現はいろいろあっていい。現行Perlでもいい。 >>10
JSでさえクラス構文を追加したのに、そんなこと言ってるから前時代の言語だと思われるんだよ >>11
実際に前時代の言語になにいってんだか。w
JavaScriptにはJavaScriptなりの都合もある。
Perlは、今さら妙に冗長な仕様を足さなくてもよろしい。 >>12
それで新人は寄り付かず、既存のユーザーでさえ離れていったら意味ないだろ
誰得を想定してるの? スレッドも若干混乱するけど、そういうもんだと思えば普通に使える
誰がいつdetachするとか、execしたら全員終わるとか、何で?て思うけど >>13
そう思うヤツは離れるがよい。
おまえもはよ!w
まあ、「クラス構文」といっても、言語によってそれぞれけっこうなクセがあるんで、一言でいえるようなもんではないけどな!
Perl5/7は、充分な互換性とそれなりな読み書きのしやすさがみんなの得。 >>15
exec()は、自プロセスを新プロセスに置き換える関数やろ。
旧プロセスの全スレッドがなくなるのは当然ちゃうの? >>16
もしかしたら何か深い考えでもあるのかも?とワンチャン期待したけど、お前にはがっかりだよ >>10
> 「クラス構文」は不要。
というのであれば、あれば今すぐPerlでクラスのようなものを作っているやつらに
そんな事をするのをやめろと言うべき
Perlに公式のクラス構文がないから、みんなが別々の
俺が考えたクラス付きPerlのようなライブラリを作ってるんだろうが
しかも使ってるライブラリが別々のクラス構文ライブラリを使ってるから
無駄にメモリ使用量が増えると言うねw
クラス構文が不要というのなら、Perlの世界からクラスを使ったプログラミングを追い出すべきだ >>12
> Perlは、今さら妙に冗長な仕様を足さなくてもよろしい。
妙に冗長な仕様を足さない代わりに
妙に冗長な仕様のクラス構文ライブラリを使ってる
本末転倒 わざわざ使ってるヤツのことなんか知らんわ。
標準のクラス(っぽいもの)だけで充分。 お前が十分って言った所で、他の人がいろいろ拡張するやろ
自分一人で仕事してるんじゃないで?
共通規約が必要ってことや じゃあ「規約」をしかるべき筋に提案してこいや。
こんなところで必要とか唱ってんと。w
「仕事」ならチーム内で考えろ。
Perl文化としては、拡張するのもしないのも、それにのるのものらないのも自由。
イヤなら使わなきゃええ。
「規約」とやらでしばることだけがそぐわんことやとワイは思っとるがな。
潔癖なんはやらんで。 チームで規約作っても、そこで使われてるライブラリはどうしようもないだろ・・・
何を言ってるんだか >>1
おつ
現在もActivePerl版の5.8.9を使って安定動作しています お前らPerlのバージョン何に動くようにコード書いてんの?
未だにPerl 5.10.0とかでも動くように書いてんの? >>25
中は見ないことにして使うのも、潔癖に決めて使わないのも可。
すきにしろ。
自分で考えられなきゃ誰かに考えてもらえ。
なにをいってんだか。w >>28
Perlが使えないゴミでも好きにしろって話?
使えないゴミなら使わないだけでしょ? Perlの人気が全くなくなってるのは事実じゃね?
Perlが得意なことは他の言語だともっとうまくやれるし
Perlを使わなきゃいけない理由がない 理由はある。
・高い互換性。
・過去の資産。
・インストールの最小化。
・慣れ。 ・高い互換性・・・他の言語も変わらない
・過去の資産・・・負債。仕方なく使ってるだけ
・インストールの最小化・・・シェルスクリプトでも使え
・慣れ・・・慣れてる人はもういない Windows PCにGit for Windowsをインストールしている人はもれなくPerlもインストールしている
自分が使わなくても他のアプリが使う >>34
> ・高い互換性・・・他の言語も変わらない
Rubyなんかはかなり違うし、Python3も意外と違う。
> ・インストールの最小化・・・シェルスクリプトでも使え
さすがにシェルスクリプトとは機能や書きやすさがまったく違う。
> ・過去の資産・・・負債。仕方なく使ってるだけ
> ・慣れ・・・慣れてる人はもういない
おまえ、このスレに何しに来てんの?
ヒマなん?w
ほかもそうだったが、現実を知らなすぎる。 >>36
> さすがにシェルスクリプトとは機能や書きやすさがまったく違う。
違う違う言っても根拠がないw
> さすがにシェルスクリプトとは機能や書きやすさがまったく違う。
インストールの最小化の話で負けたからって、話をすり替えないでくれる?w
> おまえ、このスレに何しに来てんの?
> ヒマなん?w
すり替えも止めて言い返せなくなったかw
> ほかもそうだったが、現実を知らなすぎる。
Perlの現実を見せてくださいよ 訂正
> Rubyなんかはかなり違うし、Python3も意外と違う。
違う違う言っても根拠がないw インストールの手間がいらない。互換性が欲しい・・・シェルスクリプト
そこまで気にしないから機能性が欲しい・・・Python、Ruby
こういうことだよな? Ruby使うくらいならPerl使う
Rubyはないな RubyはmacOSのHomebrewで使われているのでこの先生きのこれる
Perlはどうだろう Homebrew は、C/C++ で書き直した。
10年以上掛かっている
SASS もそう。
Ruby から他言語へ置き換えるまで、10年以上掛かる
それが、Rubyが起業・新規ビジネスに強い理由。
だから、ハーバード大学はRuby on Rails
他の言語よりも、数年以上早い事で、先にシェアを取れるから PerlはC/C++/Java/C# の構文に近いコーディングが可能なので相互移植性が高い
Perlのハッシュと正規表現を移植するのに手間取ることを除けばほぼ障害はない >>42
Homebrewはrubyだろ?
インストーラーはシェルスクリプトに置き換わった >>43
スレ伸びないんだから、そのruby君にいついてもらおう
定期的にPerlがオワコンであることを知らせてくれるはずだw これから何か開発するぞー
てなったらわざわざperlは選ばない
仕事してて、これとこれを繋ぐちょっとしたスクリプトが欲しい
となった時にすぐ作れるのがperl
pythonでも当然いいけど、そもそもインストールされてないかもしれない
perlはその古さにより、どこの環境でもまずあって、perlかVBAかみたいな選択になる 5/20
これからプログラミングをやる人が絶対に学んではいけない技術
YouTube でエンジニアチャンネル・粟島が、
WordPress をオワコン認定した!
WordPressから、ヘッドレスCMS へ移行していく Perlには戦力逐次投入に耐えられる柔軟性がある
軍隊ではなく警察の機能に近い感じ そうやって関係ないものに例えて
自分を強く見せようとするなよ >>47
> perlはその古さにより、どこの環境でもまずあって、perlかVBAかみたいな選択になる
どこの環境にもあるわけじゃないでしょ?
例えばDockerのCentOSやAlpineには入っていなかった
Debianはなぜか使っていた。でもOSを動かすのに必須ではないコンポーネント
どのディストリもPerlに依存しないように進んでいると思う >>48
Pythonは機械学習というユースケースを得た
Perlはなにもない CentOSしか使ってはいけないような会社は滅びるから大丈夫 お前はPerlが入ってるディストリしか使ってはいけない会社なんだろ?
滅びるぞw
こちとらいろんなディストリを使う会社なんですよ >>52
そういう意味では、Perlだけでなく、PythonにもRubyにも依存しすぎないようになってる。
# dnf/yumはPython製だけど、ふつうのPythonとは別枠。
ことさらにPerlについて指摘するのは詭弁。 >>57
そりゃそうだろ?
OSはどれにも依存してないから"どれも"使う意味がない
使う理由がある時に言語はインストールする
Pythonは機械学習、RubyはRails。使う理由がある。Perlは特に使う理由がない
Perlの文化、やり方は一つじゃない。つまりやり方はPerl以外にもあるということ。
その結果いろんなやり方があるならPerl以外のやり方でもいいじゃない。
Perl以外を使えばそのやり方で統一できるし。となってしまったw
ユーザーの意見「オブジェクト指向を実現する方法は
自分ののやりたいことのテーマと関係ない。自分のテーマはいろいろやりたいが
本質的じゃない所で、いろんなやり方を追求しようとは思ってない。
オブジェクト指向を実現する方法なんて、どうでもいいところは統一して欲しい。」 >>59
> Pythonは機械学習、RubyはRails。使う理由がある。Perlは特に使う理由がない
おまえの理由やろ。
んなもんは知らん。
> どうでもいいところは統一して欲しい。
おまえの独善的な意見やろ。
「ユーザーの意見」にすんな。
ふつうはどうでもええところ。
おまえはもうPerlから離れろや!
粘着はキモいぞ。w pythonとrubyは専用の目的しかなくて、perlは汎用 yumのpythonは別枠っていうのは間違ってるけど気持ちは判らんでもない
python利用者側にvenvを強いるんじゃなくて
yumが自分専用のpythonを内包しておいて
後から入れたpythonの影響がほぼ皆無になる想定をしていれば良かった
blenderみたいに 確か、Chef に内包しているRuby は、他と関係ない。
Chefだけを処理するもの
だから、サーバーにChefエージェントを送り込んでも、
内包してるRubyは、外部と無関係 >>62
pythonとrubyは専用+汎用
汎用のものならどの言語でも作れる >>61
ワイの理由はおまえに関係ない。
使おうと思ったときに使う。
他人の実装を制限したがったりもそうやが、いちいち他人に干渉すな。
独裁者なの? > 独裁者なの?
そういやこの間も某所で見かけたんだけど
自分の意見を言いたいんだろうなって時に
質問形式にするのってあれなんなんだろ?
本当は「お前は独裁者だ!」っていいたんだろう?
なんで質問するの? >>68
いいや?
おまえは独裁者でないから。w
文意が読めないの? >>71
早くPerl依存なくしたいね
https://github.com/git/git
Languages
C 48.6%
Shell 36.7%
Perl 6.2%
Tcl 4.5%
Python 1.9%
Makefile 0.8%
Other 1.3% >>72
「なくしたい」?
おまえ、中の人なん?
だったらわかる。
でなければ、どういう意味? gitがCへの書き直しを進めてるのは割と有名
リリースノートにたまに記述がある プラグイン言語としてPythonが採用されるケースが多い
PerlはANSIビルド時代のサクラエディタでPerlScriptが使えた頃が最盛期かねぇ スクリプトでカスタマイズ可能にする時に、何か専用言語作ってもいいけど、
pythonそのまま使うのが一番楽だし喜ばれるからな >>74
>>73への回答なら、>>72の説明にはなっていないのだが。
Gitの方針が>>72の意思に関係あんの?
中の人でなければ、「なくしてほしい」「なくなってほしい」ならまだわかる。 >>73
遅いPerlをなくして速いCに置き換えたいだけだが?
その方が移植性も上がるし むしろGit for WindowsとStrawberryPerlを統合してmsys,make,gcc,git,perlを使えるスイートにしてほしい >>78
中の人なら、「置き換えたい」とかこんなところで愚痴ってないで、さっさと置き換えればよい。はよ。
外野なら、何様?自他の区別ができないの?まともに読み書きできないの?
せめて、「置き換えていただきたいです」くらい言え! Gitの開発方針としてPerl依存を無くしたいと考えていて、>>72がそれに同意してんのは別にいいだろうて
Perlスレで話す話じゃないだろが いまはwindowsで書くときvscode使ってるの? pythonがどこの現場でも使えるようになれば、今すぐ無くなってもいい perlがどこの現場でも使えるようになれば、今すぐ無くなってもいい 10年くらい前から言ってたし、多分10年後も言っていると思う 使ってる人が死なない限り、その人は使い続けるだろうからね shift-JISなんかなくなればいいのに
というのも同じ議論で、過去にshift-JISで書かれたテキストがあって、
それが存在している限り無くならない
新規にshift-JISで書く人は誰もいなくなってもずっと残る たわけた互換性破壊やしょうもない不具合が今後もほとんどないだろう。
と信頼されてる言語は数が少ないからな。
Rubyは全然論外だし、Pythonもまだそこまででは。 forkをthreadsに変更したけど、threads->createもたまーに失敗するんだな
Can't call method "tid" on an undefined value
で止まってた
即リトライでいいのか?
つか止まらんでくれよ バイナリを作成するためのMakefileを作成するためのCMakeLists.txtを作成するためのPerlスクリプトって需要ある? ツイッターのタイムラインで時々見かける有名人@dankogaiさんがPerlのEncodeモジュール作者であることを最近知ったバイナリ ツイッターのタイムラインで時々見かける有名人@dankogaiさんがPerlのEncodeモジュール作者であることを最近知ったバイナリを作成するためのMakefileを作成するためのCMakeLists.txtを作成するためのPerlスクリプトって需要ある? dankogaiがもう少しwindowsに詳しければ(ユーザーに優しければ)perlのencodeモジュールがもっと使いやすくなったのではと思う。
中途半端に頭が良いのは困ったものだ。 別のスレでパヨク扱いで晒されていて、何とも言えない気持ちになった バカか?
Nick Ing-Simmonsが亡くなったから弾子飼がメンテナンスを引き受けたんだよ >>95-97
以下んごたる信長の野望・全国版の方言に触発されてコロ助の音声出力モジュールを九州弁にEncodeしようとして失敗したバイナリ
https://pbs.twimg.com/media/EllLrByU8BQPCAn?format=jpg ファスト映画配信容疑で3人逮捕 | 共同通信
https://nordot.app/780292176086007808
Dan Kogai
https://twitter.com/dankogai/status/1407562029687181317
これ、勝手に縮めて勝手に配信して勝手に売上得るのはアウトだけど、
サブスクリプションで見放題のサービスでダイジェストするAIアドオンとかダメなのだろうか?
シン・エヴァのイントロみたく公式がやってる例さえあるし需要は大きい
山本一郎(Ichiro Yamamoto)
https://twitter.com/Ichiro_leadoff/status/1407562963431563267
駄目に決まってるだろ
https://twitter.com/5chan_nel (5ch newer account) windows updateしたらreaddirできなくなった 超おま環で、特定のディレクトリだけで起きる現象だった
再現性は100%なんだけど原因がさっぱり判らん ディレクトリエントリが壊れたんやろ。
SSDなら、機械的寿命到達のお知らせ? ファイルシステムが壊れただけでは?ディスクチェックすれば直おらんかな? H/Wが壊れかけの場合、chkdskを実行すると止めを刺すことになるかもね 必要なデータをバックアップした上でやればいいのさ
とどめさせば交換する気にもなるだろ while ($i <= $#array)
みたいなループの中で、
$array[$i + 2]
を参照すると、$#array が変わってしまって意図した条件でループを抜けない
どうしたもんか >>113
参照では変わらない
もし変わるなら参照する前に$iが範囲外か判定する
趣味でもstrictとワーニングの確認くらいはするけどね 範囲内をアクセスしてるうちは変わらない
範囲外をアクセスするとそのタイミングで自動で範囲を広げてしまうので変わってしまう 元のサイズを一旦変数に設定しておく
じゃだめなの? >>115
相手が>>113みたいなクソコードなんやからしゃあない。
範囲外要素の参照ならクラッシュするか配列自動拡張するかの究極二択なんやし。 >>115
もしかして実装による?と気を使って書いたけど、変わらねぇよ
perl -we "@array=(1,2); print qq($#array\n); print qq($array[10]\n); print qq($#array\n)"
1
Use of uninitialized value $array[10] in concatenation (.) or string at -e line 1.
1 $array[$i + 2]->{name}
みたいなのだと変わる Hash は読もうとしただけでも作られちゃうね。こういうことも起こる。
$ perl -MData::Dumper -e '$x{"a"}{"b"}; print Dumper(\%x);'
$VAR1 = {
'a' => {}
};
$ no autovivification できるんですね。勉強になりました。 no autovivificationがデフォルトだといいけど、それだと遅いんだろうな つまらん隔離スレ上げるより
下がってるスレで下げ進行の方が面白いぞ よその先進的な言語さんはそのへんどうなってるんだろう
初期化してないものを参照したらエラーで終了? 時代と思想やろ。
厳密さよりもおおらかさな言語。
Perlには例外もないしな。
die+evalで似たようなことはできるが、原因は特定できんし。 Rakuだとautovivificationは無くなってるよ
誰も知らないと思うけど Perlは$の文字入力がやたらと多くなるのが玉に瑕
$をShifitキー押下なしで入力できるキーボードが標準だったら、世間のPerlへの評価も違ったものになっていたと思う >>130
そこはシェルとかPHPもあるからそんなに問題ではないと思うけどな
文字列に変数埋め込みの時にもそのままかける利点もある
変数を視認しやすいから読む時はかなり便利だよ 予約語を区別しなくてよい利点も。
Cとかで予約語を識別子として書くとわけのわからないエラーになりがち。
シェルは逆に、組み込み変数が多すぎて混乱することもある。
Perlはほどほどでいい落としどころ。 どう見ても予約語なものを変数名にして、
それはそれで動くけどエディタが間違って色を付ける スクレイピングしたいんですけど何を勉強すればいいですか
不正アクセスに問われたりしないでしょうか?
セキュリティ対策はどのようなことに注意すればよいでしょうか? httpsでいきなり躓くので、新しい言語の方がいいのでは threads->create しながら detach しながら、
前のスレッドがdetachするちょっと前に次のスレッドを作って、
基本的には1つしか動いてない
みたいな動作のまま放置すると、そのうちスレッドの作成に失敗するようになる
オーバーラップさせようとしている期間だけ失敗して、前のスレッドが無くなると成功する
そのままさらに放置すると、スレッドが全く作成できなくなる
何かが溜まっていって上限に達してるように見えるけど、何か制約ある? %hash = { key => value };
みたいに書いてエラーになる原因は絶対pythonだ ハッシュにリファレンスを入れるとどうやって使うんだ?
別にエラーにはならないんだよな >>142
use warnings プラグマ指定されてると、Reference found where even-sized list expected at XXX.pl line YYY. みたいな警告が出るけど $item = $item[$i];
みたいな書き方してると、移植する時に困るな $item = $items[$i];
とか
foreach my $item (@items){
はよく見る。 $item{$key}だと思ったら、$item->{$key}で、
うっかり$itemも使って書き換える、というのが自分のバグ原因1位 0〜9と+-以外の文字が含まれている場合は入力制限としたい場合
my $data = "-23456";
if($data =~ /[^0-9+-]/){
print "入力制限";
}
とやっても入力制限になってしまいます
どうやればいいんですか? マイナス記号ってさ、 [] の中だと a-z と書いて a から z の意味にしてたりするじゃない。だから \- にしといた方が良いんだよ。
その例のように最後に使うなら大丈夫だろうけどね。
プラス記号に関しては [] の中だと任意の1文字の意味は消えてるように思うけど念のため \+ にしといた方が良いような気がする。(調べてない) 難しいこと考えず記号を全部エスケープしときゃいいんだよ
へたに救済ルールがあるせいで混乱する チェッカーにかけるとエスケープしなくていいものをエスケープしてると指摘される sed使うときは-Eオプション使うとマシになるよ
grepなんか-Pオプションなんてあるし grepは今でも普通に使う
perlより圧倒的に速い MINGW版のgrepは-Pオプション使えないんだよなあ うちのは使えるみたいだな
$ grep --version
GNU grep 2.5.4
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
$ grep --help | egrep '(-P|-o)'
-P, --perl-regexp PATTERN is a Perl regular expression
-b, --byte-offset print the byte offset with output lines
-o, --only-matching show only the part of a line matching PATTERN
-u, --unix-byte-offsets report offsets as if CRs were not there (MSDOS)
$ uname
MINGW32_NT-6.2 'grep' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。 MINGWではなくGit for Windows 2.35.1.2のMSYSに訂正
C:\Program Files\Git\usr\binにPATHを通している
>uname
MSYS_NT-10.0-19041
>grep --version
grep (GNU grep) 3.0
Copyright (C) 2017 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Mike Haertel and others, see <http://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>.
>grep -P foo
/usr/bin/grep: -P supports only unibyte and UTF-8 locales
以下、Chocolateyのgrepの場合
>grep --version
grep.exe (GNU grep) 3.7
Copyright (C) 2021 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Mike Haertel and others; see
<https://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>.
Patched by: Michael M. Builov <mbuilov@gmail.com>.
>grep -P foo
grep.exe: Perl matching not supported in a --disable-perl-regexp build 失礼
環境変数に LC_CTYPE=ja_JP.UTF-8がセットされてなかっただけらしい Chocolateyのgrepは環境変数に LC_CTYPE=ja_JP.UTF-8がセットされててもダメ
grep --helpコマンドで-Pオプション表示されるけど実際には使えない Git for Windowsのgrepはおまけみたいなもんやろ。
しゃあない。
Git以外も使うんならMSYS2にするべき。 部分マッチ情報とか付いた$_が任意のコードブロックに渡せるし普通にgrepより強い、perlっぽいし
ただし内部コマンドなのが玉に瑕
bashとかの非標準シェルを使ってるとpwsh -cにパイプや引数で渡す必要があるし、$_等のシェル変数使うから後で参照できねえ WSL2, Ubuntu 18.04 では、
grep --version
grep (GNU grep) 3.1
-P, --perl-regexp
PATTERN を Perl の正規表現として扱います。
きわめて実験的なものなので、
grep -P を使うと、その機能は実装されていません、という警告が出るかもしれません windows版だけの問題なのか?
gnu grepの-Pはもう少なくとも十年以上その表記
そもそもundocumentedだが、サブパターンのネスト、バックトラック切り、アサーション周りが怪しい
windows使ってるなら標準コマンドのselect-stringを使え
(?>)(?<=)(?<!)(?=)等表記も標準的
-r相当のオプションは無いけどgciがfind同等のコマンドだからパイプするのがイディオム(未テスト)
> get-childitem /some/where -recurse -depth 1 |select-string [-opts] "pat"
windowsでbash使ってるなら多分こんな感じになるだろう
bash$ perl -E 'say "@INC"; ' |pwsh -c '
$input -split " " |gci -r -d 1 -inc "*.pod" -exc "*delta*" |sls "^=head NAME"
'
汚なくて嫌ならperlを使え、そのためのPerlだ あ、最後のslsに -contextが抜けてた
sls -con 2 "..."でname - descrを表示する意図だった、念の為 薄めのORMない?小さめのスクリプトにはDBICいくらなんでも重すぎる 未だにpythonで
push array, value
とか書いてエラーになる
正しくは
array.append(value)
どうにも窮屈だな push = lambda a,v: a.append(v) lambdaに名付けるとリンタに怒られるんだっけか
push = list.append
push (array, value)
が多分真っ当でたぶん動く ■ このスレッドは過去ログ倉庫に格納されています