質問スレはあるけど、Perl自身について語るスレがないので、立てました。
0782デフォルトの名無しさん2020/01/08(水) 19:45:30.94ID:naqRCa+g
あー。%s か。
0783デフォルトの名無しさん2020/01/09(木) 10:06:14.57ID:Gxf4nQ6S
フォーマットを %.16f にしたら 2.999... のように出たよ。
まあでも環境によって違うかも知れないけどね。
ある整数$nを10進表示するために必要な桁数を求めるためにlog($n)/log(10)を使ったのが良くなかった。
小難しいこと考えずにperlらしく素直に文字列としてlength($n)で桁数を取得するのが正解。
Perlじゃなくても、浮動小数点数なら残当。
結局、10で何回割れるか数えるのが一番合理的なんかねえ。
問題の本質は、整数と実数の型区別がない言語において、3なのか2.99…なのか簡単に識別する手段がないこと。
PerlはCPU依存の浮動小数ではなく、独自の浮動小数を実装している。
計算速度がCやJava劣るのは、単にPerlがスクリプト言語だからというだけではない。
独自な浮動小数には良い面も悪い面もあるが、浮動小数の精度を変更できるのは大きな強み。
以下は、浮動小数の精度を10進換算100桁にするための宣言。
use bignum (a => 100);
0788デフォルトの名無しさん2020/01/11(土) 16:09:16.79ID:j7/IvFvR
>>786
ないな。一応 0.5 足してから int() で整数化すれば四捨五入になるけどね。自分でそう書かないとダメだったと思う。誰かがモジュール作って関数化してそうだけど。 >>786
んなもん、そもそもあるわけがない。
浮動小数点数表現はおろか、有理数表現でも完全に表せない値は当たり前なんだから。 0790デフォルトの名無しさん2020/01/15(水) 02:51:20.42ID:pd5/9Sat
0792デフォルトの名無しさん2020/02/10(月) 18:58:18.71ID:TxaBglIi
それはWebのページに埋め込むような感じで使えるかという意味?
0793デフォルトの名無しさん2020/02/11(火) 17:48:20.39ID:ix+UlUL8
PHPのプログラム中からPerlを呼び出すのであれば「php perl 呼び出し」等のキーワードでググれば沢山出てくる。
0794デフォルトの名無しさん2020/06/06(土) 11:22:08.79ID:5FXxLs+t
2015年にリリースされたmacOS X 10.11 以降、SIP(System Integrity Protection)によってディレクトリ/Systemがガードされるようになった。
これにより2013年にリリースされたperl 5.13が/System配下にありガードされてアンインストールできなくなっている。
2019年にリリースされた最新のmacOS 10.15 Catalina もいまだにperl5.18のままという有様。
新しい Windows PCに Active Perlインストールしたら perl.batになってて使いづらいので
Strawberry Perlに変更した
0797デフォルトの名無しさん2021/10/02(土) 10:57:54.57ID:77ApQga0
>>796
Git for Windowsに付属のbash(MINGW)で十分だと思う 0798デフォルトの名無しさん2021/10/02(土) 14:25:59.98ID:yFRwYWli
Git for Windowsに付属のbashってminttyだっけ
便利過ぎて死ぬわ
>>797
ホントにずっとそのままでええんならな。
MSYS2にしとけば、あとからpacmanでいろいろ足せる。 0800デフォルトの名無しさん2021/10/02(土) 15:15:17.46ID:lWVjrMOX
WSLでUbuntuもよろしく
0801デフォルトの名無しさん2021/10/02(土) 16:46:10.72ID:77ApQga0
WSLのPerlだとWin32API呼び出しできないからニーズを満たせないと思ふ
0802デフォルトの名無しさん2021/10/02(土) 16:55:22.91ID:77ApQga0
ちなみにGit for Windows (2.33.0.windows.2) にもPerlが入ってる
Strawberry Perlは5.32までしかないのにGit for Windows版Perlは5.34
嘘だと思うなら調べてみるといい
マジだから
なぜStrawberry Perlは5.34がリリースされないの?
0805デフォルトの名無しさん2022/06/30(木) 22:37:09.92ID:paUH0cS8
Perl 5.36 が公開されたというのに、どのPerl関連スレも閑古鳥が鳴いていてさびしいねえ
Windowsでコマンドライン生活をしてると
utf-8かsjis(cp932)で改行がCRLFのテキストを扱うのがほとんど
結局コマンドプロンプトでPerlを使うのが一番使い勝手がいい…と思ってる
0807デフォルトの名無しさん2022/07/03(日) 05:14:11.23ID:S0pZ0Csa
>>806
わかる気がする
文字コード不明なゴミ文字列を食わされたらすぐ例外を吐く繊細なPythonは日本語版Windows向きじゃないんだよな 0808デフォルトの名無しさん2022/07/03(日) 14:29:42.06ID:PqlrjItE
馬鹿には無理
Perlの比較対象はsedとかawk
多段パイプでsedとawkをつなげまくってるのをPerlですっきり
PowerShellはバイナリがパイプに流せないからな
バイナリを流さなくても文字コードをいろいろ使う人には不便極まりない
PowerShellのパイプは、テキストでもバイナリでもなく、オブジェクトだが?
PowerShellの文法にPerlの影響を感じる
Perlでのワンライナーコマンドの成功体験を忘れられなかった人が、潤沢な資源を使ってPerlっぽいシェル作ったら明るいディストピアになってしまった感じ
それがPowerShell
文法の類似性は全く感じられない…いやまじで
それはともかくWindowsでPowerShellをシェルとして使ってるとPerlと相性悪すぎる
コマンドプロンプトなら問題ないのにね
0819デフォルトの名無しさん2022/07/07(木) 21:37:13.86ID:PsBgcgR1
Perlだけじゃないよ
PowerShellはSTDIN, STDOUTを使うあらゆる伝統的アプリと相性が悪い
たとえば
perl -E '$a = 1; say "\$a = $a"' …… (1)
結果はもちろん
$a = 1
コマンドプロンプトだと引用符に ' が使えないから
perl -E "$a = 1; say qq/\$a = $a/"
とかするわけだけど、PowerShellなら ' も使えるから(1)でいけると思うわな
ところが結果は
SCALAR(0xf00e68)
さすがにこれは凄過ぎる
0821デフォルトの名無しさん2023/11/07(火) 18:45:33.47ID:bMdWZdKr
バイナリの種類が減ったけどどうしたんだろう_?
ZIP版がなくなったのはちょっと寂しい
いろいろビルドするの大変だったのかな…
いずれにせよWidows用処理系のバイナリが提供されるのはありがたい
>>820
Windows PowerShell 5.1 ではこの通りだったけど
最新の PowerShell 7.4 ではちゃんと
$a = 1
になるように改善されてる 0824デフォルトの名無しさん2023/11/27(月) 18:46:28.12ID:17nvp8y6
$ perl -e '$a="abc"; $a =~ s/(.*)/[$1]/g; print $a . "\n"'
[abc][]
なんで後ろに[]がついちゃうの?
後ろに[]をつけないにはどうすればいいの?
Powershell で、Ruby の1-liner を実行してみた。
%Q() は、"〜" と囲む文字列と同じ
ruby -e 're=/(.*)/; puts %Q(abc).sub(re){ %Q([#$1]) }'
[abc]
ruby -e 're=/(.*)/; puts %Q(abc).gsub(re){ %Q([#$1]) }'
[abc][]
sub は置換を1回だけ、
gsub は複数回置換するから、2回マッチしているようだ
これは正規表現のスレで聞いた方が良いかも
Ruby でやったら、sub/gsub のどちらも空文字列にもマッチする!
%Q() が、"" と同じで空文字列
re=/(.*)/;
puts %Q().sub(re){ %Q([#$1]) }
[]
re=/(.*)/;
puts %Q().gsub(re){ %Q([#$1]) }
[]
Perl はよく知らないけど、正規表現の
s/(.*)/[$1]/g
の、s かg が、複数回マッチのオプションなのでは?
0827デフォルトの名無しさん2023/11/28(火) 07:55:53.20ID:n24A5w3b
gが複数回オプション
s/(.*)/[$1]/
または
s/(.+)/[$1]/g
0829デフォルトの名無しさん2023/11/28(火) 12:30:37.56ID:vIU65Zk5
複数回マッチはそれはそうなんだけど、
.*で全部にマッチするのだから一回しかマッチしないはずでしょう?
0831デフォルトの名無しさん2024/02/09(金) 17:07:25.90ID:LEmbefGZ