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/
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
× 木こり
○ 林業従事者
2020/09/04(金) 15:58:22.63ID:i1o0tLie
Strawberry Perl 5.32.0 入れたんだけどcpanでinstallコマンドを使うとperl.exeがCPU消費したまま戻ってこなくなる現象が起きるね。
2020/09/04(金) 16:02:36.23ID:i1o0tLie
今までになくTkをインストールするのが大変だった、5.32.0。
ソース改変してcpanの外でgmake & gmake installせざるを得なかった。
さっさと修正してほしい。
725デフォルトの名無しさん
垢版 |
2020/09/04(金) 18:10:58.52ID:4QR5o/NS
思い切ってPyQTにしてみろ。こっちのがいいぞ。
2020/10/08(木) 23:36:20.91ID:j69EnO8Y
こんな過疎ったクソスレだけど、たまにやって来る質問者をガヤが追い出そうと必死になるんだよな
頭の中どうなってんだろ
2020/10/11(日) 18:23:11.86ID:uVmgdJtU
すいません、あるサイトの記述で下みたいな構文なんだけど
$aiueo = [AAA =>123,BBB=>345];
変数は変えてあります
ハッシュのリファレンスとは違うようなんだけど何をやってるかわかりますか?
それと、この構文で123をprintで表示してみたいのですがどうやればいいのでしょうか
2020/10/11(日) 18:26:38.16ID:KfmOTZ8w
=>は,と同じなので単なる配列リファレンスです
2020/10/11(日) 19:36:36.33ID:LtBR6JI3
$$aiueo{AAA}
$aiueo->{AAA}
だっけ?
2020/10/11(日) 20:54:29.02ID:OOWRCRR6
一旦ハッシュ化しないと無理なのでは
2020/10/11(日) 21:00:17.13ID:Cs7yLb7a
だね。配列のままなら print $aiueo->[1];
2020/10/11(日) 21:08:33.51ID:OOWRCRR6
配列() のリファレンスが []
ハッシュ() のリファレンスが {}

というややこしい部分に引っかかって間違って書いてるだけと予想
2020/10/11(日) 21:26:08.40ID:KPje/k62
pseudo hash の話かと思ったら違った
2020/10/20(火) 10:47:47.83ID:D4H7EOaJ
教えて下さい。Windows10 で、ActivePerl 5.20.3 (Win32-x86)
を使っています。「use blib;」の一行だけのスクリプトを実行すると、
次のようなエラーが出ます。

Cannot find blib even in C:\
BEGIN failed--compilation aborted at C:\bin\blibtest.pl line 1.

しかし、C:\Perl\lib には、blib.pmというファイルがあり、
@INCには、C:\Perl\lib が含まれています。
blib を使うためには、どのようにすればよろしいでしょうか?
2020/10/20(火) 12:39:40.78ID:JJDPr70D
環境変数からなら行けたような
2020/10/20(火) 14:02:34.19ID:D4H7EOaJ
>>735
ありがとうございました。
しかし、環境変数PERL5LIBを使っても、同じでした。

Cannot find blib even in C:\
BEGIN failed--compilation aborted at C:\bin\blibtest.pl line 1.

C:\doc>set perl5lib
PERL5LIB=C:\Perl\lib
2020/10/20(火) 14:40:16.81ID:D4H7EOaJ
>>734ですが、
そもそも何をしたかったのかということも書いておきます。
Windows の名前付きパイプを使おうとしており、このページ
https://metacpan.org/release/JDB/Win32-Pipe-0.025
にあるサンプルコード(test.bat、Client.pl、Server.pl)
を実行すると、Cannot find blib even in C:\ とのエラーが
発生しました。

そこで、問題を単純化して、>>734を書きました。
2020/10/20(火) 14:46:34.93ID:JJDPr70D
なんでC:\なんか探しに行くんだろう
2020/10/20(火) 18:08:46.77ID:NolEEcIo
blib.pmはカレントまたは指定したパスから数レベル上まででblib/libとblib/arch両ディレクトリが存在したら@INCの先頭に追加、無ければエラーで終了するだけのモジュール
該当ディレクトリが無かったからC:\にたどり着いたというだけ

