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)
▼前スレ
Perlについての質問箱 61箱目
http://toro.2ch.net/test/read.cgi/tech/1381561905/
Perlについての質問箱 62箱目
http://toro.2ch.net/test/read.cgi/tech/1385039352/
探検
Perlについての質問箱 63箱目
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2014/02/19(水) 23:36:23.29754デフォルトの名無しさん
2017/06/16(金) 07:59:43.13ID:ULLUKZU9 >>753
それはcase文の文字で状態遷移してるのと等価
"があったら文字列の中の状態
/があったらコメント開始の1文字目の状態
モジュールを使ったのがネットにあったから使ってみたけど
期待と違ったから自作した
それはcase文の文字で状態遷移してるのと等価
"があったら文字列の中の状態
/があったらコメント開始の1文字目の状態
モジュールを使ったのがネットにあったから使ってみたけど
期待と違ったから自作した
755デフォルトの名無しさん
2017/06/16(金) 08:02:46.40ID:ULLUKZU9756デフォルトの名無しさん
2017/06/23(金) 23:36:24.65ID:jQG6z3fn ネストしたブロックを正規表現でとりたくてperlreにある再帰パターンというのつかおうとしているですが(?>[^()]+)の部分うまくかきかえられません。
loop〜end loopの形にしたいのですが、 (?!)の使い方がわるいのかヒットしないorz
loop〜end loopの形にしたいのですが、 (?!)の使い方がわるいのかヒットしないorz
757デフォルトの名無しさん
2017/06/26(月) 23:50:27.94ID:zIACp4Pg (?>¥b(?!end loop|loop)で行けました。
ヒットしなかったのは再帰始まりのloopと干渉していたらしく、始まりをちゃんと書いたら動きました。
ヒットしなかったのは再帰始まりのloopと干渉していたらしく、始まりをちゃんと書いたら動きました。
758デフォルトの名無しさん
2017/06/28(水) 23:50:10.85ID:eZnf2YJC FW使わずにpsgi/slackを使おうとしてて、モジュールの名前と言うか場所に悩んでます(´・ω・`)
pathがperl -I /hoge/lib/として、
/hoge/lib/Controller.pmみたいのを置きたいけど名前被りが嫌なので避けるための手法として
/hoge/lib/myController.pmとか
/hoge/lib/MyApp/Controller.pmとかあると思うんですが
perlでこういう場合の命名規則?というかお約束みたいな名前ってあるんでしょうか。
/hoge/lib/作ってるサイトのドメイン/Controller.pm
みたいにしようと思ったけど、
use 作ってるサイトのドメイン::Controller.pm
こんなの使いまわし効かなさすぎて嫌すぎる
pathがperl -I /hoge/lib/として、
/hoge/lib/Controller.pmみたいのを置きたいけど名前被りが嫌なので避けるための手法として
/hoge/lib/myController.pmとか
/hoge/lib/MyApp/Controller.pmとかあると思うんですが
perlでこういう場合の命名規則?というかお約束みたいな名前ってあるんでしょうか。
/hoge/lib/作ってるサイトのドメイン/Controller.pm
みたいにしようと思ったけど、
use 作ってるサイトのドメイン::Controller.pm
こんなの使いまわし効かなさすぎて嫌すぎる
759デフォルトの名無しさん
2017/06/29(木) 06:52:20.07ID:jqMU9B7T お約束はない。
>こんなの使いまわし効かなさすぎて嫌すぎる
ん?
スクリプト内で動的に変更したいとか、そこらへん?
じゃなきゃ普通に use XXXX::Controller で作っちゃうけど?
あとは、物理的にパス切らない。くらいだよね?
$ cat Hoge.pm
package Hoge::Foo;
sub hoge{ "hoge" }
1 ;
$ perl -MHoge -le 'print Hoge::Foo::hoge'
myController.pm 一個作って、中で切り分けちゃえば?
>こんなの使いまわし効かなさすぎて嫌すぎる
ん?
スクリプト内で動的に変更したいとか、そこらへん?
じゃなきゃ普通に use XXXX::Controller で作っちゃうけど?
あとは、物理的にパス切らない。くらいだよね?
$ cat Hoge.pm
package Hoge::Foo;
sub hoge{ "hoge" }
1 ;
$ perl -MHoge -le 'print Hoge::Foo::hoge'
myController.pm 一個作って、中で切り分けちゃえば?
760デフォルトの名無しさん
2017/06/29(木) 15:18:22.72ID:/7f1HAmp どもです。
URLで言うexample.comみたいな不可侵領域?的なのが無いのかなぁと思った感じでした。
URLで言うexample.comみたいな不可侵領域?的なのが無いのかなぁと思った感じでした。
761デフォルトの名無しさん
2017/06/29(木) 17:00:57.00ID:sULhhpBu762デフォルトの名無しさん
2017/06/29(木) 17:25:38.71ID:/7f1HAmp >>761
> もしプライベートな内部やプロジェクト固有の用途のために開発中のモジュールが 決して公開されることがないなら、
> 将来の公開モジュールと名前が 衝突しないことを確実にしてください。
> これは、予約済みの Local::* カテゴリを使うか、 Foo_Corp::* のように 名前にした戦を含めることで行えます。
これだあああ
戦ってのが謎ですが、Localディレクトリに入れることにします。
ありがとうございます!
> もしプライベートな内部やプロジェクト固有の用途のために開発中のモジュールが 決して公開されることがないなら、
> 将来の公開モジュールと名前が 衝突しないことを確実にしてください。
> これは、予約済みの Local::* カテゴリを使うか、 Foo_Corp::* のように 名前にした戦を含めることで行えます。
これだあああ
戦ってのが謎ですが、Localディレクトリに入れることにします。
ありがとうございます!
763デフォルトの名無しさん
2017/06/29(木) 17:51:43.29ID:MlIjnXqh たぶん「した戦」→「下線」アンダーラインのことかと
> Foo_Corp::* のように 名前に下線を含めることで
> Foo_Corp::* のように 名前に下線を含めることで
764デフォルトの名無しさん
2017/06/29(木) 18:03:16.93ID:/7f1HAmp なるほど…
ちゃんと訳した上で漢字を変な読み方した状態でのタイポとはw
ちゃんと訳した上で漢字を変な読み方した状態でのタイポとはw
765デフォルトの名無しさん
2017/06/30(金) 20:59:30.86ID:O3ckt/Q4 今とあるスクリプトを見たら
1 while(s/[\012\015]$//);
こんなん書いてあったんだけど、
たぶん改行とおぼしきものは全部消すってことだと思うんだけど、
いらんもんまで消しすぎたりしてない?
1 while(s/[\012\015]$//);
こんなん書いてあったんだけど、
たぶん改行とおぼしきものは全部消すってことだと思うんだけど、
いらんもんまで消しすぎたりしてない?
766デフォルトの名無しさん
2017/06/30(金) 21:30:32.10ID:nK8Rv+fa スカラー末の改行(の連続)を外す。
スカラー内の改行は外さない。
作者の意図通りに、余分なものは消さないと思うよ。
普通に、s/[¥012¥015]$//g ; すりゃいいと思うけど、、、
スカラー内の改行は外さない。
作者の意図通りに、余分なものは消さないと思うよ。
普通に、s/[¥012¥015]$//g ; すりゃいいと思うけど、、、
767デフォルトの名無しさん
2017/06/30(金) 23:49:28.02ID:5o89YkXB スカラー?
768デフォルトの名無しさん
2017/07/01(土) 06:06:23.31ID:756r6lLe whileとgは同じじゃない
769デフォルトの名無しさん
2017/07/01(土) 06:27:43.88ID:756r6lLe 文字の末尾が012か015だったら消すんじゃない?
文字コードもわからないけど
文字コードもわからないけど
770デフォルトの名無しさん
2017/07/01(土) 06:43:42.49ID:LXXRZ/Ka 動作は >>769 の通りだと思うけど
1 while が意味不明だな
1 while が意味不明だな
771デフォルトの名無しさん
2017/07/01(土) 06:50:18.42ID:756r6lLe while 1 はマニュアルにも記載されてる基本的な手法
条件だけで実行が完了する
条件だけで実行が完了する
772デフォルトの名無しさん
2017/07/01(土) 09:11:09.64ID:vTsOeFgm もっとくやしく
773デフォルトの名無しさん
2017/07/01(土) 09:24:13.31ID:B+Q6GXxH 1は無視していいよ
774デフォルトの名無しさん
2017/07/01(土) 10:05:39.83ID:756r6lLe 勉強し始めて1日で覚えるようなことを全然分からんようなやつが回答者ぶってるのかよ
775デフォルトの名無しさん
2017/07/01(土) 10:10:49.16ID:756r6lLe とりあえず一通り調べたけど、末尾に改行を使う文字コードはなかったから、
1 while(s/[\012\015]$//);
これは本当に改行を削除したいならあらゆる方法の中で最善だと思われる
本当にかたっぱしから消したいのなら、だけど…
1 while(s/[\012\015]$//);
これは本当に改行を削除したいならあらゆる方法の中で最善だと思われる
本当にかたっぱしから消したいのなら、だけど…
776デフォルトの名無しさん
2017/07/01(土) 10:11:51.33ID:756r6lLe と言うより $ が自動でその判定してるから、関係ないものは消えないはずなんだよね
777デフォルトの名無しさん
2017/07/01(土) 11:23:51.39ID:EnayukTL 取り敢えず、ベンチマーク。
$ cat bench.pl
#!/usr/bin/perl
use Benchmark qw( cmpthese timethese ) ;
my $f = +( "42¥r¥n" x 1000 ) . +( "¥r¥n" x 10000 ) ;
sub _gm { my $f2 = $f ; $f2 =~ s/[¥012¥015]$//gm ; }
sub _while { my $f2 = $f ; 1 while $f2 =~ s/[¥012¥015]$// ; }
cmpthese(timethese (undef, {
while => '_while',
gm => '_gm',
})) ;
$ perl bench.pl
Benchmark: running gm, while for at least 3 CPU seconds...
gm: 3 wallclock secs ( 3.36 usr + 0.01 sys = 3.37 CPU) @ 356.68/s (n=1202)
while: 3 wallclock secs ( 3.06 usr + 0.00 sys = 3.06 CPU) @ 152.94/s (n=468)
Rate while gm
while 153/s -- -57%
gm 357/s 133% --
$ cat bench.pl
#!/usr/bin/perl
use Benchmark qw( cmpthese timethese ) ;
my $f = +( "42¥r¥n" x 1000 ) . +( "¥r¥n" x 10000 ) ;
sub _gm { my $f2 = $f ; $f2 =~ s/[¥012¥015]$//gm ; }
sub _while { my $f2 = $f ; 1 while $f2 =~ s/[¥012¥015]$// ; }
cmpthese(timethese (undef, {
while => '_while',
gm => '_gm',
})) ;
$ perl bench.pl
Benchmark: running gm, while for at least 3 CPU seconds...
gm: 3 wallclock secs ( 3.36 usr + 0.01 sys = 3.37 CPU) @ 356.68/s (n=1202)
while: 3 wallclock secs ( 3.06 usr + 0.00 sys = 3.06 CPU) @ 152.94/s (n=468)
Rate while gm
while 153/s -- -57%
gm 357/s 133% --
778デフォルトの名無しさん
2017/07/01(土) 11:26:08.99ID:EnayukTL あ、単純に変数最後の CRLF 削りたいだけなら、比べ物にならん程
chomp の方が早い。
local $/ = “¥r¥n” ;
chomp $_ ;
chomp の方が早い。
local $/ = “¥r¥n” ;
chomp $_ ;
779デフォルトの名無しさん
2017/07/01(土) 12:14:31.52ID:B+Q6GXxH ActivePerlとCygwinの両方で動くようにしようと思うと、chomp使えないんだよな
780デフォルトの名無しさん
2017/07/01(土) 12:31:21.77ID:EnayukTL ん?
どっちが悪いか知らんが、
local $/ = “¥012¥015” ;
も効かんの?
どっちが悪いか知らんが、
local $/ = “¥012¥015” ;
も効かんの?
781デフォルトの名無しさん
2017/07/01(土) 12:36:32.24ID:756r6lLe \rだの\nだの使ってることに神経を疑っちまうぜ
と言うかutf8にさえ文字とみなされない文字を使ってる時点で…
ところで以下の3つは全部挙動が違いので並列にベンチとっても無意味
chomp;
s/[\012\015]$//gm;
1 while(s/[\012\015]$//);
特に真ん中のは色々とひどいことになると予想した
と言うかutf8にさえ文字とみなされない文字を使ってる時点で…
ところで以下の3つは全部挙動が違いので並列にベンチとっても無意味
chomp;
s/[\012\015]$//gm;
1 while(s/[\012\015]$//);
特に真ん中のは色々とひどいことになると予想した
782デフォルトの名無しさん
2017/07/01(土) 12:40:25.72ID:756r6lLe >>780
I/Oと言うのはその名の通りIとOがあってだな
I/Oと言うのはその名の通りIとOがあってだな
783デフォルトの名無しさん
2017/07/01(土) 12:48:39.37ID:EnayukTL >>781
ご指摘の通り俺が間違ってたわ。
chomp が違うのは同意
#!/usr/bin/perl
use Benchmark qw( cmpthese timethese ) ;
my $f = +( "42¥012¥015" x 1000 ) . +( “¥012¥015" x 10000 ) ;
sub _gms { my $f2 = $f ; $f2 =~ s/[¥012¥015]$//gms ; }
sub _while { my $f2 = $f ; 1 while $f2 =~ s/[¥012¥015]$// ; }
cmpthese(timethese (undef, {
while => '_while',
gms => '_gms',
})) ;
Benchmark: running gms, while for at least 3 CPU seconds...
gms: 4 wallclock secs ( 3.24 usr + 0.03 sys = 3.27 CPU) @ 391.13/s (n=1279)
while: 3 wallclock secs ( 3.01 usr + 0.03 sys = 3.04 CPU) @ 155.26/s (n=472)
Rate while gms
while 155/s -- -60%
gms 391/s 152% --
ご指摘の通り俺が間違ってたわ。
chomp が違うのは同意
#!/usr/bin/perl
use Benchmark qw( cmpthese timethese ) ;
my $f = +( "42¥012¥015" x 1000 ) . +( “¥012¥015" x 10000 ) ;
sub _gms { my $f2 = $f ; $f2 =~ s/[¥012¥015]$//gms ; }
sub _while { my $f2 = $f ; 1 while $f2 =~ s/[¥012¥015]$// ; }
cmpthese(timethese (undef, {
while => '_while',
gms => '_gms',
})) ;
Benchmark: running gms, while for at least 3 CPU seconds...
gms: 4 wallclock secs ( 3.24 usr + 0.03 sys = 3.27 CPU) @ 391.13/s (n=1279)
while: 3 wallclock secs ( 3.01 usr + 0.03 sys = 3.04 CPU) @ 155.26/s (n=472)
Rate while gms
while 155/s -- -60%
gms 391/s 152% --
784デフォルトの名無しさん
2017/07/01(土) 12:51:34.83ID:EnayukTL >>783 は上手く動いてねーw
すまん。全面的の俺のレスは脳内から消してくれ。
すまん。全面的の俺のレスは脳内から消してくれ。
785デフォルトの名無しさん
2017/07/01(土) 13:05:38.92ID:EnayukTL786デフォルトの名無しさん
2017/07/01(土) 15:21:02.94ID:iaxNT7Vw しかしなんで8進数?
これが普通なの?
これが普通なの?
787デフォルトの名無しさん
2017/07/01(土) 20:55:02.68ID:LXXRZ/Ka うーん いくら考えても 1 while() と書いてる意味がわからん
gオプションついてないから while の意味ないし
結果知りたいなら s/// の値を直で調べりゃ済む話だし
何故なんだ 誰か教えてください
gオプションついてないから while の意味ないし
結果知りたいなら s/// の値を直で調べりゃ済む話だし
何故なんだ 誰か教えてください
788デフォルトの名無しさん
2017/07/02(日) 02:22:16.04ID:ucaUnn+J 量指定子の存在しない世界線なのか。
#!/usr/bin/perl -w
use strict;
sub hd { print '[', join(' ', map uc unpack('H2', $_), split //, $_[0]), "]\n" }
my($lf, $cr, $n) = ("\012", "\015", "\n");
my $str = "$n$cr$lf$lf${cr}1${cr}2${lf}3$cr${lf}4${n}5$n$cr$lf$lf$cr$n";
$_ = $str; 1 while s/[\012\015]$//; hd($_);
($_ = $str) =~ s/[\012\015]$//g; hd($_);
($_ = $str) =~ s/[\012\015]+$//; hd($_);
__END__
なお改行が \015 でも \012 でもそれらの組み合わせでもない環境があるので、
$ と \Z と \z の意味するところは元のコードが使われていた環境に依存する。
http://perldoc.jp/docs/perl/perlport.pod#Newlines
#!/usr/bin/perl -w
use strict;
sub hd { print '[', join(' ', map uc unpack('H2', $_), split //, $_[0]), "]\n" }
my($lf, $cr, $n) = ("\012", "\015", "\n");
my $str = "$n$cr$lf$lf${cr}1${cr}2${lf}3$cr${lf}4${n}5$n$cr$lf$lf$cr$n";
$_ = $str; 1 while s/[\012\015]$//; hd($_);
($_ = $str) =~ s/[\012\015]$//g; hd($_);
($_ = $str) =~ s/[\012\015]+$//; hd($_);
__END__
なお改行が \015 でも \012 でもそれらの組み合わせでもない環境があるので、
$ と \Z と \z の意味するところは元のコードが使われていた環境に依存する。
http://perldoc.jp/docs/perl/perlport.pod#Newlines
789デフォルトの名無しさん
2017/07/02(日) 08:10:30.13ID:cmIXSukt ありがとう すごくよくわかった
1 whileの挙動をなにか勘違いしていたみたい
そしてベンチマーク取ってみたら
1 while s/[\012\015]$//; よりも while(s/[\012\015]$//){} の方が微妙に速かった
(すごく微妙なんだが 毎回1を評価しないでいい分の差??)
そして s/[\012\015]+$//; は1桁近く遅かった そうだったんだ…
1 whileの挙動をなにか勘違いしていたみたい
そしてベンチマーク取ってみたら
1 while s/[\012\015]$//; よりも while(s/[\012\015]$//){} の方が微妙に速かった
(すごく微妙なんだが 毎回1を評価しないでいい分の差??)
そして s/[\012\015]+$//; は1桁近く遅かった そうだったんだ…
790デフォルトの名無しさん
2017/07/02(日) 12:35:43.14ID:9IiniyIy オレ速度はあまり気にしないから、いつも素直に s/(?:¥r?¥n)+$//; の感じだな。
¥b入れた方がいいのかもしれないけれど入れたことはない。
$とって、gつければ、改行全部きえるはずだよ。
(行単位に分離されてそうだけど。。。)
¥b入れた方がいいのかもしれないけれど入れたことはない。
$とって、gつければ、改行全部きえるはずだよ。
(行単位に分離されてそうだけど。。。)
791デフォルトの名無しさん
2017/07/02(日) 14:53:25.87ID:ucaUnn+J >>789
一体どんな計り方をしたんだ。
http://perldoc.jp/docs/perl/perlperf.pod
http://perldoc.jp/docs/perl/perlcompile.pod#The32Decompiling32Back32End
#!/usr/bin/perl -w
use strict;
use Benchmark qw(cmpthese);
my($lf, $cr, $n) = ("\012", "\015", "\n");
for my $str ("$n$cr$lf$lf${cr}1${cr}2${lf}3$cr${lf}4${n}5$n$cr$lf$lf$cr$n", "abc$n", 'abc') {
cmpthese(-5, {
ws => sub { $_ = $str; 1 while s/[\012\015]$//; 1 },
wb => sub { $_ = $str; while (s/[\012\015]$//) {} 1 },
qu => sub { $_ = $str; s/[\012\015]+$//; 1 },
});
print "\n";
}
__END__
これぐらいシンプルな正規表現なら
エンジン内でのバックトラック >> 文自体の反復 >= ループ構造
文字列内に [\012\015] にマッチする文字があればあるほど qu の方が速くなる。
一体どんな計り方をしたんだ。
http://perldoc.jp/docs/perl/perlperf.pod
http://perldoc.jp/docs/perl/perlcompile.pod#The32Decompiling32Back32End
#!/usr/bin/perl -w
use strict;
use Benchmark qw(cmpthese);
my($lf, $cr, $n) = ("\012", "\015", "\n");
for my $str ("$n$cr$lf$lf${cr}1${cr}2${lf}3$cr${lf}4${n}5$n$cr$lf$lf$cr$n", "abc$n", 'abc') {
cmpthese(-5, {
ws => sub { $_ = $str; 1 while s/[\012\015]$//; 1 },
wb => sub { $_ = $str; while (s/[\012\015]$//) {} 1 },
qu => sub { $_ = $str; s/[\012\015]+$//; 1 },
});
print "\n";
}
__END__
これぐらいシンプルな正規表現なら
エンジン内でのバックトラック >> 文自体の反復 >= ループ構造
文字列内に [\012\015] にマッチする文字があればあるほど qu の方が速くなる。
792デフォルトの名無しさん
2017/07/02(日) 17:06:13.22ID:cmIXSukt こんな計り方↓
#!/usr/bin/perl
use strict;
use warnings;
use Benchmark qw/:all/;
my ($lf, $cr, $n) = ("\012", "\015", "\n");
my $str = "$n$cr$lf$lf${cr}1${cr}2${lf}3$cr${lf}4${n}5$n$cr$lf$lf$cr$n" x 100;
cmpthese -5, {
'1while' => sub {$_ = $str; 1 while s/[\012\015]$//;},
'1while_g' => sub {$_ = $str; 1 while s/[\012\015]$//g;},
quantifier => sub {$_ = $str; s/[\012\015]+$//;},
while_g => sub {$_ = $str; while (s/[\012\015]$//g){};},
while => sub {$_ = $str; while (s/[\012\015]$//){};},
};
__END__
同じwhileでもgオプションつけると微妙に速くなる
面白い
#!/usr/bin/perl
use strict;
use warnings;
use Benchmark qw/:all/;
my ($lf, $cr, $n) = ("\012", "\015", "\n");
my $str = "$n$cr$lf$lf${cr}1${cr}2${lf}3$cr${lf}4${n}5$n$cr$lf$lf$cr$n" x 100;
cmpthese -5, {
'1while' => sub {$_ = $str; 1 while s/[\012\015]$//;},
'1while_g' => sub {$_ = $str; 1 while s/[\012\015]$//g;},
quantifier => sub {$_ = $str; s/[\012\015]+$//;},
while_g => sub {$_ = $str; while (s/[\012\015]$//g){};},
while => sub {$_ = $str; while (s/[\012\015]$//){};},
};
__END__
同じwhileでもgオプションつけると微妙に速くなる
面白い
793デフォルトの名無しさん
2017/07/03(月) 04:18:38.68ID:7bJtUMTI >>792
自分の感覚と真逆の結果なんで -Mre=debug して調べたら、 [\012\015]$ だと
固定長だからエンジンが動作を最適化して最初から末尾しかみないんだな。
だから文字列自体が長くなると逆転が起こると。勉強になったよ。
#!/usr/bin/perl -w
use strict;
use Benchmark qw(cmpthese);
my $n = "\015\012";
my $sa = $n x 500; # 全文字にマッチ
my $sf = ($n x 250) . ('a' x 500); # + の場合前半に長くマッチした上で失敗する
my $sl = ('a' x 500) . ($n x 250); # 後半に長くマッチ
my $sn = 'a' x 1000; # マッチしない
my $su = ('a' x 998) . $n; # 末尾のみ
cmpthese(-5, {
wa => sub { $_ = $sa; 1 while s/[\012\015]$//; 1 },
wf => sub { $_ = $sf; 1 while s/[\012\015]$//; 1 },
wl => sub { $_ = $sl; 1 while s/[\012\015]$//; 1 },
wn => sub { $_ = $sn; 1 while s/[\012\015]$//; 1 },
wu => sub { $_ = $su; 1 while s/[\012\015]$//; 1 },
qa => sub { $_ = $sa; s/[\012\015]+$//; 1 },
qf => sub { $_ = $sf; s/[\012\015]+$//; 1 },
ql => sub { $_ = $sl; s/[\012\015]+$//; 1 },
qn => sub { $_ = $sn; s/[\012\015]+$//; 1 },
qu => sub { $_ = $su; s/[\012\015]+$//; 1 },
});
__END__
自分の感覚と真逆の結果なんで -Mre=debug して調べたら、 [\012\015]$ だと
固定長だからエンジンが動作を最適化して最初から末尾しかみないんだな。
だから文字列自体が長くなると逆転が起こると。勉強になったよ。
#!/usr/bin/perl -w
use strict;
use Benchmark qw(cmpthese);
my $n = "\015\012";
my $sa = $n x 500; # 全文字にマッチ
my $sf = ($n x 250) . ('a' x 500); # + の場合前半に長くマッチした上で失敗する
my $sl = ('a' x 500) . ($n x 250); # 後半に長くマッチ
my $sn = 'a' x 1000; # マッチしない
my $su = ('a' x 998) . $n; # 末尾のみ
cmpthese(-5, {
wa => sub { $_ = $sa; 1 while s/[\012\015]$//; 1 },
wf => sub { $_ = $sf; 1 while s/[\012\015]$//; 1 },
wl => sub { $_ = $sl; 1 while s/[\012\015]$//; 1 },
wn => sub { $_ = $sn; 1 while s/[\012\015]$//; 1 },
wu => sub { $_ = $su; 1 while s/[\012\015]$//; 1 },
qa => sub { $_ = $sa; s/[\012\015]+$//; 1 },
qf => sub { $_ = $sf; s/[\012\015]+$//; 1 },
ql => sub { $_ = $sl; s/[\012\015]+$//; 1 },
qn => sub { $_ = $sn; s/[\012\015]+$//; 1 },
qu => sub { $_ = $su; s/[\012\015]+$//; 1 },
});
__END__
794デフォルトの名無しさん
2017/07/03(月) 21:35:51.52ID:88Z7s+4Q795デフォルトの名無しさん
2017/08/15(火) 19:10:26.36ID:mGHj5vlw Perlに向いてるIDE教えて
デバッグ機能とかはいらない
補完と文法チェックとオートインデントが欲しい
デバッグ機能とかはいらない
補完と文法チェックとオートインデントが欲しい
796デフォルトの名無しさん
2017/08/16(水) 00:53:07.53ID:83B6OrrB 一番要るのはCPANとの連携機能だろ
797デフォルトの名無しさん
2017/08/17(木) 08:11:08.69ID:3rgoYIbT CPANとの連携機能はどっちでもいい
みんなメモ帳レベルのテキストエディタで書いてるの?
みんなメモ帳レベルのテキストエディタで書いてるの?
798デフォルトの名無しさん
2017/08/17(木) 08:48:00.96ID:ewlyrxLm IDEといいつつエディタでいいのか?
799デフォルトの名無しさん
2017/08/17(木) 21:40:11.78ID:DvPmzIRV vscode
800デフォルトの名無しさん
2017/08/17(木) 22:05:58.41ID:3rgoYIbT どこまでがエディタでどこまでがIDEなのか分からないが、それなりの機能は欲しい
自作関数とかも補完して欲しいしなあ
サンクス
vscode調べてみる
自作関数とかも補完して欲しいしなあ
サンクス
vscode調べてみる
801デフォルトの名無しさん
2017/08/26(土) 14:13:33.64ID:zbaxfQ1B802デフォルトの名無しさん
2017/08/27(日) 20:38:24.57ID:SUXQdIaA Perl6?
803デフォルトの名無しさん
2017/08/27(日) 21:17:36.95ID:l5ljwsJk 6は別物らしいね
804デフォルトの名無しさん
2017/08/27(日) 22:40:07.20ID:eg2XZFIG pythonもVBもバージョン上がると別物になる
そして大抵古い方が使いやすい
そして大抵古い方が使いやすい
805デフォルトの名無しさん
2017/08/27(日) 22:55:26.24ID:l5ljwsJk pythonはそろそろLinuxのデフォルトが3になりそうだけど
Perlはそんな気配全く無いよねw
Perlはそんな気配全く無いよねw
806デフォルトの名無しさん
2017/08/27(日) 23:11:43.20ID:QvkIPToQ システム付属のスクリプト言語っていう立ち位置がかつてのPerlからPythonに変わったからなあ
807デフォルトの名無しさん
2017/08/27(日) 23:14:14.93ID:eg2XZFIG 過去の資産が多いほどおいそれとは変えられない
808デフォルトの名無しさん
2017/08/29(火) 00:32:32.45ID:MFSwZwGT Perl は5.005まで。5.6からは別物。
809デフォルトの名無しさん
2017/08/29(火) 18:35:08.35ID:rhRVTFDq <?=>
810デフォルトの名無しさん
2017/08/29(火) 18:35:53.37ID:rhRVTFDq >>801
なにそれどうやって書くの?
なにそれどうやって書くの?
811デフォルトの名無しさん
2017/08/30(水) 09:00:08.40ID:Lglrs9g0812デフォルトの名無しさん
2017/08/30(水) 19:42:59.46ID:bbdqdnnx 環境によってはどうやってもアトミックにならんのでは
813デフォルトの名無しさん
2017/08/31(木) 15:10:50.45ID:zaIZgwYc $_ って正式名称はなに?
814デフォルトの名無しさん
2017/08/31(木) 20:40:54.54ID:3/js14c9 >>813
特に決まっていない
use English した時の名前は ARG
http://perldoc.jp/docs/perl/5.22.1/perlvar.pod#General32Variables
http://perldoc.perl.org/perlvar.html#General-Variables
特に決まっていない
use English した時の名前は ARG
http://perldoc.jp/docs/perl/5.22.1/perlvar.pod#General32Variables
http://perldoc.perl.org/perlvar.html#General-Variables
815デフォルトの名無しさん
2017/08/31(木) 21:06:33.50ID:kksFNuyJ 日本だとparameterもargumentもどっちも引数と訳して区別しないから、
何故ARGなのかピンときにくいな
何故ARGなのかピンときにくいな
816デフォルトの名無しさん
2017/08/31(木) 22:02:37.51ID:j9yVEoD5 引数は単に引数ってだけ。その使われ方は決まっていない。
例えば言語によっては関数の引数で戻り値を返すことだってできる。
つまり引数=パラメータではない
また関数の引数の多くはパラメータになるが、
引数だけがパラメータではない。
環境変数でパラメータを渡すことも有る
つまり「この関数の引数はすべてパラメータであり、引数以外のパラメータは取らない」
のような使い方をする
例えば言語によっては関数の引数で戻り値を返すことだってできる。
つまり引数=パラメータではない
また関数の引数の多くはパラメータになるが、
引数だけがパラメータではない。
環境変数でパラメータを渡すことも有る
つまり「この関数の引数はすべてパラメータであり、引数以外のパラメータは取らない」
のような使い方をする
817デフォルトの名無しさん
2017/08/31(木) 22:05:02.71ID:j9yVEoD5 なぜ $_ が ARGなのかというと
正式名称が「デフォルトの引数」だからである。
正式名称が「デフォルトの引数」だからである。
818デフォルトの名無しさん
2017/08/31(木) 22:17:16.68ID:kksFNuyJ そういう理解なんだねとは思うけど、何も正しくない
パラメータは、数学の媒介変数から借りてきた言葉で、
それを変化させると結果がいろいろ変わる変数
argumentは訳語が無いのでアーギュメントとするけど、
これは仮引数とも訳されて、関数を定義する時に便宜的に使われる名前
y = f(a)
と使うけど、定義では
f(x) = x*x
みたいに違う名前で書く
ここで、aがパラメータで、xがアーギュメント
パラメータは、数学の媒介変数から借りてきた言葉で、
それを変化させると結果がいろいろ変わる変数
argumentは訳語が無いのでアーギュメントとするけど、
これは仮引数とも訳されて、関数を定義する時に便宜的に使われる名前
y = f(a)
と使うけど、定義では
f(x) = x*x
みたいに違う名前で書く
ここで、aがパラメータで、xがアーギュメント
819デフォルトの名無しさん
2017/08/31(木) 22:45:26.64ID:j9yVEoD5 それは数学での定義でしかない
820デフォルトの名無しさん
2017/09/01(金) 15:00:43.14ID:H3SYi0Xx 引数として使ってるものが引数
パレメータとして使ってる物がパラメータ
パレメータとして使ってる物がパラメータ
821デフォルトの名無しさん
2017/09/02(土) 10:40:48.32ID:u6TVALzz パレパレ
822デフォルトの名無しさん
2017/09/02(土) 12:32:02.45ID:xOFD7X9t パレメータでぐぐると600件くらいヒットするから、
それなりに認知された用語だ
それなりに認知された用語だ
823デフォルトの名無しさん
2017/09/03(日) 01:01:13.45ID:93btyWjA ネイティヴ風の発音だね
824デフォルトの名無しさん
2017/09/03(日) 11:11:45.08ID:DIhXI1rF たまにいるよな。
大抵のカタカナ英語は日本語風に書いているのに
特定の単語だけネイティブ風に書くやつ
より正確な英語の発音にこだわってるんだー風を
だしていながら、その他のよく知られたカタカナ英語は
そうやってないから、ものすごく恥ずかしい
大抵のカタカナ英語は日本語風に書いているのに
特定の単語だけネイティブ風に書くやつ
より正確な英語の発音にこだわってるんだー風を
だしていながら、その他のよく知られたカタカナ英語は
そうやってないから、ものすごく恥ずかしい
825デフォルトの名無しさん
2017/09/03(日) 12:13:05.99ID:9X5Pxl9y 何言ってんだかさっぱりわかんないな。
これじゃ駄目なん? 普通にパラメータに聞こえますけど。
http://ejje.weblio.jp/content/parameter
元凶は日本のマスゴミなんだから逆らって
アイフォーンをアイフォンとかは全然いいんじゃない?
これじゃ駄目なん? 普通にパラメータに聞こえますけど。
http://ejje.weblio.jp/content/parameter
元凶は日本のマスゴミなんだから逆らって
アイフォーンをアイフォンとかは全然いいんじゃない?
826デフォルトの名無しさん
2017/09/03(日) 17:26:43.87ID:B/+QCXTV そして突然迷い込む馬鹿二人(うち一人が発狂)
827デフォルトの名無しさん
2017/09/04(月) 02:55:51.13ID:wDfrhDJb パリミラァ
828デフォルトの名無しさん
2017/09/04(月) 05:58:32.53ID:jkNKu/s3 なんてネイティヴな発音!
829デフォルトの名無しさん
2017/09/06(水) 01:01:55.01ID:G3iCmUe0 アイフォーンはアイフォーンだろうがゴミ
日本企業の商標を無視するとか朝鮮人かよ
日本企業の商標を無視するとか朝鮮人かよ
830デフォルトの名無しさん
2017/09/06(水) 19:33:55.21ID:sdZlzdoG 先にアイホンがあったから、アイフォンって名乗れないだけだけどな
831デフォルトの名無しさん
2017/09/07(木) 01:22:55.82ID:Sk+IOtsg >>825
おれには「フラメトル」としか聞こえん
おれには「フラメトル」としか聞こえん
832デフォルトの名無しさん
2017/09/07(木) 07:54:03.77ID:J7Os68O5 disableをディセーブルだと判ってるのに、どうしてもディザブルと読んでしまう
833デフォルトの名無しさん
2017/09/10(日) 19:11:13.56ID:PWIqhoXm ディスエイブル
834デフォルトの名無しさん
2017/09/10(日) 19:11:55.89ID:PWIqhoXm deny はデニーではなくディナイ
835デフォルトの名無しさん
2017/09/10(日) 19:13:03.02ID:PWIqhoXm alias はアリアスではなくエイリアス
836デフォルトの名無しさん
2017/09/10(日) 21:23:32.99ID:ktr8CX3U dosは土座
837デフォルトの名無しさん
2017/09/12(火) 21:58:39.86ID:a0beitbE >>836
お前PCニュース板で荒らしって叩かれてるやつだろw
お前PCニュース板で荒らしって叩かれてるやつだろw
838デフォルトの名無しさん
2017/09/15(金) 23:16:27.00ID:xDlOGQNS 質問ですが required.plをtest.plからrequire './required.pl'としたとき、
required.plの中でuse strict;と書いてもtest.plがstrictにならないのに
required.plの中でuse CGI;と書くとtest.plでmy $q = new CGI;できてしまうのは何で?
use xxxx;にスコープの違いがあるとして、何読んだらワカル?
ちなPerl 5 (v5.16.1)
required.plの中でuse strict;と書いてもtest.plがstrictにならないのに
required.plの中でuse CGI;と書くとtest.plでmy $q = new CGI;できてしまうのは何で?
use xxxx;にスコープの違いがあるとして、何読んだらワカル?
ちなPerl 5 (v5.16.1)
839デフォルトの名無しさん
2017/09/15(金) 23:33:11.49ID:du4uxrUm840デフォルトの名無しさん
2017/09/15(金) 23:43:23.66ID:quelyH0d 訳: わかりません
841デフォルトの名無しさん
2017/09/16(土) 00:35:28.29ID:r+6Dx5B1 >>838
http://perldoc.jp/docs/perl/5.16.1/perlmod.pod
プラグマは大体ブロックスコープだけどものによるから個別に調べて
http://perldoc.jp/index/core
http://perldoc.jp/docs/perl/5.16.1/perlmod.pod
プラグマは大体ブロックスコープだけどものによるから個別に調べて
http://perldoc.jp/index/core
842デフォルトの名無しさん
2017/09/16(土) 10:28:48.29ID:ykCZuND/843デフォルトの名無しさん
2017/09/16(土) 10:40:43.15ID:eVQeLfYm >>838
そもそも概念が全く違うな
CGI->new が呼び出せるように strict->importは呼び出せるようになっているし
パッケージの定義がグローバルな名前空間に行われてるのは同じ
strictの有効化はコンパイル時のperl内部のスイッチの切り替え
同じ use でもやりたいことが違うからスコープの違いという視点で整理しようとすると混乱しそう
そもそも概念が全く違うな
CGI->new が呼び出せるように strict->importは呼び出せるようになっているし
パッケージの定義がグローバルな名前空間に行われてるのは同じ
strictの有効化はコンパイル時のperl内部のスイッチの切り替え
同じ use でもやりたいことが違うからスコープの違いという視点で整理しようとすると混乱しそう
844デフォルトの名無しさん
2017/09/21(木) 20:27:42.42ID:BpkTXd/3 文字列$str2から文字列$str1に含まれている文字以外を全て削除する
例えば$str2="あaかbさcたdなe";$str1="あかさたな";ならば
absdeが残るということです
モジュール使えない環境なのでモジュールなしのやりかたで
例えば$str2="あaかbさcたdなe";$str1="あかさたな";ならば
absdeが残るということです
モジュール使えない環境なのでモジュールなしのやりかたで
845デフォルトの名無しさん
2017/09/21(木) 20:29:23.07ID:BpkTXd/3 間違えたabcdeが残るではなくあかさたなが残る
846デフォルトの名無しさん
2017/09/21(木) 21:26:21.38ID:YjUNPIX/ $str2="あaかbさcたdなe";
$str1="あかさたな";
$str2 =~ s/[^$str1]//g;
print $str2; # あかさたな
$str1="あかさたな";
$str2 =~ s/[^$str1]//g;
print $str2; # あかさたな
847デフォルトの名無しさん
2017/09/21(木) 23:33:40.68ID:8ncmvgKd 正規表現は書けても実行しようとするとむちゃくちゃ遅くなったり
メモリ足りなくなったりして、結局ループに開いたりする
メモリ足りなくなったりして、結局ループに開いたりする
848デフォルトの名無しさん
2017/09/22(金) 05:44:52.27ID:gzrtSK/2 あああああああああまははあああああああああああああああああああああなやたはあああああああああああああああなはわたはなたかかなななななああああああああああああああああああああああああああああかかかかあああああああああああああかささやなさはななけなわまややゆか
849デフォルトの名無しさん
2017/09/22(金) 09:19:14.94ID:fe+2x70v850デフォルトの名無しさん
2017/09/22(金) 09:42:25.43ID:45DIhC0E utf8に変換して処理しなさい
851デフォルトの名無しさん
2017/09/22(金) 09:45:38.48ID:AEpp9yrH 常識ですな
852デフォルトの名無しさん
2017/09/22(金) 12:47:50.13ID:gMAmIwCv853デフォルトの名無しさん
2017/09/23(土) 15:14:55.50ID:J7EIO5I9 Perlは正則言語を最左導出に変換していないとか一体…
まあ一般に状態数が増えてメモリ食うけど
まあ一般に状態数が増えてメモリ食うけど
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 橋下徹氏 外務省幹部の訪中受け「口だけ番長」へ痛烈指摘 「喧嘩は日本の完敗…なんとかっこ悪い日本か」 [冬月記者★]
- 【外国人問題】小野田紀美担当相「不法就労や不法滞在は許さない」 [シャチ★]
- 【野球】井端監督 大谷翔平、山本由伸らのWBCへの参加 「1日も早く返事ほしい」「待っててといっても、国内組が遅くなってしまう」★3 [冬月記者★]
- 経団連会長、日中は建設的対話を 経済3団体が高市首相と初会談も日中関係は話題に登らず… [BFU★]
- 中国で「クレしん」公開延期 対日報復、エンタメに波及 [蚤の市★]
- 東京株式市場 インバウンド関連株が下落 中国政府の渡航自粛要請で [バイト歴50年★]
- 有識者「高市総理が発言を撤回したり、辞職するしかないと言っている人は、それで日中関係が今まで通りになると思ってる?」 [834922174]
- 戦争は無くならないし殺人は起きるし女はレイプされるし子供は餓死するし
- 女性検診なんでオナニーしてグチョグチョで行ってやる
- 日経時間外、5万円割れ 垂直落下始まる [402859164]
- ( ´・ω・` )朝ですぞー
- 【悲報】男性人気アイドルグループJO1、中国公演中止wwwwwwwwwwwwwwwwwwwwwwwwwww
