[過去ログ]
Perlについての質問箱 64箱目 (1002レス)
Perlについての質問箱 64箱目 http://mevius.5ch.net/test/read.cgi/tech/1548981877/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
84: デフォルトの名無しさん [sage] 2019/06/29(土) 17:53:32.74 ID:3U68S2mZ 多分htmlに俺はsjisだと書いてあると、LWPが勝手にsjisでデコードするんだろう http://mevius.5ch.net/test/read.cgi/tech/1548981877/84
85: デフォルトの名無しさん [sage] 2019/07/06(土) 10:10:18.37 ID:oMEfEQKE 元がeuc-jpだと、 $str =~ s/\x{301c}/〜/g; みたいなことを明示的に書かないと、回避できないみたい 同じものやがな http://mevius.5ch.net/test/read.cgi/tech/1548981877/85
86: デフォルトの名無しさん [] 2019/07/12(金) 02:22:50.96 ID:AjCqo1Mf 下記のコードですがダブルクォートを介さずに$testから'フ'を表示させる方法はありますか? #!/bin/env perl use strict; use warnings; use utf8; my $test = '\xE3\x83\x95'; my $test2 = "\xE3\x83\x95"; print "$test\n\n"; print "$test2\n\n"; http://mevius.5ch.net/test/read.cgi/tech/1548981877/86
87: デフォルトの名無しさん [sage] 2019/07/12(金) 02:35:11.65 ID:gPQuYcbX my $test3 = $test; $test3 =~ s/\\x([0-9A-Fa-f]{2})/pack('H2', $1)/eg; print "$test3\n"; http://mevius.5ch.net/test/read.cgi/tech/1548981877/87
88: デフォルトの名無しさん [sage] 2019/07/12(金) 04:04:28.94 ID:yXcDIkyu print eval qq/"$test\n\n"/; http://mevius.5ch.net/test/read.cgi/tech/1548981877/88
89: 86 [sage] 2019/07/12(金) 07:58:26.24 ID:AjCqo1Mf ありがとうございます! http://mevius.5ch.net/test/read.cgi/tech/1548981877/89
90: デフォルトの名無しさん [sage] 2019/08/11(日) 05:06:35.55 ID:GTeyRs5o こんな書きかたあったか? DB<27> printf "%s\n", ('Fizz')[$_%3] . ('Buzz')[$_%5] || $_ for (1..15) 1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz ()[]が見おぼえがない http://mevius.5ch.net/test/read.cgi/tech/1548981877/90
91: デフォルトの名無しさん [sage] 2019/08/11(日) 05:17:44.88 ID:GTeyRs5o ()で配列とみなしたとき ()[0]は定義されていると考えて ()[1]などは未定義で無しというトリックか http://mevius.5ch.net/test/read.cgi/tech/1548981877/91
92: デフォルトの名無しさん [sage] 2019/08/11(日) 05:42:32.38 ID:GTeyRs5o DB<25> print "$_ cup", ("s")[$_ < 2] , " of coffee\n" for (1..3) 1 cup of coffee 2 cups of coffee 3 cups of coffee http://mevius.5ch.net/test/read.cgi/tech/1548981877/92
93: デフォルトの名無しさん [sage] 2019/08/11(日) 10:17:48.54 ID:GTeyRs5o DB<23> printf "%s\n", "$_ cup" . ("s")x!!($_ != 1) . " of coffee" for (0..3) 0 cups of coffee 1 cup of coffee 2 cups of coffee 3 cups of coffee DB<24> printf "%s\n", "$_ butterfl" . ("y","ies")[($_ != 1)] for (0..3) 0 butterflies 1 butterfly 2 butterflies 3 butterflies http://mevius.5ch.net/test/read.cgi/tech/1548981877/93
94: デフォルトの名無しさん [sage] 2019/08/12(月) 10:00:54.45 ID:1t9yEA1l 今はもう (1)[1] が空リストにならないんだな。perl5220delta に書いてあった。 リストコンテキストでの問題を避けるために [split( /::/ , $class)]->[4] みたいな書き方をしていたんだが。 いや、これは変えなくていいのか。 http://mevius.5ch.net/test/read.cgi/tech/1548981877/94
95: デフォルトの名無しさん [sage] 2019/08/12(月) 10:16:24.43 ID:BBJuWfXI undefは省力とかフェールセーフ的に有効にするんじゃなくて、 厳密に仕様化して積極的に使うべきだよな 初期化されてないものを使うのが気持ち悪いと感じるのは、 auto変数が本当に領域確保するだけだった頃の名残り http://mevius.5ch.net/test/read.cgi/tech/1548981877/95
96: デフォルトの名無しさん [sage] 2019/09/14(土) 11:56:42.38 ID:MMNKizJk 簡単なシェルスクリプトしか書けない素人ですがPerlの利点ってどこです? grep -Pやperl -peで世話にはなっていますが目当てはあくまで正規表現だけですし 比較演算子はbashと逆だし変数は記号で使い分けなきゃならんしなんだこいつってなって http://mevius.5ch.net/test/read.cgi/tech/1548981877/96
97: デフォルトの名無しさん [sage] 2019/09/14(土) 12:00:19.76 ID:JUmWdv2U どこでも使える http://mevius.5ch.net/test/read.cgi/tech/1548981877/97
98: デフォルトの名無しさん [sage] 2019/09/14(土) 23:46:33.57 ID:n7pzU9md テキスト処理に特化されているところ そのおかげで "," や " " とかの部分を q(,) q( ) などと書けたり perl コードが正規表現と一体化していて再帰も扱えたりなど色々あるが 全部特化したことによる利点 http://mevius.5ch.net/test/read.cgi/tech/1548981877/98
99: デフォルトの名無しさん [sage] 2019/09/14(土) 23:58:57.25 ID:SgsUVSB1 Perl6使ってる香具師さんいますか? http://mevius.5ch.net/test/read.cgi/tech/1548981877/99
100: デフォルトの名無しさん [sage] 2019/09/15(日) 00:02:41.49 ID:epz106Yo bashで凝ったことを書くことを考えたら、Perlのほうがはるかに簡単。 bashは所詮シェルなので、クォートとかエスケープとか変数とか関数とか、いちいちワナが多いからな。 http://mevius.5ch.net/test/read.cgi/tech/1548981877/100
101: デフォルトの名無しさん [] 2019/09/15(日) 17:56:28.72 ID:riyG3w3b Perlの利点? 他の言語と同様になんでもできることかな。モジュール色々使うと作るの楽だしOSの違いもかなり吸収されてWindowsでもLinuxでも何も変更せずに動くプログラムも作れる。 シェルスクリプトも外部コマンド動かせば何でもできるとは言えるが、起動のオーバーヘッドの問題や起動しているコマンドの仕様が変わったときに個別に対応しなければいけないなど面倒な事がある。 http://mevius.5ch.net/test/read.cgi/tech/1548981877/101
102: デフォルトの名無しさん [sage] 2019/10/23(水) 15:22:28.55 ID:Q75cL8J3 >>101 > OSの違いもかなり吸収されてWindowsでもLinuxでも何も変更せずに動くプログラムも作れる。 これでとんでもない目に遭ったぞ。 perlの\nは、内部的にはLF のみだが、OSがWindowsなら、出力する際に CR+LF に自動的に変換してくれる。 しかし、出力文字コードがutf16le だと、特殊な宣言文を書かない限り、 LF (0x000a)は 「0x000a000d」ではなく、「0x000a0d」に変換され、 ぐちゃぐちゃに文字化けする。 文字化けの原因を特定し、回避方法を見つける
ために、ずいぶん時間を取られた。 http://mevius.5ch.net/test/read.cgi/tech/1548981877/102
103: デフォルトの名無しさん [sage] 2019/10/23(水) 15:31:23.16 ID:7+59i/z7 chcp 1200でいけそうな気がするんだけど http://mevius.5ch.net/test/read.cgi/tech/1548981877/103
104: デフォルトの名無しさん [] 2019/10/23(水) 17:37:45.28 ID:azQS8Nqn >>102 \n は他の言語でも気を付けた方が良い。 例えC言語だったとしても歴史的な事情でライブラリが勝手に変換するかも知れない。 この頃はそれにまつわるバグは減ってるとは思うけどね。 ま、少なくとも \n を \x0a だと信じ込んで使うのは止めた方がいいだろうな。 \x0a はあくまでも \x0a と書いた方が良い。 Javaとかでは改行は System.out.println() を使って改行させるようにして \n を埋め込んでの改行は極力避けた方が良い。 http://mevius.5ch.net/test/rea
d.cgi/tech/1548981877/104
105: デフォルトの名無しさん [sage] 2019/10/24(木) 00:15:31.72 ID:dNYiTPCj >>102 いや、特殊な宣言文ってなんだよ。PerlIO の man 読めよ。 open 関数や binmode 関数の説明にも「PerlIO を読め」って書いてあるよ。 http://mevius.5ch.net/test/read.cgi/tech/1548981877/105
106: デフォルトの名無しさん [sage] 2019/10/24(木) 00:54:14.51 ID:NQorbS3o s/\n//g; s/\r//g; 俺は常にこうしてる http://mevius.5ch.net/test/read.cgi/tech/1548981877/106
107: デフォルトの名無しさん [sage] 2019/10/24(木) 06:24:46.42 ID:rCe9ez9s \nを埋め込んだ箇所が一つでもあったらアウト みたいな作り方は絶対失敗する http://mevius.5ch.net/test/read.cgi/tech/1548981877/107
108: デフォルトの名無しさん [sage] 2019/10/24(木) 08:28:21.30 ID:wmDm31X8 >>106 s/\R//g; じゃないのか? http://mevius.5ch.net/test/read.cgi/tech/1548981877/108
109: デフォルトの名無しさん [sage] 2019/10/24(木) 09:04:15.10 ID:LjTGtkP8 >>105 > いや、特殊な宣言文ってなんだよ。PerlIO の man 読めよ。 結論としては、下のように書けばいいのだが、これはネットで色々探して 見つけてきたもので、PerlIO の man 読んで自分で見い出すことは、 私にはできなかった。それが出来る人は凄いと思う。 binmode STDOUT => ":raw:encoding(utf16le):crlf"; http://mevius.5ch.net/test/read.cgi/tech/1548981877/109
110: デフォルトの名無しさん [sage] 2019/10/24(木) 22:37:27.00 ID:rCe9ez9s 右から読むんだよ http://mevius.5ch.net/test/read.cgi/tech/1548981877/110
111: デフォルトの名無しさん [] 2019/11/06(水) 01:45:01.50 ID:yvB3xxPc 消費税計算(10%)しようとしました。税込550円を消費税と本体価格にする。 $a = 550; $b = 1.1; $c = $a / $b; $d = $a - $c; $e = int($c); $f = int ($d); print すると、 $c は 500 $d は 50.000000000001(0の数はだいたい) $e は 499 $d は 50 とうやら550 / 1.1 が内部的に割り切れていない様子(おそらく実際は内部的に499.99999999999999になってるのでintすると499に) ロジックの変更で回避したけど、このバグ聞いたことありますか? http://mevius.5ch.net/te
st/read.cgi/tech/1548981877/111
112: デフォルトの名無しさん [sage] 2019/11/06(水) 02:54:03.98 ID:normnvJW >>111 バグじゃなくて仕様やろ。 Perlの数値型はdoubleなので、1.1が正確に表現できてないんちゃう? 浮動小数点数の誤差についてぐぐれ。 http://mevius.5ch.net/test/read.cgi/tech/1548981877/112
113: デフォルトの名無しさん [sage] 2019/11/06(水) 03:29:15.89 ID:normnvJW >>111 おせっかいかもだがもうひとつ。 その手の誤差を回避するのは、ロジックでなんとかできることもあるが、実際にはなかなか難しいはず。 たまたま誤差が見えなくなってるだけの可能性もありそうなので、動作確認は慎重にな。 ちゃんとやるなら、decimal的なモジュールを使ったほうが。 あるかどうかは知らんけど。 http://mevius.5ch.net/test/read.cgi/tech/1548981877/113
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 889 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.015s