X


Perlについての質問箱 64箱目

■ このスレッドは過去ログ倉庫に格納されています
2019/02/01(金) 09:44:37.18ID:1/Kr4Qjk
CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
(WEBプログラミング板: https://medaka.5ch.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.28.1)

▼前スレ
Perlについての質問箱 61箱目
http://toro.5ch.net/test/read.cgi/tech/1381561905/
Perlについての質問箱 62箱目
http://toro.5ch.net/test/read.cgi/tech/1385039352/
Perlについての質問箱 63箱目
https://mevius.5ch.net/test/read.cgi/tech/1392820583/
2020/08/02(日) 20:29:18.39ID:Vanmrtqf
バグの無いことの証明が不可能なのは、
ゲーデルの不完全性定理とかあのへんまで突っ込んでいくからであって、
99.9%okなら良しとする現実世界なら普通に可能
2020/08/03(月) 23:11:06.80ID:/fZxIKnK
>>623
そしてその0.1%が理由になって戦争になるわけですね
2020/08/09(日) 01:00:36.25ID:JDEJdFnx
過疎ってると落ち着く
2020/08/13(木) 15:32:24.87ID:g8OxF1lY
UTF8からShift-JISに変換し、その中で変換できなかった文字列はhtml数値文字参照に変換したいです

(UTF8)楽しいね🙂→(Shift-JIS)楽しいね🙂 ;
このような風にです

こちらのサイトを参考にして↓のように書いてみたのですが
https://blog.netandfield.com/shar/i/details/004482.html#home


use Encode;
my $word = "楽しいね🙂";
Encode::from_to( $word, "UTF8", "Shift_JIS", Encode::FB_HTMLCREF);
print "$word";

(結果)
?y??????🙂 ;

と、元の日本語が文字化けしてしまいます
どこを直せばいいでしょうか?

Perlのバージョンは5.18.2
Encodeモジュールのバージョンは2.49です
2020/08/13(木) 16:19:08.99ID:HLH3bdVq
その出力先(ターミナル?コンソール?)は、そもそもシフトJISテキストを表示できるのか?
できない場合は、プログラムは関係なく、ターミナルが文字化けする。

ためしにtext.htmlのようなファイルに出力してから、その内容を確認したら?
2020/08/13(木) 16:44:17.95ID:DQVPr3Tq
前にやろうとして諦めた
pythonだと簡単

try:
  str_sjis = str.encode("CP932")
except UnicodeEncodeError:
  print str.encode("utf-8")
2020/08/13(木) 16:48:34.24ID:/BJ4BGZD
>>628
そのレベルならPerlでも簡単
絵文字だけ抜き出してHTML特殊文字化 でしょ
2020/08/13(木) 17:00:11.25ID:g8OxF1lY
>>627
ターミナルです
ファイルに出力してそれをShift-JISとして開いたら文字化けもなく見ることができました
内部的には問題なかったのですね
ありがとうございました
2020/08/13(木) 22:25:11.59ID:L5UfXSE8
>>628
笑わすんじゃねーw
2020/08/15(土) 08:35:13.06ID:ACgG3ouC
プロトタイプ属性の指定がどうやってもできん

use feature 'signatures';
sub foo :prototype($$) ($left, $right) {
return $left + $right;
}

これで構文エラーになる理由が全く分からん
2020/08/15(土) 10:52:43.99ID:N6F3nDZU
釣れますか?
2020/08/15(土) 12:09:58.58ID:ybTBju6n
同時には使えんやろ
2020/08/15(土) 14:02:00.78ID:ACgG3ouC
え????

use feature 'signatures';
sub NAME(SIG) BLOCK # with signature
sub NAME :ATTRS (SIG) BLOCK # with signature, attributes
sub NAME :prototype(PROTO) (SIG) BLOCK # with signature, prototype

構文こうなってるけど?
636デフォルトの名無しさん
垢版 |
2020/08/15(土) 15:48:07.40ID:k2IZqmRY
以下のようなhtmlがあるとします
<div>
<p>AAA</p><p>BBB</p><p>CCC</p><p>DDD</p>
</div>
<p></p>の構文が4個の場合は、構文を文字列として2個ずつ別の変数に分けたいです。
($str1 に"<p>AAA</p><p>BBB</p>" 、 $str2に"<p>CCC</p><p>DDD</p>"
<p></p>の構文が6個の場合は3個ずつ、8個の場合は4個ずつ・・・と前半と後半で分けて
2つの変数に代入したいのですが、方法はあるでしょうか?
2020/08/15(土) 16:19:42.08ID:V1MJgzDn
そら一発では無理だろう
一旦配列に入れてから真ん中で分ける
638デフォルトの名無しさん
垢版 |
2020/08/15(土) 16:34:06.12ID:o+i8zw5r
釣りに引っ掛かるな
639デフォルトの名無しさん
垢版 |
2020/08/15(土) 17:04:09.01ID:gFfdk9Ij
>>636
はい。あります。
2020/08/15(土) 19:50:33.78ID:dQrORRCv
ちょろい問題。単なる初心者で釣りなんかじゃないでしょう。

@foo = (); @bar = ();
while ($str =~ s{^[\s\S]*?<p>(.+?)</p>(.*)<p>(.+?)</p>[\s\S]*$}{$2}){
push @foo, $1;
unshift @bar, $3;
}
2020/08/15(土) 19:55:02.56ID:dQrORRCv
2行目間違えてた。
while ($str =~ s{^[\s\S]*?<p>(.+?)</p>(.*)<p>(.+?)</p>[\s\S]*?$}{$2}){
2020/08/15(土) 20:01:49.33ID:UM/CpThf
# 元ネタ
my $html = '<html><p>hoge1</p><p>hoge2</p><p>hoge3</p><p>hoge4</p><p>hoge5</p><p>hoge6</p><p>hoge7</p><p>hoge8</p><p>hoge9</p><p>hoge10</p></html>';

# 全部のpタグの中身を引っ掛ける

my @p_list = $html =~ /<p>(.+?)<\/p?/g;

# 引っかかった数取得

my $size = int(@p_list);

# 前半と後半に分けて突っ込む

my @mae = @p_list[0..int($size/2)-1];

my @ato = @p_list[int($size/2)..$size-1];

# 結果表示テスト


print Dumper([\@mae, \@ato]);
2020/08/15(土) 20:03:08.33ID:UM/CpThf
なんだこの糞改行(´・ω・`)


# 全部のpタグの中身を引っ掛ける
my @p_list = $html =~ /<p>(.+?)<\/p>/g;

# 引っかかった数取得
my $size = int(@p_list);

# 前半と後半に分けて突っ込む
my @mae = @p_list[0..int($size/2)-1];
my @ato = @p_list[int($size/2)..$size-1];

# 結果表示テスト
print Dumper([\@mae, \@ato]);
2020/08/15(土) 20:11:32.28ID:UM/CpThf
俺のは巨大なHTMLだとメモリが死ぬ
安全策なら>>640
2020/08/15(土) 20:49:31.50ID:ODJGcA2C
>>644
まあ、そんなに巨大だったら、どっちにしろ死ぬやろけどな。w
本気で心配するならチビチビつままないと。
2020/08/16(日) 03:38:06.22ID:Degs0Zl8
Ruby の、Nokogiri で、スクレイピングしてみた

require 'nokogiri'

doc = Nokogiri::HTML(<<EOT)
<div>
<p>AAA</p><p>BBB</p><p>CCC</p><p>DDD</p>
</div>
EOT

p_tags = doc.css( "div > p" ) # div の直下のp
half_cnt = p_tags.length / 2

def make_p_str( ary ) # 要素の配列から、文字列を作る
str = ""
ary.each do |elem|
tmp = elem.to_html # 要素
tmp.chomp! # 末尾の改行を削除する
str += tmp # 連結
end
str
end

p str_before = make_p_str( p_tags[ 0...half_cnt ] ) # 前半
p str_after = make_p_str( p_tags[ half_cnt..-1 ] ) # 後半

出力
"<p>AAA</p><p>BBB</p>"
"<p>CCC</p><p>DDD</p>"
2020/08/16(日) 06:28:33.83ID:Rc5RuLFB
Mechanizeでやれる?
648646
垢版 |
2020/08/16(日) 07:20:54.63ID:Degs0Zl8
Mechanize とか、curl + Nokogiri でも、静的なページなら、DOM を取得できるけど、

Ajax など、JavaScript で、動的にDOMを組み立てている場合は、
sleep するとか、Selenium WebDriver などを使わないと、DOMを取得できない

5ch などは、空のHTMLを送ってきてから、
Ajax で、ページの内容を取得しているから、
HTMLをスクレイピングするだけでは、タイミングによっては内容が存在しない
649646
垢版 |
2020/08/16(日) 07:27:51.64ID:Degs0Zl8
Ruby で、curl, Nokogiri の例

require 'nokogiri'

html = `curl http://www.example.com/`
doc = Nokogiri::HTML( html )

elements = doc.css( "h1" )
puts elements.first.content #=> Example Domain

open-uri の例

require 'open-uri'
require 'nokogiri'

url = 'http://www.example.com/'
doc = Nokogiri::HTML(open(url))
2020/08/16(日) 07:29:48.83ID:Rc5RuLFB
プロテクトのつもりは無いんだろうけど、機械にやさしくない
最近だとメルカリのページ取得して、なんで空? と思った
651646
垢版 |
2020/08/16(日) 09:02:04.52ID:Degs0Zl8
Selenium WebDriver なら、指定した要素が出現するまで、指定した時間だけ待ってくれる

漏れは、10〜20秒ぐらいを指定してる
2020/08/16(日) 09:19:07.80ID:Rc5RuLFB
webであれこれしたいなら、javaが近道なのは自明だな
2020/08/16(日) 13:18:51.97ID:YKxJCnVG
Javaは、なにをするにしても遠回りやろ。w
2020/08/16(日) 14:20:54.02ID:bYLilpPQ
逆にPerlできないことってなんだ?
ライブラリは揃ってるものとして
2020/08/16(日) 15:22:58.74ID:9u3LM4y1
あんまりない
弱いのはライブラリ面なので言語的に不足してる機能はそれほどない
2020/08/16(日) 16:02:30.33ID:0524gJdA
CPANを探してなかったという経験がないしな
2020/08/16(日) 18:58:24.31ID:5UHvUqAR
なら、C++があれば他の言語は要らなくなる。
さらに極言すれば、アセンブラがあれば他の言語は要らなくなる。
2020/08/16(日) 19:02:50.27ID:YKxJCnVG
GUIは弱い。
まあ強いと言っていいのはC#くらいだから、しゃあない?
659636
垢版 |
2020/08/16(日) 20:53:31.17ID:we+09hKc
返信が遅くなってすいません
>>640,643,646
勉強になりました
ありがとうございました
2020/08/17(月) 01:24:18.13ID:U9ZmQUIp
GUI必要なツールはC#使うけど、CUIだけとか引数もなくて単に実行するだけとかそういうのだいたい全部Perlで書いてる
2020/08/17(月) 07:07:29.41ID:lN4Qioc8
GUIって結局、裾野の方々でも使えるようにする工夫であって、
テキストエディタで条件設定した方がよっぽど効率いい場合が殆どなのでは

自分専用ツールでGUIで作った記憶がない
662デフォルトの名無しさん
垢版 |
2020/08/17(月) 07:25:27.72ID:KZ//oCQL
>>661
スマホのアプリはテキストエディタを使うのが主流か?
2020/08/17(月) 07:41:47.99ID:lN4Qioc8
スマホのは作ったことすらないけど、
CUIなんて選択肢がそもそもあるのか?
2020/08/17(月) 10:16:26.85ID:MSHB+00t
>>661
だからなに?
ああそう、とかいってほしいの?
2020/08/17(月) 11:54:02.58ID:p+skW/fD
PerlでスマホのGUI作れるんですか?
2020/08/17(月) 12:04:54.68ID:OdJd9Pxh
GUIが必要ないものはPerlでって話でしょ
これに噛み付いた>>661が意味不明
2020/08/17(月) 12:18:14.46ID:lN4Qioc8
噛みつかれた、と思っちゃうのが糖質なんだよな
書き込みがみんな攻撃に見えるっていう
2020/08/17(月) 12:19:54.46ID:p+skW/fD
>>653
だってJavaとPerlでスマホのGUIを比べるのがどうかしてる
2020/08/17(月) 14:26:41.31ID:MSHB+00t
>>667
わけがわからなすぎるからな。
攻撃に見えてもしゃあない。

オレには隙自語に見えた。

で、本人はどういうつもりなの?
2020/08/17(月) 15:10:53.35ID:Y3iw4HO/
http://hissi.org/read.php/tech/20200817/TVNIQiswMHQ.html

>>669は聞きたい事が多い
2020/08/17(月) 17:15:38.44ID:fOsr3uhu
そうだねでいいんでね おれもそう思う
GUIがあった方がいいなって時はつければいいし
672デフォルトの名無しさん
垢版 |
2020/08/17(月) 18:21:33.00ID:2KNIyB/f
あー。PerlでスマホのGUIか。書けたらいいな。
ていうか世界は広いからとっくの昔に誰かが作ってそう。
2020/08/17(月) 22:59:27.97ID:6nkEOrou
その昔はGUIといえばperlだったんだけどな
2020/08/18(火) 01:35:21.75ID:IZwRntbA
Perl(パール)[Pathological Eclectic Rubbish Lister]
Google翻訳[病理学的折衷的なゴミリスター]

どうしてこうなった?
675532
垢版 |
2020/08/18(火) 02:10:03.41ID:B3TNMnkL
perlのguiといえばTk, Tkx, wxWdget, Qt, GTK …色々あって
やろうと思えばやれると思うけど。

オレはPerlではTk, Tkxしかやったこと無いけどさ
2020/08/18(火) 02:46:33.41ID:TScP2Zja
GUI必要がなら普通にWebアプリでいいと思う
2020/08/18(火) 03:58:15.17ID:R/jmWoBG
>>674
ラクダ本にそう書いてなかったっけ?
2020/08/18(火) 04:26:54.25ID:G86KA+uV
>>677
「病理的に異常な妥協を寄せ集めたゴミくずリストを作るものです」と?
2020/08/18(火) 06:36:49.23ID:bsH9de+P
処理が終わったらwindowsにポップアップを出すくらいでいいわ
2020/08/18(火) 12:11:19.03ID:1vCwIsCs
>>676
同感
適材適所
Perlは高度なバッチ処理が適所だと思う
681デフォルトの名無しさん
垢版 |
2020/08/18(火) 22:52:59.68ID:MJ+frvDl
>>673
馬鹿?それとも釣り?
2020/08/18(火) 23:26:43.99ID:yJqh7w6C
>>681
perl/tk をご存じないのか?
2020/08/18(火) 23:33:31.65ID:bsH9de+P
やれるというのと、それを目標に人が集まってくるのは別

rubyのrailsとかpythonの機械学習とかみたいに、
GUIの為にperlを覚えたような奴を見たことない
684532
垢版 |
2020/08/19(水) 01:09:23.66ID:jnnRlfyg
GUIのために言語を選ぶ?
少なくともperlにおいては、そんなことないだろJK
2020/08/19(水) 01:48:37.55ID:zoQbwZV2
>>682
そんなに出来のいいものではなかった記憶。
Tk自体も、Perlとのなじみかたも。

CでXを直接使うよりはマシに違いないが。
686デフォルトの名無しさん
垢版 |
2020/08/19(水) 02:10:38.31ID:hChDa2LJ
>>682
その前にWindowsのGUIの方が普及しただろうが
あれはperlで書かれていたのか?
馬鹿は黙っていればいいのに
2020/08/19(水) 03:51:07.71ID:GjYS4Ydc
もはや何の話題だかわからん罠
CGIでPerlを使う話からどうやったらこんなカオスが生まれるのか
2020/08/19(水) 04:27:02.72ID:zJmcQroA
CGIの話なんかしてない
689デフォルトの名無しさん
垢版 |
2020/08/19(水) 07:00:19.93ID:OrygHj4v
Microsoftが卑怯な手段を使ったから普及したのでは?
2020/08/19(水) 11:45:52.26ID:zoQbwZV2
Microsoftがどうこうというよりも、ほかがどんくさかっただけやろ。

Windowsは、メッセージループとかコピペとか、最初からけっこうこなれてたような。
どっちも、今ならあんな仕様にはきっとしてなさそうな気はするが、当時としてはなかなか。
691デフォルトの名無しさん
垢版 |
2020/08/20(木) 22:13:21.51ID:ID9+Ua56
で、GUIと言えばperlと言われたのはいつの時代のどのアプリやOSなのかね
個人的な思い込みではなく
2020/08/20(木) 22:27:06.96ID:PnM8QZm3
多分、GUIとCGIを間違っている
693デフォルトの名無しさん
垢版 |
2020/08/20(木) 22:29:40.80ID:Eg0HvHSQ
CUI + CGI = GUI
2020/08/20(木) 23:31:14.76ID:S0D8s+y7
GUCCI
695デフォルトの名無しさん
垢版 |
2020/08/21(金) 19:46:29.97ID:T2XB7xYy
そういや Perl/tk はその後日本語対応うまくいったのかな?
最初使った時にダメでそれ以来使ってないのだが。
2020/08/21(金) 23:08:48.53ID:W/xJ14vU
perlはモジュールの品質が悪すぎたな
どうにでもかけすぎた上にperlのオブジェクト指向きつい感じ
697デフォルトの名無しさん
垢版 |
2020/08/22(土) 01:02:30.20ID:mNPWH1ii
君はpythonかjavaでもやってなさい
2020/08/22(土) 04:05:19.81ID:sSvsNkf5
オブジェクト指向は万能じゃないからな

ライブラリを効率的に使い回す方法をあれこれ模索してたら、
名前空間の衝突を積極的に使う方法に行き着いて、
いろんな型を統一的に扱えるように書けるようになったら、
これ何も知らない人から見たらただのオブジェクトだよなということで出来た
最終的なものに付けた名前であって、最初からオブジェクト指向を目指した訳ではない
そこからオブジェクトなんだったらどうせだからと、面倒くさい宗教に変わっていってしまった

だから、大層なものである必要は全然なくて、メンバーとメソッドが使えるだけで十分便利
699デフォルトの名無しさん
垢版 |
2020/08/22(土) 18:52:55.61ID:A1+CrrR8
データ(オブジェクト)を中心に処理を考えるみたいなのが発展してオブジェクト指向になったのでは?
どう発展して来たかは今更どうでも良い話だが。
2020/08/22(土) 20:13:39.18ID:V7i9nnyT
オブジェクト指向でやるようなアプリはPerlでやるべきではないと思ってる
Perlはバッチ処理一択
701デフォルトの名無しさん
垢版 |
2020/08/22(土) 20:25:54.19ID:TIWYvQ38
別にOOPで作りたいならPerlでいい。
Perlは文字列を扱うスクリプトで本領を発揮するもんだけどね。

>>770
そもそも動的片付けの言語でOOPはクソだと思ってるわ。
2020/08/22(土) 20:28:35.53ID:TIWYvQ38
>>701
perl「でも」いい。
2020/08/22(土) 20:57:54.05ID:sSvsNkf5
膨大なライブラリはオブジェクト指向のお陰なのに
小規模なダクトテープ的な処理しかしない人には不要だろうけど
2020/08/22(土) 21:21:00.81ID:V7i9nnyT
>>703
ライブラリはその通りだった…

ただメインモジュールを上位でオーバーライドしてどうのこうのとか
そういうのはいい思い出無い
705デフォルトの名無しさん
垢版 |
2020/08/22(土) 21:22:47.78ID:TIWYvQ38
>>703
Perlでダクトテープ以上のものを作ろうとは思わないから。
ま、しゃーない。
706デフォルトの名無しさん
垢版 |
2020/08/22(土) 23:16:49.85ID:l6QJWt6E
GUIならPerlとか書いてた人はどうした?
2020/08/27(木) 23:16:27.34ID:1q6VaEiG
普段は過疎っているクセに誰かが質問を書き込んだ途端クソどうでもいいヤジ馬(質問には一切答えられない)がわらわらと湧いてくる
2020/08/28(金) 11:01:54.67ID:46MGlztH
数日前からLWPでhttpsにつながらなくなったんですが、verify_hostnameを無効にするとつながります
Windows 10、straberry perlなんですが、Windows側の証明書の問題とかあるのでしょうか?
Mozilla::CAなど関係しそうなモジュールは最新にしてみましたが、改善しませんでした
709デフォルトの名無しさん
垢版 |
2020/08/28(金) 12:46:24.74ID:RBhGMmXK
>>708
復元ポイントに戻る
710708
垢版 |
2020/08/28(金) 13:20:47.23ID:46MGlztH
>>709
直るかもしれないけど、また何かが更新されてダメになるよね
ほかにないですか?
2020/08/28(金) 14:19:31.83ID:hCb6zyPo
証明書関連なんだろうけど、サーバの証明書が悪化してしまったのでは
クライアントとしては無視しないといけない状態に
2020/08/28(金) 15:04:08.50ID:CzRmvnjE
Let's Encrypt みたいな無料の証明書を使っているサイトかも。
そういうサイトが多い

証明書の期限切れ
2020/08/28(金) 15:59:10.37ID:2oQuEAFk
>>708
特定サイト(接続先)の話でしょ?
そのサイトの証明書の期限切れだと思うよ
714708
垢版 |
2020/08/28(金) 18:25:47.79ID:46MGlztH
レスありがとうございます
特定サイトではなく、また、ブラウザでアクセスできてLWPではできないという状況です
その後、セキュリティソフトにESETを使っているのですが、
ESETにブロックされていることが分かりました
Mozilla::CAの証明書が気に入らないのか、ESETの不具合なのか..
どちらかが更新されるのを待ちたいと思います
2020/08/28(金) 21:31:54.57ID:Evqv90T1
サーバーがオレオレ証明書だとそのエラーになる
2020/08/28(金) 21:46:39.55ID:hCb6zyPo
別にブラウザ作ってる訳でなし
どのサイトでも、ではなくて単に、複数の特定サイトでしょう
717708
垢版 |
2020/08/29(土) 10:51:10.89ID:T8S0679o
確かにgoogleやyahooは大丈夫です
twitterはダメですが、こんな所もオレオレ証明書なんですか...
2020/08/29(土) 11:09:22.43ID:jSrLwW2w
けっこうキツい後だしやな。
2020/09/04(金) 11:45:52.13ID:MZwyBFot
chocolateyでwindowsにstrawberry perlいれてたんだけど
upgradeしたらアンインストールされてインストールでこける
すでにインストール済みだとか、でも実態はアンインストール済み
どうすればいいのか
2020/09/04(金) 12:13:42.72ID:icCvRHhg
MSYS2に乗り換える。
2020/09/04(金) 15:02:41.01ID:TUoLkM+q
木こりが明日のためにと残しておいた大木が次の日になったらどうにも見つからない
来る日も来る日も探すけれどどこだったか思い出せずとうとう10年の月日が過ぎてしまった
そこで木こりは思い直してその辺にあった木を切り倒したそうだ
「はっ!?」木こりはようやく気付いた

a.「木なんてみな同じ」
b.「理想を追い求める自分に酔ってた」
c.「Windows入れ直せ」
2020/09/04(金) 15:55:39.64ID:2zp4/GYN
× 木こり
○ 林業従事者
■ このスレッドは過去ログ倉庫に格納されています