【モダン推奨】Perlについての質問箱 50箱目

■ このスレッドは過去ログ倉庫に格納されています
2012/01/21(土) 10:56:39.03
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辺り


417デフォルトの名無しさん
垢版 |
2014/01/18(土) 19:55:51.97
与えられた文字列から適当な数値を求めたいんだけど
標準関数で簡単にやるにはなにかいい方法ある?
2014/01/18(土) 21:05:51.45
せめて10レスくらい読めよ
$ perl -le 'print for unpack q{C*}, q{もじ}'
227
130
130
227
129
152
2014/01/18(土) 21:11:44.49
>>418
お前やっぱ頭良くないんだな
2014/01/18(土) 21:13:59.31
joinすりゃいいだけじゃん
2014/01/18(土) 21:17:28.94
>>418
それだと文字列が長い時に困るんだよね
2014/01/18(土) 21:17:41.63
そこまで書かなきゃいけなかった?
2014/01/18(土) 21:21:14.21
>>422
いいから早く消えろってことだよ
やんわり言ったら分からなかった?
2014/01/18(土) 21:26:46.26
>>422
ウザ杉
2014/01/18(土) 21:27:09.30
>>421
BigInt付けるか、他の方法を考えるかしたら?
文字列じゃなくて、変数ってんならアドレスとかの方法もあるけど、
2014/01/18(土) 21:28:17.27
あっちで釣りの続きしてればいいのに
2014/01/18(土) 21:29:11.08
>>425
何で上から目線なの?
自己顕示欲満たしてやってんだから嫌なら答えるなよ。
2014/01/18(土) 21:31:14.66
>>425
基地害のお客様はこちらへお引き取りください。

http://toro.2ch.net/test/read.cgi/tech/1385039352/
2014/01/18(土) 21:32:59.96
そもそもこんなところで質問してあーだこーだ言わないと使えないんだったら、
Rubyをサクッと学習してやったほうが早い。
2014/01/18(土) 21:33:11.61
嬉しそうだなあ、、、
2014/01/18(土) 21:38:18.15
>>426
バーカ
2014/01/18(土) 21:39:58.39
嬉しそうだな、、、
433デフォルトの名無しさん
垢版 |
2014/01/18(土) 23:17:08.53
配列の配列を戻り値にしたいんだけど
どうしたらいい?
2014/01/18(土) 23:21:00.50
そういう場合は配列のリファレンスを使う
2014/01/18(土) 23:47:42.99
自演キモw
2014/01/19(日) 00:03:33.90
Perl厨の自演って分かりやすいな。
文章構成能力がないから、短文で一問一答w
2014/01/19(日) 08:36:16.42
お前の自演の方もなかなか解りやすいぞ、PHP厨
2014/01/19(日) 14:34:32.39
糞言語の糞スレ
439412
垢版 |
2014/01/19(日) 20:39:49.50
>>413
制御文字を除外するために文字が特定範囲にあるか調べる方法がテクいです

>>416
同じことを思ってる人はいるものですね.
使ってみた限りでは問題なく調整してくれるみたいです.
\p{East_Asian_Width} で定義されてるかどうか等で判定しているので
半角カナもちゃんと幅1で計算されます.


MBPrintf.pm の方を使って printf を置き換えることにしました.
HTMLとかにして出力するしかないかなと思っていたところ
さくっと printf を置換えするだけで綺麗に出力できそうなので
大変助かりました. 質問してみて良かったです.
レスありがとうございました.
2014/01/19(日) 20:47:27.99
>>439
やっぱ馬鹿なんだな
お前みたいな奴が日本のIT産業をダメにしてんだよ
2014/01/19(日) 23:18:27.65
同じこと考えるも何も、日本でPerl広めたのはこの人だよ
2014/01/20(月) 01:59:57.20
>>439=無知の極み
2014/01/20(月) 02:09:18.33
受け答えのレベルから推察するとシフトJISを使うことを思いついていない気がする
2014/01/20(月) 04:37:59.99
Perl以前の知能の問題なんだろw
2014/01/20(月) 06:18:02.59
コマンドラインで使う前提での質問なのにシフトJISってw
質問すら読解する能力無いだろ