Active PerlはWin32::Pipeバンドルされてたはずなのでblib不要
2020/10/20(火) 18:38:58.16ID:D4H7EOaJ
>>739
よく解りました。ありがとうございました。
2020/10/20(火) 21:44:35.79ID:tFiyzFdf
blib.pmはちゃんとuseされていて、blib.pmの動作としてエラー終了したということですか
2020/10/20(火) 22:27:40.87ID:sh3hHW9L
die "Cannot find blib even in $dir\n" って blib.pm のソースに思いっきり書いてあるがな
2020/10/20(火) 23:34:27.10ID:tFiyzFdf
なるほd
2020/10/25(日) 10:29:53.41ID:eR26jTX4
ライブラリが読めてないのか、読めてるけどエラーになるのかの切り分けが必要だったな
2020/10/25(日) 11:05:07.83ID:/f/Br1ml
"¥n"なければ分かったのにね。
2020/10/25(日) 11:49:26.86ID:/f/Br1ml
あ、でもやってみたら@INCにない場合とメッセージ違うんだな。
とはいえ知らないと分からないよね。
2020/10/27(火) 08:27:55.72ID:K6PuV+RV
httpsをgetする楽な方法って何
2020/10/27(火) 12:24:00.33ID:FNX2BsFN
>>747
ブラウザを遠隔操作することだろうね。
昔、Win32::IEAutomation 使っていたけど、
今はどんなモジュールがいいのかよく解らない。
749デフォルトの名無しさん
垢版 |
2020/10/27(火) 22:34:11.97ID:wfYFUdXE
>>747
Linux とかなら wget または curl コマンド。
Windows は知らないけど探せば同じコマンドあるんじゃないかな。
それとかPowerShellだと何かないか?ありそうだよな。俺知らないけど。
2020/10/27(火) 23:05:01.31ID:K6PuV+RV
難しいのう
firefoxから証明書をエクスポートして食わせてwgetしてもまだ成功しない
2020/10/27(火) 23:53:21.84ID:a7WAgl/q
Ruby では、open-uri でHTML を取得して、nokogiri でスクレイピングできる。
または、begin〜end 内に書いた、curl コマンドでも取得できる

他には、wget や、VSCode の拡張機能、REST Client とか

require 'open-uri'
require 'nokogiri'

=begin
html = `curl https://example.com/`
doc = Nokogiri::HTML( html )
=end

url = "https://example.com/";
doc = Nokogiri::HTML( open( url ) )

elements = doc.css( "h1" )
puts elements.first.content #=> Example Domain
752751
垢版 |
2020/10/28(水) 00:05:57.96ID:H1Ljm7vl
Windows 10 には、curl.exe も入っている。
これは、PowerShell のcurl エイリアスとは異なる

コマンドプロンプトで、
where curl
C:\Windows\System32\curl.exe
2020/10/28(水) 00:13:29.52ID:BzF//FKs
なんで ruby が出てくるんだろう
2020/10/28(水) 06:24:58.52ID:SUh9rNlQ
lwpが出ない時代になったのか……
755532
垢版 |
2020/10/28(水) 08:36:56.65ID:TnU9NEZC
LWP::Protocol::https
がインストールされていれば

$url = "https://…";
require LWP::UserAgent; # with LWP::Protocol::https
$ua = LWP::UserAgent->new;
#$ua->agent('Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; Touch; rv:11.0) like Gecko');
$s = LWP::UserAgent->new->get($url)->content;
2020/10/28(水) 08:42:17.53ID:inVpsElI
なんでそんな大事なもんがインストール必要なんだ
2020/10/28(水) 13:29:32.90ID:l3R5yM/w
ネットワーク関連は、原則別扱いやろ。
2020/10/28(水) 18:43:51.13ID:14aXOJ7K
そこはマジで面倒だなと思うね
pythonのrequestsモジュールとか何も考えずにできるし
2020/10/28(水) 19:30:04.62ID:inVpsElI
電池は自分で買って下さい
2020/10/28(水) 19:35:38.14ID:ITw4VFJA
今ならコアモジュールのHTTP::Tinyで十分でしょう
IO::Socket::SSLかNet::SSLeay をインストールする必要がありますが
pythonだってrequests
2020/10/28(水) 19:36:09.55ID:ITw4VFJA
は自分で入れなきゃいけないし
762751
垢版 |
2020/10/28(水) 22:46:17.13ID:H1Ljm7vl
Ruby なんて、よく使うものは、標準で入っている

