かつて一斉を風靡した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についての質問箱 51箱目
■ このスレッドは過去ログ倉庫に格納されています
2021/05/26(水) 10:55:29.83ID:+WmbAELr
131デフォルトの名無しさん
2021/07/24(土) 15:05:42.54ID:4z9np1w1132デフォルトの名無しさん
2021/07/24(土) 18:15:48.35ID:PhK5xXRL 予約語を区別しなくてよい利点も。
Cとかで予約語を識別子として書くとわけのわからないエラーになりがち。
シェルは逆に、組み込み変数が多すぎて混乱することもある。
Perlはほどほどでいい落としどころ。
Cとかで予約語を識別子として書くとわけのわからないエラーになりがち。
シェルは逆に、組み込み変数が多すぎて混乱することもある。
Perlはほどほどでいい落としどころ。
133デフォルトの名無しさん
2021/07/24(土) 18:32:18.88ID:/ZN/8jbh どう見ても予約語なものを変数名にして、
それはそれで動くけどエディタが間違って色を付ける
それはそれで動くけどエディタが間違って色を付ける
134デフォルトの名無しさん
2021/07/24(土) 20:03:42.01ID:6vSsav6r >>133
それはエディタが悪い
それはエディタが悪い
135デフォルトの名無しさん
2021/07/24(土) 20:10:49.65ID:/ZN/8jbh 正規表現の色付けもよく間違う
136デフォルトの名無しさん
2021/07/30(金) 18:20:35.62ID:7AkGA5GJ スクレイピングしたいんですけど何を勉強すればいいですか
不正アクセスに問われたりしないでしょうか?
セキュリティ対策はどのようなことに注意すればよいでしょうか?
不正アクセスに問われたりしないでしょうか?
セキュリティ対策はどのようなことに注意すればよいでしょうか?
137デフォルトの名無しさん
2021/07/30(金) 19:00:06.70ID:eS54QcXE httpsでいきなり躓くので、新しい言語の方がいいのでは
138デフォルトの名無しさん
2021/07/30(金) 22:05:38.04ID:e1ZnWCW5 >>136
ほぼ禁止してると思うよ
ほぼ禁止してると思うよ
139デフォルトの名無しさん
2021/08/31(火) 19:26:38.99ID:MCrZ+tU7 threads->create しながら detach しながら、
前のスレッドがdetachするちょっと前に次のスレッドを作って、
基本的には1つしか動いてない
みたいな動作のまま放置すると、そのうちスレッドの作成に失敗するようになる
オーバーラップさせようとしている期間だけ失敗して、前のスレッドが無くなると成功する
そのままさらに放置すると、スレッドが全く作成できなくなる
何かが溜まっていって上限に達してるように見えるけど、何か制約ある?
前のスレッドがdetachするちょっと前に次のスレッドを作って、
基本的には1つしか動いてない
みたいな動作のまま放置すると、そのうちスレッドの作成に失敗するようになる
オーバーラップさせようとしている期間だけ失敗して、前のスレッドが無くなると成功する
そのままさらに放置すると、スレッドが全く作成できなくなる
何かが溜まっていって上限に達してるように見えるけど、何か制約ある?
140デフォルトの名無しさん
2021/10/27(水) 12:06:56.11ID:DyIbl0xH %hash = { key => value };
みたいに書いてエラーになる原因は絶対pythonだ
みたいに書いてエラーになる原因は絶対pythonだ
141デフォルトの名無しさん
2021/11/02(火) 20:15:13.69ID:U4IKz2Wy それって参照ですよね?
142デフォルトの名無しさん
2021/11/02(火) 20:54:35.41ID:xUGStZM6 ハッシュにリファレンスを入れるとどうやって使うんだ?
別にエラーにはならないんだよな
別にエラーにはならないんだよな
143デフォルトの名無しさん
2021/11/03(水) 16:03:42.69ID:554LNcID >>142
use warnings プラグマ指定されてると、Reference found where even-sized list expected at XXX.pl line YYY. みたいな警告が出るけど
use warnings プラグマ指定されてると、Reference found where even-sized list expected at XXX.pl line YYY. みたいな警告が出るけど
144デフォルトの名無しさん
2021/12/07(火) 17:41:22.93ID:Jl0mhXXA $item = $item[$i];
みたいな書き方してると、移植する時に困るな
みたいな書き方してると、移植する時に困るな
145デフォルトの名無しさん
2021/12/07(火) 21:30:11.79ID:T0uVfeKL @itemsやね
146デフォルトの名無しさん
2021/12/07(火) 21:39:19.02ID:Jl0mhXXA さらに$item{$key}もいる
147デフォルトの名無しさん
2021/12/08(水) 02:33:21.38ID:gZ1PVCfG $item = $items[$i];
とか
foreach my $item (@items){
はよく見る。
とか
foreach my $item (@items){
はよく見る。
148デフォルトの名無しさん
2021/12/08(水) 08:57:19.95ID:5HATgl/c $item{$key}だと思ったら、$item->{$key}で、
うっかり$itemも使って書き換える、というのが自分のバグ原因1位
うっかり$itemも使って書き換える、というのが自分のバグ原因1位
149デフォルトの名無しさん
2022/01/03(月) 14:11:28.15ID:dazlCfaS 0〜9と+-以外の文字が含まれている場合は入力制限としたい場合
my $data = "-23456";
if($data =~ /[^0-9+-]/){
print "入力制限";
}
とやっても入力制限になってしまいます
どうやればいいんですか?
my $data = "-23456";
if($data =~ /[^0-9+-]/){
print "入力制限";
}
とやっても入力制限になってしまいます
どうやればいいんですか?
150デフォルトの名無しさん
2022/01/03(月) 14:28:13.30ID:dazlCfaS 149だけどこれでよかったです。
解決しました
解決しました
151デフォルトの名無しさん
2022/01/04(火) 00:39:15.19ID:A3JfSOSv マイナス記号ってさ、 [] の中だと a-z と書いて a から z の意味にしてたりするじゃない。だから \- にしといた方が良いんだよ。
その例のように最後に使うなら大丈夫だろうけどね。
プラス記号に関しては [] の中だと任意の1文字の意味は消えてるように思うけど念のため \+ にしといた方が良いような気がする。(調べてない)
その例のように最後に使うなら大丈夫だろうけどね。
プラス記号に関しては [] の中だと任意の1文字の意味は消えてるように思うけど念のため \+ にしといた方が良いような気がする。(調べてない)
152デフォルトの名無しさん
2022/01/04(火) 00:46:20.99ID:4cEZtgLZ 難しいこと考えず記号を全部エスケープしときゃいいんだよ
へたに救済ルールがあるせいで混乱する
へたに救済ルールがあるせいで混乱する
153デフォルトの名無しさん
2022/01/04(火) 14:31:56.40ID:3tVRYKmq チェッカーにかけるとエスケープしなくていいものをエスケープしてると指摘される
154デフォルトの名無しさん
2022/01/04(火) 15:57:51.97ID:GepGyN7D Perlに慣れすぎると、Sedとかで事故りがち。
155デフォルトの名無しさん
2022/02/12(土) 12:48:37.74ID:93miCQ0j sedに戻る必要とかあるの?
156デフォルトの名無しさん
2022/02/12(土) 23:03:57.39ID:0bMK8p7w あるときもある。
157デフォルトの名無しさん
2022/02/13(日) 00:17:15.83ID:zkxSitr3 最新言語から見ればsedもperlも同じ
158デフォルトの名無しさん
2022/02/13(日) 11:34:49.61ID:WhYN9s0d sed使うときは-Eオプション使うとマシになるよ
grepなんか-Pオプションなんてあるし
grepなんか-Pオプションなんてあるし
159デフォルトの名無しさん
2022/02/13(日) 11:42:02.90ID:zkxSitr3 grepは今でも普通に使う
perlより圧倒的に速い
perlより圧倒的に速い
160デフォルトの名無しさん
2022/02/13(日) 12:48:15.74ID:4VAZuwGn MINGW版のgrepは-Pオプション使えないんだよなあ
161デフォルトの名無しさん
2022/02/14(月) 18:49:00.35ID:kp1rSO4P うちのは使えるみたいだな
$ 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 --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
162デフォルトの名無しさん
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
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がセットされてなかっただけらしい
環境変数に 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オプション表示されるけど実際には使えない
grep --helpコマンドで-Pオプション表示されるけど実際には使えない
166デフォルトの名無しさん
2022/02/14(月) 22:36:54.77ID:CumnTUFy Git for Windowsのgrepはおまけみたいなもんやろ。
しゃあない。
Git以外も使うんならMSYS2にするべき。
しゃあない。
Git以外も使うんならMSYS2にするべき。
167デフォルトの名無しさん
2022/02/14(月) 22:38:38.84ID:SjaA8f+R WSLでいい
168デフォルトの名無しさん
2022/02/15(火) 08:43:15.81ID:5Cl7umfN というかwinならsls使えるんでは
169デフォルトの名無しさん
2022/02/15(火) 09:33:33.33ID:CMc47lH5 部分マッチ情報とか付いた$_が任意のコードブロックに渡せるし普通にgrepより強い、perlっぽいし
ただし内部コマンドなのが玉に瑕
bashとかの非標準シェルを使ってるとpwsh -cにパイプや引数で渡す必要があるし、$_等のシェル変数使うから後で参照できねえ
ただし内部コマンドなのが玉に瑕
bashとかの非標準シェルを使ってるとpwsh -cにパイプや引数で渡す必要があるし、$_等のシェル変数使うから後で参照できねえ
170デフォルトの名無しさん
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 を使うと、その機能は実装されていません、という警告が出るかもしれません
grep --version
grep (GNU grep) 3.1
-P, --perl-regexp
PATTERN を Perl の正規表現として扱います。
きわめて実験的なものなので、
grep -P を使うと、その機能は実装されていません、という警告が出るかもしれません
171デフォルトの名無しさん
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だ
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だ
172デフォルトの名無しさん
2022/02/15(火) 14:49:23.52ID:ch4uHJq0 あ、最後のslsに -contextが抜けてた
sls -con 2 "..."でname - descrを表示する意図だった、念の為
sls -con 2 "..."でname - descrを表示する意図だった、念の為
173デフォルトの名無しさん
2022/02/15(火) 15:05:25.32ID:RAmS19mH ずいぶんエラソーですね
174デフォルトの名無しさん
2022/02/16(水) 03:32:34.88ID:Mkae6rZq 誰だか何となくワカタ
175デフォルトの名無しさん
2022/02/16(水) 08:25:04.50ID:Kby4UhL4 ワロw
176デフォルトの名無しさん
2022/02/23(水) 22:59:01.37ID:VOimcA5h 薄めのORMない?小さめのスクリプトにはDBICいくらなんでも重すぎる
177デフォルトの名無しさん
2022/02/26(土) 11:08:00.76ID:0iPdwkze Teng
178デフォルトの名無しさん
2022/05/16(月) 21:11:45.65ID:XzOAdinb あげ
179デフォルトの名無しさん
2022/05/18(水) 23:59:05.74ID:Tv2EzwC/ 未だにpythonで
push array, value
とか書いてエラーになる
正しくは
array.append(value)
どうにも窮屈だな
push array, value
とか書いてエラーになる
正しくは
array.append(value)
どうにも窮屈だな
180デフォルトの名無しさん
2022/05/19(木) 01:14:38.83ID:fIfBGhTn push = lambda a,v: a.append(v)
181デフォルトの名無しさん
2022/05/19(木) 01:18:01.10ID:fIfBGhTn lambdaに名付けるとリンタに怒られるんだっけか
push = list.append
push (array, value)
が多分真っ当でたぶん動く
push = list.append
push (array, value)
が多分真っ当でたぶん動く
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 ★2 [蚤の市★]
- 米大統領報道官「日本と強固な同盟維持、中国とも協力」 [少考さん★]
- JA全農が「新おこめ券」…来年9月末の有効期限を新設、必要経費のみ上乗せ ★2 [蚤の市★]
- ミス・ユニバース フィンランド代表の「つり目」写真が波紋… 本人釈明も批判やまず 協会謝罪「徹底的に検証」へ [冬月記者★]
- 【テレビ】粗品「THE W」バッサリ「おもんない、レベル低い」審査員就任で「日テレが“血の海”に…」 [湛然★]
- 1人3千円の食品高騰対策、何に使える? あいまいなまま衆院通過 [蚤の市★]
- 助けてくれ!!いま電車だがウンコ漏れそう!!!!
- 【悲報】維新の政治資金でガールズバー、高市首相「良いか悪いかは国民の皆さまが判断されること」 [115996789]
- お前ら「冬のボーナス」なんぼだった?
- 中国人、ガチ超正論。「日本人がアイヌに対してやったことを『問題ない』とするなら、中国が日本人に同じことをしても文句ないだろう?」 [314039747]
- 【朗報】井端監督、侍ジャパンで岡本村上の一塁三塁構想を発表WWWWWWWWWWWWWWWWWWWWWWW
- 【悲報】女性「スタバで癒やされに来たのに、小汚いおっさんがいたあ!!😭」 [769050516]