ほんとにWebProgに帰れよドアホ
2014/01/20(月) 10:35:12.20
ゴミは黙ってろ
2014/01/20(月) 17:02:27.54
>>445
草生やしてんじゃねーよ。
半笑いのつもりか?
半笑いでバカをアピールする>>445哀れ。
2014/01/20(月) 19:07:10.73
連レスかまして無知晒すから、解りやすいぞPHP厨
2014/01/20(月) 22:18:42.87
キチスレ
450デフォルトの名無しさん
垢版 |
2014/01/24(金) 19:52:20.84
Config::INI とかTiny とかのライブラリで
コメント行は ; になっているけど
これを # にするようにできるライブラリはある?
2014/01/24(金) 19:55:55.11
>>450
ある。
回答きたんだからさっさと消えてね。
2014/01/24(金) 20:05:16.41
>>450
ないよ
2014/01/24(金) 20:33:39.02
>>450
ここが参考になる
ttp://to-a.ru/LEeAgi
2014/01/24(金) 20:46:52.82
>>450
ナイアルヨ
2014/01/25(土) 15:26:50.61
その程度も自分で調べられないとか頭悪いんだろうな
調べたら3分かかからなかったけどな
2014/01/25(土) 23:28:51.18
このスレって何人いるんだろう?
2014/01/26(日) 02:01:56.35
日本人だと思う
2014/01/26(日) 02:47:37.23
おまえあれだろさっきまでなぞなぞスレにいただろ
2014/01/26(日) 04:20:51.88
うまいw
2014/01/26(日) 17:46:42.97
>>454 は中国人かも知れんぞ
2014/01/26(日) 19:06:15.38
日本人ですだよ
2014/01/26(日) 19:27:54.97
ニーハオ!
パンニハムハサム ザパニーズニダアルヨ!
ショーグンサマ バンザイ!
テポドン バンザイ!
2014/02/05(水) 19:25:52.75
文字列が二つあって、その比較をしたい
共通1 差分1 共通2 差分2 共通3
みたいな感じで、2箇所まで差分を抽出したい

現実的な速度で動くうまい方法ないかな
2014/02/05(水) 19:28:44.02
>>463
他人に頼る前提で始めるような馬鹿には無理。
2014/02/05(水) 19:37:38.58
>>463
はぁ?
自分でやったけど何秒かかって、これが何秒以内に終わるようにとかも書けねーの?
本当にお前ゴミだな
リアルでもどうせその調子なんだろ
リアルでもゴミだと思われてるけど気付いてる?
2014/02/05(水) 19:44:06.43
自分で試すことすらしない猿未満の低能には言うだけ無駄
猿ですら目的達成のために試行錯誤するのに
2014/02/05(水) 19:54:20.78
$str1 = 'aaabbbcccdddeee';
$str2 = 'aaafffcccgggeee';

$test = $str1 . "\t" . $str2;
$test =~ /(.+)(.+?)(.+)(.+?)(.+)\t\1(.+?)\3(.+?)\5/;
$c1 = $1;
$d11 = $2;
$c2 = $3;
$d12 = $4;
$c3 = $5;
$d21 = $6;
$d22 = $7;

print "$c1 $d11 $c2 $d12 $c3\n";
print "$c1 $d21 $c2 $d22 $c3\n";

結果
aaa bbb ccc ddd eee
aaa fff ccc ggg eee

こんなのはすぐに思い付くと思う
ところがこれは、文字列の長さが100文字とかでもう遅すぎて使えなくなる
2014/02/05(水) 19:57:49.18
こういうのを見るたびに
足りないのは知識やスキルではなく羞恥心なんだなと思う
2014/02/05(水) 21:11:10.78
>>467
ここはごみ捨て場ではありません。
2014/02/05(水) 21:26:16.47
2つの文字列を文字ごとに分解して2つの配列を作ってから↓
ttp://perldoc.jp/docs/modules/Algorithm-Diff-1.15/Diff.pod
2014/02/05(水) 22:05:27.01
実に頭の悪そうな回答がきたなw
2014/02/05(水) 22:39:45.84
diffは多少一致してない部分があってもいい、みたいな曖昧な判定をするから、
余計にややこしいんだよな
2014/02/05(水) 23:42:17.25
うちのLarryに何か用かい?
2014/02/06(木) 01:46:47.51
おれならxor使うけどね
475デフォルトの名無しさん
垢版 |
2014/06/20(金) 08:07:41.06ID:w/WZ2GYd
say "";
2015/02/07(土) 15:14:06.33ID:yYV1uKlQ
ネットで検索する時は単語をスペースで区切ってそのANDで結果を得るけど、
同じことを正規表現でやりたい時はどう書けばいい?
2015/02/26(木) 19:17:26.46ID:0RIBJGtF
「$s が hello と world の両方にマッチする」なら、単に

