X



Perlについての質問箱 64箱目
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
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/
0616デフォルトの名無しさん
垢版 |
2020/08/02(日) 16:23:15.21ID:qo03Ruan
また釣りのクズか
0619デフォルトの名無しさん
垢版 |
2020/08/02(日) 18:07:45.30ID:JnzrulEq
>>617
死ね
0622デフォルトの名無しさん
垢版 |
2020/08/02(日) 19:41:56.53ID:hIQzyyzC
>>621
むしろ天才よりも秀才のほうやろ。
本当の天才はそういうことに関わらん気がする。
直感的に不可能か、現実的に意味がないかを悟っていそうというか。
0623デフォルトの名無しさん
垢版 |
2020/08/02(日) 20:29:18.39ID:Vanmrtqf
バグの無いことの証明が不可能なのは、
ゲーデルの不完全性定理とかあのへんまで突っ込んでいくからであって、
99.9%okなら良しとする現実世界なら普通に可能
0626デフォルトの名無しさん
垢版 |
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です
0627デフォルトの名無しさん
垢版 |
2020/08/13(木) 16:19:08.99ID:HLH3bdVq
その出力先(ターミナル?コンソール?)は、そもそもシフトJISテキストを表示できるのか?
できない場合は、プログラムは関係なく、ターミナルが文字化けする。

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

try:
  str_sjis = str.encode("CP932")
except UnicodeEncodeError:
  print str.encode("utf-8")
0630デフォルトの名無しさん
垢版 |
2020/08/13(木) 17:00:11.25ID:g8OxF1lY
>>627
ターミナルです
ファイルに出力してそれをShift-JISとして開いたら文字化けもなく見ることができました
内部的には問題なかったのですね
ありがとうございました
0632デフォルトの名無しさん
垢版 |
2020/08/15(土) 08:35:13.06ID:ACgG3ouC
プロトタイプ属性の指定がどうやってもできん

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

これで構文エラーになる理由が全く分からん
0635デフォルトの名無しさん
垢版 |
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

構文こうなってるけど?
0636デフォルトの名無しさん
垢版 |
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つの変数に代入したいのですが、方法はあるでしょうか?
0638デフォルトの名無しさん
垢版 |
2020/08/15(土) 16:34:06.12ID:o+i8zw5r
釣りに引っ掛かるな
0639デフォルトの名無しさん
垢版 |
2020/08/15(土) 17:04:09.01ID:gFfdk9Ij
>>636
はい。あります。
0640デフォルトの名無しさん
垢版 |
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;
}
0642デフォルトの名無しさん
垢版 |
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]);
0643デフォルトの名無しさん
垢版 |
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]);
0645デフォルトの名無しさん
垢版 |
2020/08/15(土) 20:49:31.50ID:ODJGcA2C
>>644
まあ、そんなに巨大だったら、どっちにしろ死ぬやろけどな。w
本気で心配するならチビチビつままないと。
0646デフォルトの名無しさん
垢版 |
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>"
0648646
垢版 |
2020/08/16(日) 07:20:54.63ID:Degs0Zl8
Mechanize とか、curl + Nokogiri でも、静的なページなら、DOM を取得できるけど、

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

5ch などは、空のHTMLを送ってきてから、
Ajax で、ページの内容を取得しているから、
HTMLをスクレイピングするだけでは、タイミングによっては内容が存在しない
0649646
垢版 |
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))
0650デフォルトの名無しさん
垢版 |
2020/08/16(日) 07:29:48.83ID:Rc5RuLFB
プロテクトのつもりは無いんだろうけど、機械にやさしくない
最近だとメルカリのページ取得して、なんで空? と思った
0651646
垢版 |
2020/08/16(日) 09:02:04.52ID:Degs0Zl8
Selenium WebDriver なら、指定した要素が出現するまで、指定した時間だけ待ってくれる

漏れは、10〜20秒ぐらいを指定してる
0655デフォルトの名無しさん
垢版 |
2020/08/16(日) 15:22:58.74ID:9u3LM4y1
あんまりない
弱いのはライブラリ面なので言語的に不足してる機能はそれほどない
0657デフォルトの名無しさん
垢版 |
2020/08/16(日) 18:58:24.31ID:5UHvUqAR
なら、C++があれば他の言語は要らなくなる。
さらに極言すれば、アセンブラがあれば他の言語は要らなくなる。
0659636
垢版 |
2020/08/16(日) 20:53:31.17ID:we+09hKc
返信が遅くなってすいません
>>640,643,646
勉強になりました
ありがとうございました
0660デフォルトの名無しさん
垢版 |
2020/08/17(月) 01:24:18.13ID:U9ZmQUIp
GUI必要なツールはC#使うけど、CUIだけとか引数もなくて単に実行するだけとかそういうのだいたい全部Perlで書いてる
0661デフォルトの名無しさん
垢版 |
2020/08/17(月) 07:07:29.41ID:lN4Qioc8
GUIって結局、裾野の方々でも使えるようにする工夫であって、
テキストエディタで条件設定した方がよっぽど効率いい場合が殆どなのでは

自分専用ツールでGUIで作った記憶がない
0662デフォルトの名無しさん
垢版 |
2020/08/17(月) 07:25:27.72ID:KZ//oCQL
>>661
スマホのアプリはテキストエディタを使うのが主流か?
0667デフォルトの名無しさん
垢版 |
2020/08/17(月) 12:18:14.46ID:lN4Qioc8
噛みつかれた、と思っちゃうのが糖質なんだよな
書き込みがみんな攻撃に見えるっていう
0669デフォルトの名無しさん
垢版 |
2020/08/17(月) 14:26:41.31ID:MSHB+00t
>>667
わけがわからなすぎるからな。
攻撃に見えてもしゃあない。

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

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

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

オレはPerlではTk, Tkxしかやったこと無いけどさ
0681デフォルトの名無しさん
垢版 |
2020/08/18(火) 22:52:59.68ID:MJ+frvDl
>>673
馬鹿?それとも釣り?
0683デフォルトの名無しさん
垢版 |
2020/08/18(火) 23:33:31.65ID:bsH9de+P
やれるというのと、それを目標に人が集まってくるのは別

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

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

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

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

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

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

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

証明書の期限切れ
0714708
垢版 |
2020/08/28(金) 18:25:47.79ID:46MGlztH
レスありがとうございます
特定サイトではなく、また、ブラウザでアクセスできてLWPではできないという状況です
その後、セキュリティソフトにESETを使っているのですが、
ESETにブロックされていることが分かりました
Mozilla::CAの証明書が気に入らないのか、ESETの不具合なのか..
どちらかが更新されるのを待ちたいと思います
■ このスレッドは過去ログ倉庫に格納されています

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