Battery Included・電池付き言語
2020/10/28(水) 22:58:53.02ID:A4Y862UG
>>762
Rubyとかプログラム言語よりも「読点(、)」の使い方を学んだほうがいい
自分の書き込みを声に出して読んでみるとわかるよ
2020/10/28(水) 23:18:21.09ID:inVpsElI
読点の使い方に決まったルールは無いんだよな
なんとなく集合的に多数派の使い方はあるけど、
それを気にしてる人しか身につかないし、
気にしてない人はどういう使われ方をしてても何も思わない

多数派の使い方から外れると何か困るかというと、特に困らない
気にしてる人だけなんか変と思うだけで、意思疎通に支障は無い
気にした方が負けという悲しい現状がある
765532
垢版 |
2020/10/29(木) 00:33:18.30ID:2QXtbAjf
そもそも言葉がそういうものだろ
だからかまわないというのは極論
というかそういう話もrubyも該当スレでやってくれ
2020/10/29(木) 07:05:28.87ID:vmIccHQe
読点は、基本的には使わない
意図的に区切りを入れたい箇所で使う
区切りを入れる目的がいろいろあって、それが理由で明文化できない

一旦間を置くことで強調することができる
主節と従属節を明確にできる
誤読を防ぐ
読みやすくなる、等々
より良い文章を心がけている人しか読点はそもそも必要ない

自分は、文節の区切りが漢字で連続しているあるいはひらがなで連続している時に、
読みやすさの為に入れることがよくある
2020/10/29(木) 08:52:06.32ID:z1UD/sEY
読点ふつうに使った文章でそれ言われても説得力ゼロやんな
2020/10/29(木) 12:59:56.99ID:DfWTURJR
普段文ではあんまり使わないかな 空白を使うようになった
てか。もあんまり使わない。改行するようになった。
これ最近の傾向ね。
ちゃんとした文章の時は学校で習ったようにちゃんとするよ。
たまに見かける、多用の文章はバカっぽくて好きになれない。
2020/10/29(木) 16:41:07.61ID:6ZxgJt1a
お前ら得意のうんちく・知ったかで生き生きしてるな
どうでもいい話題になると湧いてくるのな
2020/10/29(木) 23:07:14.55ID:XA006Kuj
Perl好きの住人がいるんだよ。
なんかネタがあると湧いてくるが自分からは投入しない。
というか今更ないんだよな。
2020/10/30(金) 08:36:37.09ID:yt6Q5TzG
LWP::Protocol::https はインストールしなくても入ってるみたいだけど、
やっぱりアクセスできない
2020/10/30(金) 14:14:14.77ID:Nsw5dj/j
>>770
かつてのPerlハッカーたちが完全に沈黙してるからね
Rakuとかもっと使えよって思います
2020/10/30(金) 14:28:46.49ID:NEqe6Fpq
IO::Socket::SSLかNet::SSLかが入ってないんじゃね?
2020/10/30(金) 14:45:50.35ID:yt6Q5TzG
入ってなかったら入ってないというエラーになるんじゃないのかな
プロトコルのエラーになるんだよな
2020/10/30(金) 16:51:58.64ID:yPjXBzu5
>>772
Perl6できたてのころにちょっと試したけど、スクリプト言語的な使いやすさがなくなってたからなあ。
きっと普及せんやろな、と思った。
776デフォルトの名無しさん
垢版 |
2020/10/30(金) 17:12:05.20ID:X2Arn8L3
Strawberry Perl 5.32 向けのTk、相変わらずビルドエラーを手動修正しないとインストールできない。
バンドルされているコンパイル環境の問題かもしれないけど、そのままってのはちょっと。
Tkって重要じゃね?どうよ?
2020/10/30(金) 17:49:50.64ID:Nsw5dj/j
>>775
ほんのちょっと改善するだけでも十分だったのにな
2020/10/30(金) 19:26:17.53ID:yPjXBzu5
>>777
いや、大きな追加機能自体はおもしろそうなんだよ?
Grammarとか。