$s =~ /hello/ && $s =~ /world/

と書くだけじゃないの?質問がよく分からないのだけれども
2015/02/26(木) 20:48:44.94ID:G3LqtZtx
>>476
あえて無理やり正規表現のみでやるなら否定先読みを使う

if( /(hoge|piyo).*(?!\1)(hoge|piyo)/ ){ print "成功\n"; }
2015/02/26(木) 21:43:04.63ID:dwtaxn6g
否定の先読みなんかせんでも
print ‘foobar’ if /(?:foo.*?bar|bar.*?foo)/ ;
で良いんじゃねーのか
2015/02/26(木) 21:54:30.24ID:RGF9/3q7
入力がスペース区切りの文字列なんだよ
2015/02/27(金) 00:27:41.82ID:xTYPuOZ2
仮に検索エンジンみたいなのを書くにしても
何を対象にするのかとか、検索単位とかを決めてもらわんと書きづらいぞ
「同じこと」の通り「対象:Webサイト、単位:ページ」ならGoogleに投げりゃ済むし
2015/02/27(金) 00:34:35.35ID:dW0+IHnO
検索対象も文字列に決まってるだろ
正規表現でのマッチングだっつってるんだから

逃げてないで考えてみれ
2015/02/27(金) 01:46:02.77ID:xTYPuOZ2
>>482
文字列?
テキストでもファイルでもなく?
それって何に使うんだろか…結局、目的は何よ?って話だよ
もしかしたらもっと良い方法があるんじゃ?と勘ぐってしまうのよどうしても
2015/02/27(金) 06:35:52.51ID:dW0+IHnO
またよく判らん屁理屈を
検索の単位が文字列に対してで、それがどこから来たかは問題にならないだろ
まあ、大抵はファイルからだろうけど

で、ファイルならこんなツールがあるよ、みたいな感じで本題から逃げたいのが見え見え
2015/02/27(金) 09:44:40.27ID:xTYPuOZ2
>>484
いやまあ、文字列に対してなら

my $hit = 1;
for my $ptn (split(" ",$search)) {
$s =~ /$ptn/ or $hit = 0;
}

こんなんで出来ると思うけど、こんなんで本当に良いのか?
後出し条件とか大量に出てきそうな感じがするんだが
2015/02/27(金) 20:22:44.34ID:JIR4zlR2
お前は、「ワンライナーでどうやりますか」って質問に
スクリプト作成して答えるのか?

「正規表現でどうやりますか?」って質問には、
普通に正規表現で答えりゃいいだろうが。
実際、質問への答えは、
>>477->>479で終了してる。

後出しを心配するなら実際に後出しされてから
盛大に罵倒しろよ
2015/02/28(土) 15:03:31.15ID:6vZKnEo0
あえて制限をつけてパズルとして解くならともかく
現実的な解としては >>477 で十分だよな
2015/02/28(土) 16:50:40.78ID:05aMjvqG
元々の要求はただのスペース区切りだから、パラメータ数は不定で、
パラメータ抽出して、その全部に対してマッチングを繰り返すという当たり前の処理になる

でも、そんなことは最初から判っているのでわざわざ聞く筈がない

スペース区切りの文字列をそのまま使ってマッチングがしたいなら、
残念ながらperlの正規表現でそんなことは出来ない、が答えとなる
2015/02/28(土) 17:32:00.47ID:JKlRGoUv
本物のコミュ障だなぁ
粘着されてる>>476が、可哀想だわ。
2015/02/28(土) 17:35:55.35ID:e1yM9CPU
質問者のレベルまで勝手に想定するし、、、

