【古典的モダン】Perlについての質問箱 51箱目

■ このスレッドは過去ログ倉庫に格納されています
2021/05/26(水) 10:55:29.83ID:+WmbAELr
かつて一斉を風靡した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辺り
2022/02/14(月) 19:43:31.51ID:SjaA8f+R
'grep' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
163160
垢版 |
2022/02/14(月) 20:21:12.04ID:xbNILGkv
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
164160
垢版 |
2022/02/14(月) 20:33:42.00ID:xbNILGkv
失礼
環境変数に LC_CTYPE=ja_JP.UTF-8がセットされてなかっただけらしい
165160
垢版 |
2022/02/14(月) 20:39:16.14ID:xbNILGkv
Chocolateyのgrepは環境変数に LC_CTYPE=ja_JP.UTF-8がセットされててもダメ
grep --helpコマンドで-Pオプション表示されるけど実際には使えない
2022/02/14(月) 22:36:54.77ID:CumnTUFy
Git for Windowsのgrepはおまけみたいなもんやろ。
しゃあない。

Git以外も使うんならMSYS2にするべき。
2022/02/14(月) 22:38:38.84ID:SjaA8f+R
WSLでいい
2022/02/15(火) 08:43:15.81ID:5Cl7umfN
というかwinならsls使えるんでは
2022/02/15(火) 09:33:33.33ID:CMc47lH5
部分マッチ情報とか付いた$_が任意のコードブロックに渡せるし普通にgrepより強い、perlっぽいし

ただし内部コマンドなのが玉に瑕
bashとかの非標準シェルを使ってるとpwsh -cにパイプや引数で渡す必要があるし、$_等のシェル変数使うから後で参照できねえ
2022/02/15(火) 12:43:38.51ID:LH9Iimee
WSL2, Ubuntu 18.04 では、

grep --version
grep (GNU grep) 3.1

-P, --perl-regexp

PATTERN を Perl の正規表現として扱います。
きわめて実験的なものなので、
grep -P を使うと、その機能は実装されていません、という警告が出るかもしれません
2022/02/15(火) 14:44:11.29ID:ch4uHJq0
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だ
2022/02/15(火) 14:49:23.52ID:ch4uHJq0
あ、最後のslsに -contextが抜けてた
sls -con 2 "..."でname - descrを表示する意図だった、念の為
2022/02/15(火) 15:05:25.32ID:RAmS19mH
ずいぶんエラソーですね
2022/02/16(水) 03:32:34.88ID:Mkae6rZq
誰だか何となくワカタ
2022/02/16(水) 08:25:04.50ID:Kby4UhL4
ワロw
2022/02/23(水) 22:59:01.37ID:VOimcA5h
薄めのORMない?小さめのスクリプトにはDBICいくらなんでも重すぎる
2022/02/26(土) 11:08:00.76ID:0iPdwkze
Teng
2022/05/16(月) 21:11:45.65ID:XzOAdinb
あげ
2022/05/18(水) 23:59:05.74ID:Tv2EzwC/
未だにpythonで
push array, value
とか書いてエラーになる
正しくは
array.append(value)

どうにも窮屈だな
2022/05/19(木) 01:14:38.83ID:fIfBGhTn
push = lambda a,v: a.append(v)
2022/05/19(木) 01:18:01.10ID:fIfBGhTn
lambdaに名付けるとリンタに怒られるんだっけか
push = list.append
push (array, value)
が多分真っ当でたぶん動く
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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