また、識別子にハイフンが使えるとか、トークンの区切りが原則はスペースとか、文法も興味深いかわりに、ほかと違いすぎて。。。
2020/10/30(金) 19:42:16.02ID:Nsw5dj/j
>>778
grammarは一見良さそうだけど字句解析と構文解析を同時にやる感じですげー難しくない?
780デフォルトの名無しさん
垢版 |
2020/10/30(金) 20:46:03.54ID:J8RJfKX8
字句解析と構文解析は、表を使ったアルゴリズム自体は同一なので、一つの表にまとめられる。
しかし、分離できる場所で分離した場合に比べて表が大きくなるので、あまりお得じゃないと思う。
もちろん数ギガバイトのメモリーを積む現代のコンピュータでは、100メガバイトの表は決して非現実的ではないけれども。
ドラゴンブックが書かれた時代には、分けなければ実装できない程度の大きさだったと思う。
2020/10/30(金) 21:02:37.09ID:yPjXBzu5
>>779
いやー、ちゃんと使ってみたかった。
難しいならそれを体感したかったな。

lex/yaccのめんどくささは知ってるけど、あれよりはマシやろ。w
C#のSpracheみたいなもんじゃないの?
2020/10/30(金) 21:50:10.07ID:9WzSAA4o
>>774
例えばlwp-downloadとかでもアクセスできない?
2020/10/30(金) 22:09:51.09ID:Nsw5dj/j
>>781
アルゴリズムが違うからなんとも言えんが
バックトラックしないのでカーソルの位置を常に意識しなきゃいけないのがすごくキツい
あこれマッチしないの?ってことが多々あって慣れなんだろうがキツい
デバッグも大変
784532
垢版 |
2020/10/30(金) 22:24:35.54ID:QEBk4Q6j
Perl5のParse::RecDescent.を使えれば
Perl6のGrammarも大丈夫だと思う

多分
2020/10/30(金) 22:37:14.50ID:yPjXBzu5
>>783
えー、簡単そうやん?w

https://mattn.kaoriya.net/software/lang/perl6/20151019183138.htm
2020/11/02(月) 15:05:38.99ID:iEycKQwb
Raku の Grammar というのは、「クラス定義+演算子のオーバーロード」
と比較して、何が優れているのだろうか?
2020/11/02(月) 17:51:29.15ID:ew0mgVfp
えっ。
ターゲットというか、適用領域が違うんでは。
2020/11/13(金) 10:25:46.33ID:ZCyQI0Un
処理済みかとか、除外対象か、みたいなチェック用に
%except = (aaa => 1, bbb => 1);
みたいなテーブルを作っておいて、
if (!$except{$x}) { ... }
みたいなことをする

で、=> 1 の部分は何でもいい訳で、これが無駄に見える
@except = (aaa, bbb);
の方が自然だけど、判定部分が複雑になる

なんとか判定をシンプルに書けないものか
2020/11/13(金) 10:43:18.63ID:IuUtHHuD
リストを使用してのケースなら
" @except " =~ / aaa /
とか。
2020/11/13(金) 10:53:46.81ID:IuUtHHuD
でもハッシュの方がよくないかなあ。
%except = map { $_, 1 } qw(aaa bbb ...);
とか
undef $except{$_} for qw(aaa bbb ...);
で判定はexists
とか
2020/11/13(金) 11:34:25.97ID:4qY0TlDt
>>788
無駄に見えるのは気のせいなので、気にするな。
何が気に入らないのか、意味不明なレベル。