>>476から読み取れるのは、拡大解釈しても
「ワンセンテンスの正規表現で書くにはどうしたらいい?」
程度だろーに
2015/02/28(土) 19:58:12.22ID:HemDgo4Q
◯正規表現で、AND検索の実装って、どうやんの?
×正規表現で、「スペースを使って」AND検索の実装って、どうやんの?

「わざわざ聞く筈がない」まで、分かってんなら、
自分の解釈の仕方が間違ってないか、
自問しろよ
492デフォルトの名無しさん
垢版 |
2016/01/10(日) 13:39:26.30ID:/ndDSiBm
971 名前:名無しさん@七周年[] 投稿日:2006/11/11(土) 00:56:10 ID:M8+ahUZV0
自称スーパープログラマー某

強烈加齢臭
メール見ない メール無視
ドキュメント見ない ドキュメント無視
説明聞かない 説明無視
話聞かない 話無視
ガム→むっちゃー むっちゃー むっちゃー むっちゃー
煎餅→バリバリバリバリバリバリ
菓子パン→モグモグモグモグモグモグモグモグモグモグ
カップアイス→むっちゃー むっちゃー ペロペロペロペロ

フロアすべてに響き渡る 超ばかでかいくしゃみ 当然手でおさえない

異音と異振動
ドスーン!ドスーン! ドカーン!ドカーン! バコーン!バコーン! ズドン!ズドン!
机が近いとマウスポインターが飛ぶ 誤操作誘発
書類だしたりしまうだけでドカンドカン

30秒ごとに口と鼻から異音
ふんっっ!    ふんっっ!   

備品破壊 貸与P C 破壊 他人のもの破壊

奴の作ったスクリプトとプログラムは使えない バグ製造機

電話や共有携帯電話 キーボードが油ベタベタ
奴に電話とPCとコンソールは触らせてはいけない
2016/01/10(日) 17:45:28.72ID:lr/f1ZoA
Perl 5 version 16の正規表現で、地の文の一部としてマッチさせたいときに
バックスラッシュでエスケープせねばならない文字の一覧を教えてください
文字集合[ ]の内外で違うとか、文脈依存があればそれも知りたいです
494デフォルトの名無しさん
垢版 |
2016/01/10(日) 22:39:51.49ID:iK/aBQIt
何をしたいのか知らないけど
http://perldoc.jp/index/core
で疑問のほとんどは解決すると思う。

