Perlについての質問箱 65箱目 (114レス)
1-

1: 2021/03/27(土)23:52 ID:vQS/WYw3(1/2) AAS
CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
(WEBプログラミング板: 2ch板:php

このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
スレ違いの質問にはスルーか、速やかな誘導をお願いします。
荒らしはスルー推奨。

"The duct tape of the Internet" こと、Perlについての質問箱です。
省11
2: 2021/03/27(土)23:54 ID:vQS/WYw3(2/2) AAS
2以降テンプレNGワードで貼れず。
見たい人は前スレ参照してくださいな。
3: 2021/04/29(木)02:22 ID:vjsl7cGC(1) AAS
LinuxやmacOSのperlは、Term::ReadLineの $term->readline() で日本語などのマルチバイト文字の入力結果が文字化けしてしまうが、
cpanなどを使ってTerm::ReadLine::Gnuをインストールすることで回避できる
Linuxの場合はTerm::ReadLine::Gnuをビルドするためにlibreadline-devも必要になる
4: 2021/04/29(木)14:16 ID:gAM2tnQs(1) AAS
外部リンク[html]:blog.outer-inside.net
5
(1): 2021/04/29(木)23:41 ID:YN7Pg05+(1/3) AAS
CentOS7 だと yum install perl-Term-ReadLine-Gnu でインストールできたよ。
RPM使ってるOSはこれで行けるのではないかな。
6: 2021/04/29(木)23:47 ID:YN7Pg05+(2/3) AAS
インストールすると perl -d でのデバッグ時も Ctrl+P だの Ctrl+N だの矢印キーだの使えるようになっていいね。
7: 2021/04/29(木)23:58 ID:YN7Pg05+(3/3) AAS
Ubuntu だとこれでインストールできた。Debian 系はこれでできそう。
sudo apt install libterm-readline-gnu-perl
8: 2021/05/23(日)06:37 ID:8ydzk+Rl(1/2) AAS
perl 5.34.0 がmacOSのhomebrewにきたけど、cpanがなんか変
9: 2021/05/23(日)06:43 ID:8ydzk+Rl(2/2) AAS
cpanだけじゃなくてperldocもだった
perl5.34.0ではなくmacOSに最初から入っている古いバージョンのperlを呼び出してしまうようだ
自力で回避するには古いperlが呼ばれないようにスクリプトを書き換えるなどの作業が必要
10: 2021/07/06(火)11:11 ID:yWww0KpQ(1) AAS
PerlスクリプトをVSCodeで対話デバッグするにはどうしたらいいですか?
11
(2): 2021/07/07(水)01:34 ID:bUHYGk47(1) AAS
例えば、Ruby では、p, pp を付けてオブジェクトの内容を確認できるので、デバッグまではしない。
Break Point で止めたり、デバッグしたいのなら、誰かが作った拡張機能を探す

require "csv"

input_str = <<"EOT"
-0.0,1.2.3
9..9,-0
EOT
省11
12: 2021/07/07(水)03:43 ID:XEShr1cy(1) AAS
>>11
情報量ぜろ!w
13: 2021/07/08(木)01:00 ID:gY+tXenb(1) AAS
>>11
死ね
14: 2021/07/08(木)10:49 ID:nEG9xKCJ(1) AAS
uby厨は死んで良いが
perlもいい加減やめた方がいい言語
新規で使うなんてあり得ない
15: 2021/07/08(木)15:43 ID:PzoSTOmc(1) AAS
Perlは「可読性?何それうまいの」的なノリでやる自分の作業用として重宝する
16: 2021/07/10(土)14:27 ID:jbIVp5r2(1) AAS
小規模な一次的に使うツールみたいなのは今でも新規で作ることあるけどね
シェルスクリプトで書くと余計にぐちゃぐちゃで分かり辛くなったり遅くなりそうな場合とか
17: 2021/08/18(水)18:30 ID:VDhd+cn2(1) AAS
元々 awk や sed 駆使したシェル芸を代替するためのコマンドだから本来の地位に戻っただけとも言える

ディレクトリ掘って依存設定ファイル作らないとモジュールのインストールもできない JavaScript とか Go と違って cpanm で必要なモジュール放り込めばファイル一個で雑に動くからやっつけ仕事には未だによく使う
18: 2021/08/18(水)19:15 ID:bMnOTwac(1) AAS
褒めてんだかけなしてるんだか
19: 2021/08/18(水)20:46 ID:8PJNJj34(1) AAS
ダクトテープがダクトテープとしてよく働いてくれる、というのは最高の賛辞やろ。
キレイなことだけが誉め言葉ではない。
20: 2021/08/18(水)21:14 ID:nwD63Gpn(1) AAS
Perlはホワイトハッカー御用達の言語でしょ
21: 2021/08/21(土)00:23 ID:Zmo3uqZM(1) AAS
あらまオレ様はホワイトハッカーだったの?
22: 2021/08/21(土)05:16 ID:dH+vFBpp(1) AAS
黒ぃハッカー
23: 2021/09/12(日)04:25 ID:RfonpbSj(1) AAS
MediawikiのXMLをパースするプログラムを書いてるんですが、
人間が日常的に使っている[[自然言語]]を[[コンピュータ]]に処理させる一連の技術であり
という文章は[[]]内の文字を<a href>タグで置換することはできたのですが、

応用例としては[[入力予測|予測変換]]、[[インプット メソッド エディタ|IME]]などの文字変換が挙げられる。
このように[[*1|*2]]と2重に入っている文字列の置換がどうしてもうまくいきません。
この場合は、<a href=*2>*2</a>と置換したいのですが、どうしたらいいでしょうか?
24: 2021/09/12(日)05:49 ID:zHKafq1A(1/3) AAS
s/[[(.*?(|(`*?))]]/$3 ? $3 : $1/ge
かな?試してないけど。
25: 2021/09/12(日)05:51 ID:zHKafq1A(2/3) AAS
あ、ごめん。| の所は \| ね。
26: 2021/09/12(日)05:52 ID:zHKafq1A(3/3) AAS
[と]も直前に\要るね。
27: 2021/09/12(日)07:06 ID:jZMYjdNi(1) AAS
なぜ、Perl のXML パーサーを使わないの?

例えばRuby なら、Nokogiri と言う、HTML/XML パーサーがある。
内部的には、Libxml2 モジュールを使っているのかな?

たぶん、Perlにもあるはず
28: 2021/09/12(日)15:32 ID:89s8PaYB(1) AAS
パースするのがXMLじゃないからだな。
29
(1): 2021/09/13(月)10:13 ID:E86z1ItW(1) AAS
s/\[\[(.*?(\|(`*?)))\]\]/$3 ? $3 : $1/ge
のパターンで試してみましたが、結果は「インプット メソッド エディタ|IME」
と置換されてしまいます。
(.*?)の部分で、|以降の文字列も含めてマッチングされているようで
それ以降のパターンマッチが効いてないようです。
30: 2021/09/13(月)10:38 ID:AXNI3otr(1) AAS
このへんで確認しろ。外部リンク:qiita.com
31: 2021/09/13(月)23:15 ID:vef3NqnY(1) AAS
strawberry perl が34をリリースしないのはなぜだ
32: 2021/09/15(水)19:04 ID:fHmj5hYp(1) AAS
スクレイピングすると地獄へ落ちるって本当ですか?
33: 2021/09/15(水)23:51 ID:3vtMVT28(1/2) AAS
落ちたり落ちなかったり
34: 2021/09/15(水)23:54 ID:3vtMVT28(2/2) AAS
>>29
それ . が ` になってるよ。直してやってみたらちゃんとできたよ。

$ echo '[[インプット メソッド エディタ|IME]]' | perl -pe 's/\[\[(.*?(\|(.*?)))\]\]/$3 ? $3 : $1/ge'
IME
$
35: 2021/09/18(土)03:37 ID:YPBxfQEw(1) AAS
スクレイピングの勉強するのですが、下手するとF5アタックになるとかの法的リスクと回避法を重視している入門書ってありますか?
今の所やりたいことは、特定の市町村の5年分気温気象データを収集して自分用に加工
近所のコインランドリーの稼働データを集計して空いてる確率が高い時間帯を調べるの2つです
前者は膨大なデータを取得する必要があります
後者は10分から20分おきにアクセスすることになります
36: 2021/09/18(土)03:45 ID:VuuEM7MI(1) AAS
まるぽ
37: 2021/09/18(土)18:17 ID:J85RgKD5(1) AAS
頭のおかしい人に以下のようなことを言われました

>>基本、スクレイピングは営業妨害との戦い。
>>どの本にも、そう書いてある。
>>スクレイピングを推奨する本はない

具体的な書籍名を教えてください

>>5ch は、マルチポスト禁止!
>>同じ質問を、複数のスレや外部のサイトに書いてはいけない
省1
38
(2): 2021/10/02(土)06:38 ID:b+9bP+Kg(1) AAS
socketでデータを受信すると、
データの途中に「残りバイト数」が挿入されてしまうことがあるんだけど、これはどう取り除けばいいの?
例えばこんな感じになる
wtjjpodjtjtjaajjgjjaatwdjjg@gptjwttdmttjmttpwm'jajt
1f
1234567890123456789012345678901
残りバイト数(1f)を16進数で表した文字列が挿入されてる
省2
39: 2021/10/02(土)14:54 ID:lWVjrMOX(1) AAS
>>38
なにそれ?文字で挿入されるの?そんなの初めて聞いたなあ。送る側で入れてるだけなのでは?(そうでなければ呼んでるライブラリが何かおかしいか)

socket 関係はバッファリング避けるために sysread() 使った方が良い場合があるよ。
select で入力待ちをした後で読み込みとかね。
後は気を付けるとしたらノンブロッキングにしてるかどうかかな。
40
(1): 2021/10/03(日)14:58 ID:ngVDhrCg(1/2) AAS
activeperlからStrawberryperlへ移行を検討しているのですが、
activeperlで使用しているモジュール( Win32::EventLog::Message)が
cpanから削除されておりbackpanには残っていました。
外部リンク:cpan.metacpan.org
上記から、Win32-EventLog-Message.tar.gzはダウンロードできたのですが、
当方perl初心者でStrawberryperlへのインストール方法がわからず困っております。
どなたかインストール方法についてご教授お願い致します
41: 38 2021/10/03(日)15:42 ID:Etawdk1b(1) AAS
お騒がせしました
Transfer-Encording: chunked
ってやつだった
これかどうかを確認して別処理か…面倒くさあい
42
(1): 2021/10/03(日)20:15 ID:s9ykO0bu(1) AAS
>>40
マジレスするとperlを捨てるチャンス
43: 2021/10/03(日)20:18 ID:prztZm/y(1) AAS
>>42
そのかわりに何を勧めんの?
Windowsのイベントログを扱いたいヤツに。
44: 2021/10/03(日)22:00 ID:ngVDhrCg(2/2) AAS
40です。
通常Makefile.PLでインストールするようなのですが、
上記tar.gzには、Makefile.PLがなく、
Message.pmがあるのですが、
これは、strawberryperlにはインストールできないのでしょうか?
45: 2021/10/03(日)22:14 ID:BlQUkwCi(1) AAS
できるかどうか自分で試すしかない
他人にやってもらおうってのは虫が良すぎ
46: 2021/10/21(木)12:31 ID:gLUi04Um(1/2) AAS
my $str = "<img src=\"./test1.png\" style=\"width:100px;height:100px\">";
./test1.pngの部分を./test2.pngに置換するにはどうやればいいんですか?

my $str =~ s/test1.png/test2.png/g;というのじゃなくてtest1.pngの部分がどんな
画像URLでも置換できるように
47: 2021/10/21(木)12:49 ID:hpQkeFJy(1/2) AAS
test2.pngを変数にすればいいだけ
48: 2021/10/21(木)12:53 ID:gLUi04Um(2/2) AAS
いやそうじゃなくて正規表現使ったやつで
49: 2021/10/21(木)13:11 ID:hpQkeFJy(2/2) AAS
s/src=".+?"/src="test2.png"/
50: 2021/11/08(月)18:04 ID:H7HFgRE2(1/2) AAS
{a}ab{abc}
{}で囲まれたaだけdに置き換えたい
どうやればいいんですか?

{d}ab{dbc}になればいいってこと
51: 2021/11/08(月)18:59 ID:JELTvgr2(1) AAS
それだけじゃ分かんない
全ての条件を書かないと
それが解なんだけどね
52: 2021/11/08(月)22:10 ID:H7HFgRE2(2/2) AAS
本当にやりたいのは
my $line = "<img&#160;src='aaa.png'&#160;width='300'&#160;height='200'>&#160;画像説明";
<>の中にある全ての&#160;を半角スペースに置き換えたいっす

実行結果は<img src='aaa.png' width='300' height='200'>&#160;画像説明となればいいっす

送信したときブラウザが勝手に半角スペースを&#160;に変換しちゃうみたいなのでタグ内の半角スペースだけ元に戻したいから
53: 2021/11/09(火)00:02 ID:J0R6dl97(1/2) AAS
sub f {
my $s = shift;
$s =~ s/ / /g;
return "<$s>";
}

$line =~ s/<(.+?)>/f($1)/eg;
54: 2021/11/09(火)00:03 ID:J0R6dl97(2/2) AAS
sub f {
my $s = shift;
$s =~ s/&#160;/ /g;
return "<$s>";
}

$line =~ s/<(.+?)>/f($1)/eg;
55: 2021/11/09(火)00:36 ID:bwlPyLJQ(1) AAS
ありがとうございました
56
(2): 2022/01/06(木)18:30 ID:LRBDWWjE(1) AAS
printで出力すると/nで改行できません
二重引用符で括ってもできません
なにをやっても/nがそのまま表示されます
調べても二重引用符で括れとか〈br〉とかしか出てきません
57: 2022/01/06(木)18:45 ID:qZej6RdN(1) AAS
スラッシュnは改行じゃないからな
58
(1): 2022/01/06(木)20:07 ID:HyMw34ze(1) AAS
斬新な質問だ。w
斜めの縦棒を日本語キーボードで入力しろ、と言われたらたしかにそうなるかもだが。
59: 2022/01/07(金)00:42 ID:+rjvm48j(1/2) AAS
>>56
\n でやってみな。
60: 2022/01/07(金)00:45 ID:+rjvm48j(2/2) AAS
>>58
やはり \ (\x5c) の歴史的な事情を知らないと分からないのだろうな。
61: 56 2022/01/07(金)18:30 ID:j8/UZCr2(1) AAS
¥マークを\に変えたらできました
紛らわしいもんですね
62: 2022/01/08(土)10:43 ID:mAjXIrhA(1) AAS
そう。紛らわしいんだ。
63: 2022/01/08(土)23:05 ID:Df3tzX0P(1) AAS
逆スラッシュは、日本語・Windows 用のキーボードで、半角の\ と同じ

半角の\ と見た目が同じでも、異なる文字コードの文字があるので、
それは使わないようにすべき!
64: 2022/01/09(日)19:38 ID:C8vy8rqb(1) AAS
プログラムコードの中に全角文字を入れない
というだけで十分では?
65: 2022/01/09(日)20:41 ID:G7UaEudb(1) AAS
そんな話はしていない。
アホなの?
66: 2022/01/09(日)20:58 ID:j/1ajBbY(1) AAS
運用でカバーできる…そんなふうに考えていた時期が俺にもありました
67: 2022/01/10(月)00:32 ID:lVSGmVUf(1/2) AAS
おまいらの話がさっぱりわからん

もしかしておまいらの画面にはレス中の \ が \ と表示されてるのか?
68: 2022/01/10(月)00:32 ID:lVSGmVUf(2/2) AAS
あーやっぱりそうかww
69: 2022/01/10(月)00:57 ID:av6tewvz(1/3) AAS
U+005C なのか U+00A5 なのかという問題
70
(1): 2022/01/10(月)01:03 ID:av6tewvz(2/3) AAS
以前 Linux の端末で Perl のプログラムで改行として ¥n を入れたらそのまま画面に ¥n が出て来て驚いたことがあったが、
その時はキーボードの「¥」を押すと U+00A5 が入力されており「\」を押すと U+005C が入力されている状態だった。
もちろんキーボードの通りに端末画面に出る。

ま、しかし、これが本来あるべき姿だよな。
1-
あと 44 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.047s