せいぜいが判定をexists()に変えるくらいか。
でも、処理の意図は明確になっても、記述量は増えてまう。
結局、もとのほうがいい。
2020/11/13(金) 11:54:00.35ID:ZCyQI0Un
pythonのin演算子を真似た関数を用意するくらいか
793デフォルトの名無しさん
垢版 |
2020/11/13(金) 13:04:35.51ID:f6yctSrL
ここの人ってpythonもできるの?
pythonを最近覚えたんだけど、pythonで書き始めてからperlに戻る気がしないw
2020/11/13(金) 13:11:47.54ID:ZCyQI0Un
常にuse strictで書いてるような人はpythonの方がいいかも

危険を承知でとにかく楽に、という書き方がpythonはできない
2020/11/13(金) 17:55:04.27ID:IGEbWGrX
>>793
pythonも書いてるけど感覚としてはそこまで差はない
pythonの方が厳格ですぐエラー吐いてくれるから
それを良しとするか
あとはライブラリの質が段違い
2020/11/17(火) 17:45:06.40ID:jAzXruH+
デフォルト以外のブラウザを開くことはできませんか?
デフォはこれでいけてます
use Win32::FileOp qw(ShellExecute);
ShellExecute($url);.
2020/11/17(火) 23:05:44.09ID:cjOqkcds
例えば、デフォが他のブラウザで、あるurlをFirefoxPortableで開きたいとき、
次のようなコマンドを実行させているが、これをPerlでやればいいんじゃないの?

"U:/FirefoxPortable/FirefoxPortable.exe" https://foo/bar/
2020/11/18(水) 00:40:53.82ID:T6Vtm1bs
ありがとう
`C:/Program Files (x86)/Google/Chrome/Application/chrome.exe`
とりあえずここまででchrome開くことはできたのですがURLの指定はできないでしょうか?
2020/11/18(水) 01:11:22.59ID:OSmP9Gk2
>>798
>>797
2020/11/18(水) 01:32:09.00ID:T6Vtm1bs
system("\"C:/Program Files (x86)/Google/Chrome/Application/chrome.exe\" https://www.yahoo.co.jp/";);
完成しました
ありがとうございました。
801デフォルトの名無しさん
垢版 |
2020/11/18(水) 08:31:15.08ID:XTvONPVJ
>>800
wperl.exeからsystem()を呼び出すと新しいコンソールウィンドウが開くので要注意。
2020/11/28(土) 15:40:18.08ID:EM73A4Gg
指定した年月日からx日後の日付を数で得るにはどうするのが一番楽だろう
2020/11/28(土) 18:31:31.18ID:1bDz9VeK
「数で得る」というのがよく解らないが、timelocal()とlocaltime()を使えば、
多分、やりたいことができると思う。
2020/12/03(木) 17:27:36.92ID:PrWVOzOn
これから仕事ではじめてperlを使うんだけど、メッセージやメール出力などにマルチ言語対応が入ってる
resourceに言語ファイルをいれる形で実現したいけど、どのようにするのがいいか教えて下さい

複数のスクリプトを開発して連係させる予定
805デフォルトの名無しさん
垢版 |
2020/12/05(土) 13:44:54.28ID:DP7JjxAq
ヒアドキュメントの中で数式を使うやり方は?
@{[数式]}
のようにやってもエラーで動かなかった
2020/12/05(土) 15:34:53.50ID:3OUqO/Qz
>>802
Ruby on Rails なら、時刻計算用のライブラリがある

require 'active_support/time'

p Date.new( 2020, 2, 28 ).advance( days: 2 )

出力。うるう年
Sun, 01 Mar 2020
2020/12/05(土) 15:43:47.69ID:+/FrBp4K
そんな感じの気楽で使いたい

$date = date->new('2020-12-05');
$date += 100;
($y, $m, $d) = ($date->year, $date->month, $date->day);

こんなん
2020/12/05(土) 16:43:15.39ID:dBHdheKW
>>805
おかしいな。それで合ってるように思えるんだが。
この辺りを読んで、何か誤解してないか確認したらいいかも。
https://perldoc.jp/docs/perl/5.26.1/perlref.pod
809806
垢版 |
2020/12/05(土) 18:18:59.36ID:3OUqO/Qz
「perl 時刻 計算」で検索すれば?

日付・時刻を扱う標準モジュール、Time::Piece が標準で添付されています。
もっと便利なモジュールを、誰かが作っているかも
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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