まあ、エスケープすべき文字を知りたいということならそれは「英数字以外」だ。
\Q と quotemeta 関数について調べてみてほしい。
2016/01/11(月) 19:10:22.91ID:JutXF6Cv
>>494
ありがとうございます。
質問の動機は単に手で正規表現を書くときエスケープすべきかどうか
悩ましかったから(実際には「+」や「:」や「#」とか「[ ]」の外の「-」はエスケープ無しでも通っていそう)
だったからですが、エスケープして無害ということであればそうします

それはそうとしてquotemeta便利杉、
2016/01/23(土) 00:11:45.16ID:ACxJywqs
すまん

Perl 6使った奴おるか
2016/01/23(土) 06:03:31.81ID:mGQek17v
>>496
おるけど?

まだ後10年は掛る。
触る必要無し

処理速度とか早くなってんのかも知れんけど、
起動が遅くて、使い物にならん。
挙動もバギー、docも揃ってない。
止事無き事情から、アルファ版を正式版として
リリースしただけじゃね?
2016/02/07(日) 22:53:45.48ID:zQAcaA+r
外部コマンドの話が出てて思い出したけど、
外部コマンドを実行するときに任意の文字列を外部コマンドの引数として渡したい場合、
Linux環境でエスケープすべき文字は?
シングルクォートとバックスラッシュだけエスケープして、それをシングルクォートで括ればOK?
2016/02/09(火) 22:03:18.36ID:390QsJXI
なんかPerl 5.16.1のウィンドーズ版のUTF-8対応は中途半端な希ガス、
use utf8;としてUTF-8でソースコードを書いても
open()のファイル名とかsystem()に与えるコマンド文字列とかが'shiftjis'(正確には'cp932')のままだし、
コマンド引数も'shiftjis'(正確には'cp932')のままだし、
なんでああなんですかね…
2016/02/09(火) 23:41:10.97ID:J9+y92l0
dankogaiがのらりくらりうまく回避しちゃうからじゃない?
俺はもうperlでsjis処理するのはあきらめた。
501デフォルトの名無しさん
垢版 |
2016/02/12(金) 00:23:06.63ID:kq1OODWj
いろいろ面倒なんで、俺は use utf8; を使わないことにしたよ。
502デフォルトの名無しさん
垢版 |
2016/02/13(土) 14:58:53.06ID:vq3C3FT5
>>498
シェルを経由するのならシェルのマニュアルを読みなさいとしか言えない。
bash の場合なら「定義」の項のメタ文字と「クォート」の項。
シングルクォートなら大体大丈夫なはずだけど。
そういう心配をしなきゃならないならシェルを呼ばない方が無難。
シェル経由でなければシステムコールするだけだから。
503デフォルトの名無しさん
垢版 |
2016/02/14(日) 22:17:05.33ID:ctVTXhCg
>>498
もしかして、普段は Windows 使ってるからコマンドラインを作って渡す方法しか知らないとかそういうこと?
504デフォルトの名無しさん
垢版 |
2016/02/14(日) 22:28:48.47ID:d+6VipxK
思い付きで気軽にコマンドライン作って出力をキャプチャできるのがLLの良いところなのにね。
505デフォルトの名無しさん
垢版 |
2016/02/15(月) 12:21:34.14ID:9WjYXC66
>>504
助けてあげる気が無いなら引っ込んでてくれないか?
2016/02/15(月) 15:10:01.24ID:8Z92Uy24
>>498
" " 内では、「$(変数展開) \ `(コマンド置換) !(ヒストリ)」が展開される。
' ' 内では、展開されない。
\ は直後の1文字の機能を無効化する

メタキャラクタ・特殊文字なら、他にも多数。
? * > >> < << | ~ & など

ただし、「! ~」は、bashのみ
507デフォルトの名無しさん
垢版 |
2016/02/16(火) 03:32:48.12ID:y+ZjOqCo
モダンPerl入門 増補改訂版(仮)
http://codezine.jp/book/modernperl2
2016/02/16(火) 21:30:09.30ID:MTIgWlq3
刊行日: 2014年1月予定
509デフォルトの名無しさん
垢版 |
2016/02/17(水) 00:23:01.67ID:wnysiCN2
なんと!もう発売されていましたか!
510デフォルトの名無しさん
垢版 |
2016/02/23(火) 20:40:57.84ID:RqQoWDN5
これからPerlを学ぶメリットってある?
2016/02/23(火) 21:43:14.01ID:Oh6h4g2T
いっぱーぃぁる
いっぱーぁある
いっぱーぁる
いっぱーる
2016/02/24(水) 02:40:25.37ID:lkPqYQmC
UNIXの歴史をエッセンスにしてUNIX以外でも使えるようにした言語だから学ぶ価値はある。
おれの場合はWindows上で毎日使ってる。慣れの問題もあるが他の言語だとこうはいかない。
2016/02/24(水) 02:47:53.12ID:RDH9smV+
他の言語もWindowsで使えるだろ
2016/02/24(水) 05:22:56.15ID:0U45vlYv
バージョンをきにしなくていいなら、Perlは、Windows 2000のパソコンでもつかえる。
現在のRubyは、インストーラがうごかない。インストーラがうごいても、実行時にDLLがどうのこうのいってエラー
Pythonも同様だろう、インストールがめんどくさいのは、損ですよ

Ruby, PythonでもCygwinならいけるかも
Cygwinがきらいなひとは、こまります
2016/02/24(水) 05:26:37.80ID:0U45vlYv
C, Perlならイヤなおもいをしなくていい
2016/02/26(金) 20:40:22.77ID:S1uVBK59
今時Cigwinなんて使ってるやついるの?
使う理由が見当たらないんだけど…。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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