19/02/01 09:44:37.18 1/Kr4Qjk.net
CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
(WEBプログラミング板: URLリンク(medaka.5ch.net))
このスレでは(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箱目
スレリンク(tech板)
Perlについての質問箱 62箱目
スレリンク(tech板)
Perlについての質問箱 63箱目
スレリンク(tech板)
2:デフォルトの名無しさん
19/02/01 09:44:58.17 1/Kr4Qjk.net
【本】
初めてのPerl 第7版(リャマ)[2018年01月 発行]
URLリンク(www.oreilly.co.jp)
続・初めてのPerl 改訂第2版 [2013年08月 発行]
URLリンク(www.oreilly.co.jp)
マスタリングPerl [2009年03月 発行]
URLリンク(www.oreilly.co.jp)
Effective Perl 第2版 [発売日:2015年02月16日]
URLリンク(www.shoeisha.co.jp)
もっと自在にサーバを使い倒す 業務に役立つPerl [2012年4月11日発売]
URLリンク(gihyo.jp)
モダンPerl入門 [2009/2/10]
URLリンク(www.amazon.co.jp)
モダンPerl入門 増補改訂版(仮)[2014年1月予定]
URLリンク(codezine.jp)
Perl CPANモジュールガイド [2011/4/8]
URLリンク(www.amazon.co.jp)
【オンラインマニュアル】
最新のドキュメント: URLリンク(metacpan.org)
perldoc.jp: URLリンク(perldoc.jp)
perldoc.perl.org: URLリンク(perldoc.perl.org)
3:デフォルトの名無しさん
19/02/01 09:45:16.42 1/Kr4Qjk.net
[少し古めの良書]
プログラミングPerl 第3版 VOLUME 1,2(駱駝)[2002年09月 発行]
URLリンク(www.oreilly.co.jp)
URLリンク(www.oreilly.co.jp)
Perlクックブック 第2版 VOLUME 1,2 [2004年09月 発行]
URLリンク(www.oreilly.co.jp)
Perl ベストプラクティス [2006年08月 発行]
URLリンク(www.oreilly.co.jp)
Perl Hacks [2007年01月 発行]
URLリンク(www.oreilly.co.jp)
実用 Perlプログラミング 第2版 [2006年03月 発行]
URLリンク(www.oreilly.co.jp)
4:デフォルトの名無しさん
19/02/01 09:45:35.14 1/Kr4Qjk.net
【日本語、Unicode関連】
Encodeモジュール
URLリンク(metacpan.org)
第31回 encoding:いつまでもjperlから抜け出せない方に
URLリンク(gihyo.jp)
第32回 Encode:日本語だけ扱えればよいのではなく
URLリンク(gihyo.jp)
perlunifaq - Perl Unicode FAQ
URLリンク(perldoc.jp)
perlunicode - Perl における Unicode サポート
URLリンク(perldoc.jp)
【モジュール】
Search the CPAN - metacpan.org: URLリンク(metacpan.org)
【Perl環境構築】
plenv
URLリンク(github.com)
cpanm
URLリンク(metacpan.org)
URLリンク(perldoc.jp)
5:デフォルトの名無しさん
19/02/01 09:45:51.24 1/Kr4Qjk.net
# [Perl 日本語処理の基礎の基礎]
# このレスは、Windows の ActivePerl で日本語処理を行う場合のテンプレートです。
# このレスの内容をそのまま、UTF8 形式のソースファイルに保存して下さい。
# 入出力ともシフト JIS 形式のファイルまたは DOS 窓を想定しています。
# まず、以下の行を先頭に入れて下さい。
use utf8;
use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)"; # ※1
use Encode;
# 次に、あなたが実行したい処理の内容を入れて下さい。
$file = 'C:/なんたら/かんたら.txt';
open my $fh, '<', encode("cp932", $file) or die $! ; # ※2
print <$fh>;
# 以上の内容は、日本語処理が解らない人でも、とりあえず日本語処理ができてしまう
# おまじないです。条件が異なる場合の対処方法は、ご自分で勉強して下さい。
# 【注】※1. の行を入れると、DOS 窓への日本語出力は簡便になりますが、
# ソースファイル名に非 ANSI 文字が含まれる場合に die 文の出力が失敗します。
# ※2. OS に渡す文字列(ファイル名,dos コマンドのオプションなど)は、
# この例のように cp932 でエンコードする必要があります。
6:デフォルトの名無しさん
19/02/01 23:49:26.97 sNV+JFAU.net
今更だがCGIとPerlの区別ってなんだよw
7:デフォルトの名無しさん
19/02/02 01:13:45.25 ZgweYnRo.net
Common Gateway Interface
https://
8:ja.wikipedia.org/wiki/Common_Gateway_Interface Common Gateway Interface(コモン・ゲートウェイ・インタフェース、CGI)は、 ウェブサーバ上でユーザプログラムを動作させるための仕組み。 現存する多くのウェブサーバプログラムはCGIの機能を利用することができる。 CGI は環境変数や標準入出力の扱えるプログラミング言語で扱うことができる。
9:デフォルトの名無しさん
19/02/02 10:20:47.06 ZgweYnRo.net
(洋書) Mastering Perl: Creating Professional Programs with Perl 2nd Edition [2014/1/27]
URLリンク(www.amazon.co.jp)
マスタリングPerlの第2版
(洋書) Programming Perl: Unmatched power for text processing and scripting 4th Edition [2012/3/9]
URLリンク(www.amazon.co.jp)
プログラミングPerlの第4版
10:デフォルトの名無しさん
19/02/03 01:42:34.74 72eosYJ+.net
>>7 perl で書けばperl そのものじゃん。
しかし、perl は終わったな。 python に取って代わられた。
11:デフォルトの名無しさん
19/02/03 23:38:34.25 DVXBklBr.net
単にCGIで使われるという流行が沈静化しただけだよ。使われている所では使われている。
元からCGI専用言語でもなんでもなくなんでもできるからな。
Python は機械学習で現在流行っているが、それもやがては沈静化するだろう。
かといってなくなることはない。
12:デフォルトの名無しさん
19/02/15 14:42:35.23 bVEZ7wIc.net
>>6
どういうレベルの質問?
13:デフォルトの名無しさん
19/02/18 00:23:21.60 pGUSPpE4.net
けっこう大きめのEUCで出来たプログラムを全部utf8に直す作業が始まるんだが、面倒くさいんだが
構成ファイルもたくさんあるし、読み書きしてるようなファイルもたくさんあるし、プラグイン方式みたいに作られてて、既存のプラグイン的なのも全部EUCでutf8に直さなきゃならないんだが
めんどくさいと言うか、正常に動くのかどうか不安なんだが
一応表面上は正常に動いたように見えても、俺にはそれはまやかしに感じるんだが
14:デフォルトの名無しさん
19/02/18 00:58:26.57 pGUSPpE4.net
はいやっぱりバグったファイルの読み込みが出来なくなった
15:デフォルトの名無しさん
19/02/18 13:29:31.02 trvxFZJG.net
そういやUTF8だとprintfとかで幅を揃えるのができなくなったりして大変だな。
%-10sとかやっても漢字が入るとそこが出力時に3バイトになったりしてずれて役に立たない。
こういう幅とか考慮してフォーマットしてくれるモジュールあるんだろうか?perlだから誰かが作ってそうではあるが。
16:デフォルトの名無しさん
19/02/18 15:02:51.14 +OgI4mQP.net
Unicode::GCStringでカラム数とれるっぽいから空白いくつ詰めるかは計算できそう
17:デフォルトの名無しさん
19/02/18 18:04:58.85 pGUSPpE4.net
かなり頑張ったがUTF8にするのは無理だということになって諦めた
sjisとEUCとutf8が無駄に入り乱れる結果になった
ファイル名はプログラム内部ではEUCで扱ってたり、実際のファイル名はsjisだったり、ファイルの中身はEUCだったり、通信はsjisだったり、
そもそも文字単位じゃなくてバイト単位でデータを管理する記述がめっちゃあったり、
ゴミかよ!
18:デフォルトの名無しさん
19/02/18 20:51:52.45 trvxFZJG.net
一生を掛けて修復するプログラムになったようだな。
19:デフォルトの名無しさん
19/02/18 20:52:30.58 trvxFZJG.net
>>15
おお。ありがとう。やはりあったか。
20:デフォルトの名無しさん
19/02/26 09:36:37.24 DhIH/rsp.net
$str = "abcdefg"; open( $fh,"<",\$str); open( $fh2,"<&",$fh);
はできるけど
open( \*STDIN,"<",\$str)
open( \*STDIN,"<&",$fh)
はできないんだな。知らなかった。"Bad file descriptor" って言われた。
どこかに書いてあったっけ?
21:デフォルトの名無しさん
19/02/26 18:47:18.00 vB+znWqX.net
ちょっとマジで聞きたいことがあるんだが、cgiからブラウザに対してCP932でHTMLが出力されている。
もちろんヘッダも正しく指定されている。
んで、そのHTMLの中に、
<IMG SRC="あいうえお.jpg"> などと言う日本語のファイルが指定されているわけだ。
その日本語のファイル名も、CP932だ。
んで、ご丁寧にブラウザが自動でURLエンコードしてくれるようなのだが、
%E3%81%82%E3%81%84%E3%81%86%E3%81%88%E3%81%8A.jpg
となるのだ。これは "あいうえお.jpg" をUTF-8として解釈した時の文字コードだ。
俺としては %82%A0%82%A2%82%A4%82%A6%82%A8,jpg (CP932の文字コード)となってもらわなくては困る。
聞きたいことは2つで、これを解決するにはどうしたら良いか?
もう一つは、ブラウザごとの仕様によりこの挙動は違うのか?
の二点だ
よろしく頼む
22:デフォルトの名無しさん
19/02/26 20:23:51.98 c2o2e7e/.net
>>20
自分でファイル名をそういう風にエンコードすれば?
23:デフォルトの名無しさん
19/02/26 20:30:51.25 vB+znWqX.net
>>21
すまんが読めなくなるから駄目
あと、断定はしてないが、ブラウザやHTTPDのソフトごとに、エンコードやデコードの扱いの違いがある疑いがある
開発環境のwindowsでANHTTPDってやつ使ってるが、こいつはたぶんファイル名をデコードしてないくさい
でも運用環境(有料で借りてる)のApacheさんはパスをURLデコードしてる模様
俺の予想だと、ブラウザも古いのだと絶対自動でUTF-8なんかにはデコードしないと思う。
もしかしたら間違ってるかもしれないけど
困る
統一して欲しい
24:デフォルトの名無しさん
19/02/26 20:42:22.45 RjPoX3nV.net
perl関係ある?
25:デフォルトの名無しさん
19/02/26 20:51:34.33 vB+znWqX.net
>>23
ほぼない
けどWeb制作板に行くとエンコードどころか文字コードも理解してなかったから絶対回答こない
26:デフォルトの名無しさん
19/02/26 21:02:05.63 c2o2e7e/.net
どうしてもすぐになんとかしたいなら全てをUTF8にする。
27:デフォルトの名無しさん
19/02/26 21:32:12.63 tHWhBgwU.net
ほんとにcp932なのか?
実はUTF-8で出力されてて、ヘッダはただ無視されてたりしないのか?
まず、クライアントでデータを保存して、バイナリエディタで確認してみたら?
28:デフォルトの名無しさん
19/02/26 22:01:28.20 DhIH/rsp.net
そのような不正な URL がどのように扱われるかを問うのはあまり有意義とは思えない。
適切に扱ってほしいなら適切にエンコードするしかないと思うのだが。
HTML::Element とか URI を使えば簡単だよ。
29:デフォルトの名無しさん
19/02/27 00:05:17.07 7T/MRSXz.net
>>26
ほんとにcp932
なのにutf8でエンコードされる
>>27
cgiは、どっかにあるHTMLが書いてあるテキストファイルを読み込んで出力してるだけだから、<IMG SRC="あいうえお.jpg">のあいうえおの部分を見つけ出してエンコードするのは無理がある。
さらにエンコード下として、それをデコードしてパスを通すhttpdと通さないhttpdがあるようなので仕様を知りたい
30:デフォルトの名無しさん
19/02/27 02:26:58.26 Hcodp8Vt.net
ホントにそうなら、やっぱブラウザのせいなんかね。
データをデコードしたテキストをそのままURLにしたら、たしかにそうなりそうな気はする。
どうしてもあちこちいじらずに簡単に対処するなら、サーバーのほうはどう?
プロキシとかRewriteとか使って、とにかくURLを受けてしまってから、受けたURLを動的に解釈したら?
31:デフォルトの名無しさん
19/02/27 03:01:51.84 7T/MRSXz.net
>>29
もうcp932のファイル名はやめて全部アルファベットにしようと思うのだが、
Rewriteってなんだろう
アニメが出てきたんだが
まあおまえらありがとうな
utf8ならまだしもcp932のファイル名をそのまま使おうとした俺が悪かったんだよきっと
でもwindowsがcp932のファイル名だからしょうがないんだよ
32:デフォルトの名無しさん
19/02/27 09:17:13.93 MitD/HmJ.net
>>20
ブラウザがUTF-8 と解釈するのは、HTML のheader に、言語の指定をしていないからじゃないの?
ただし、sjis を指定しても、そのPC がsjis に対応していないかも?
>>22
>運用環境(有料で借りてる)のApacheさんはパスを、URLデコードしてる模様
URLデコードするかどうかを、設定ファイルで指定できないの?
>>30
web 系は、すべてのファイルを、BOM 無しUTF-8(UTF-8N)に統一すべき!
他の言語を使うと、PC・スマホがその言語に対応していない場合に、バグる
33:デフォルトの名無しさん
19/02/27 10:18:43.12 HuFKesk6.net
バグる、ですか
34:31
19/02/27 12:43:30.58 MitD/HmJ.net
漏れは、web 系の本を、軽く数十冊は読んでるけど、
sjis のファイルを使う本は、見たことがない
それに、パス・ファイル名などのシステムの構成物に、全角を使う本も見たことがない。
パス・ファイル名は、ファイル内容のテキストじゃない。
あくまでもシステムの構成物だから、半角英数字が基本
Linux・Windows 共用のパス・ファイル名には、半角英数字と、_ (アンダーバー)だけを使う。
半角空白もバグるので、すごく嫌われる
さらに、大文字小文字だけが異なる、パス・ファイル名も使ってはいけない。
例えば、Ab, aB がLinuxでは使えるけど、Windowsでは共存できないから
だから、このシステムは、sjis・全角の2つを使う、違反を起こしている!
こういうやり方を書いた本は、絶対に無いはず
sjis を使っているのは、ロートルの5ch ぐらいw
だから少しでも、5chのシステムをいじるとバグるから、システムを修正できない!
35:デフォルトの名無しさん
19/02/27 13:14:56.19 FWLYBGBg.net
>>30
「RewriteRule」。
# 「httpd」とかいうから、Apacheに詳しいんかと思ってた。
要はとにかく、サーバーがURLを受けてから、それをランタイムで変換して実際のアクセス先を決めることはできるはず、という提案。
36:デフォルトの名無しさん
19/02/27 13:19:18.71 FWLYBGBg.net
>>31
URLデコードを禁止できるか?
URLの仕様なのに。
それに、もししたとしたら、CGIの引数とかどうなるんだ?
37:デフォルトの名無しさん
19/02/27 14:29:50.58 7T/MRSXz.net
>言語の指定をしていないからじゃないの?
してる
>$print_code .= q[Content-Type: text/html;charset=Shift_JIS] . qq[\n];
>$print_code .= q[<META http-equiv="content-type" charset="Shift_JIS">];
>URLデコードするかどうかを、設定ファイルで指定できないの?
金払って借りてるマシンなのでたぶん無理なんじゃね?
いやApacheさんの使い方とか仕様とか全然知らないから知らんけど
>UTF-8(UTF-8N)に統一すべき!
cgiが古いんだよ
作り直したいけど簡単そうじゃないので放置してる
気持ち的には全部utf8にしたい
>>34
俺のサーバーじゃないけどそんなこと出来るのか?
38:31
19/02/27 15:05:26.60 MitD/HmJ.net
>>36
>$print_code .= q[Content-Type: text/html;charset=Shift_JIS] . qq[\n];
>$print_code .= q[<META http-equiv="content-type" charset="Shift_JIS">];
「html sjis meta」で検索すると、以下が見つかる。
上とは、ちょっと違う
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
他には、PHP で作ったそのファイルが、UTF-8 で保存されているとか?
「html sjis 文字化け」で検索すれば?
文字化けを防ぐ&解消する方法
URLリンク(www.be-webdesigner.com)
39:デフォルトの名無しさん
19/02/27 20:57:58.02 Hcodp8Vt.net
>>36
レンサバでも、管理者だったらいろいろできる。
しかし、もしそうだったとしても、どうやらたぶんおまえにはムリぽなので、もうあきらめろん。
40:デフォルトの名無しさん
19/03/02 02:33:03.15 LJe83Rmr.net
>>20-21
ブラウザごとにURLエンコードは統一は取れてなかったと思うよ
まず開発環境としてANHTTPDの使用をやめることをお勧めする
IISかApacheをインストールして使った方がいいと思う
41:デフォルトの名無しさん
19/03/04 18:44:25.85 G/cMwSEz.net
スレリンク(airline板)
このツールが使えない
誰か使い方を教えてくれ
ソースを拡張子.plにして保存、perl実行環境はインストール
ここまでは出来てる
ソースの改造の仕方が分からない
42:デフォルトの名無しさん
19/03/04 19:13:42.66 Y5viPS4k.net
連投ツールとか名前が穏やかじゃないから教えない
43:デフォルトの名無しさん
19/03/04 19:18:59.22 TpCWsYE8.net
今の5chではスクリプトによる連投はできないのでは?
試したことないのでわからんが。
しかしそのツールなんでわざわざforkして子プロセスに同じことさせてんだろ?その辺がワザなのか?よくわからんね。
44:デフォルトの名無しさん
19/03/04 20:43:15.61 q6ai/7VO.net
Perl は初めてかい? まず、Perl の勉強からだね。
何をするプログラムかは後回しにして、何が書かれているかを理解できるようになろう。
書かれていることを理解できるようになったら、使われているモジュールを理解しよう。
LWP を使ってみよう。勉強しなければならないことがたくさんあると気付くだろう。
最低でも HTTP の仕様書くらいは読まないと話にならない。
ここまでできれば最初のソースコードを理解して改造だってできるかも。
45:デフォルトの名無しさん
19/03/04 20:47:32.38 Y5viPS4k.net
彼はインストール方法を知りにきただけであってPerlを知りにきたわけではないだろう
46:デフォルトの名無しさん
19/03/04 21:07:10.36 9d3FcJ2N.net
メッセージ固定だなんて連投というより荒しツールだな
47:デフォルトの名無しさん
19/03/04 21:19:56.49 W5B7ie4G.net
今の2ちゃんは決まったツールでしか投稿できない
48:デフォルトの名無しさん
19/03/04 23:55:42.18 TpCWsYE8.net
だよなあ。そのせいでお気に入りの専ブラ使えなくなったし。
49:デフォルトの名無しさん
19/03/05 15:13:16.59 opbbmC0J.net
もうC++/Qtで書く気がしない。
Perl/Qtで事足りる。
Perlの開発者が「PCの速度が上ればCである必要はないだろう」みたいな事言ってたけど、
まさにその通りだな。
50:
19/03/06 19:01:29.83 pvc8mHD3.net
>>48
その perl は perl6 ですか?
51:デフォルトの名無しさん
19/03/06 21:27:34.75 USxtxcs5.net
なんかのはずみで処理が終わらなかったとき、自殺するようにしたいんだけど、
eval {
alarm 5;
$SIG{ALRM} = sub { exit; };
};
これでいいんだっけ?
52:デフォルトの名無しさん
19/03/06 21:55:14.52 /3I9LNWz.net
いいんじゃないすか それだけだとevalはいらないと思うけど
あと慣例ならハンドラ設定が先かな exitじゃなくdieとか
53:デフォルトの名無しさん
19/03/06 22:26:52.53 USxtxcs5.net
ありがとう
>evalはいらないと思うけど
よく覚えてないけど、evalはシグナルに対応してないシステムだとエラーで落ちる気がした
54:デフォルトの名無しさん
19/03/07 00:21:03.62 pkHUcH4A.net
perlipc を読むといいかも。
URLリンク(perldoc.jp)
55:デフォルトの名無しさん
19/04/26 17:48:05.44 T3sMMsV1.net
Perl News に "Fork yeah!" というのがあってちょっと驚いた。
URLリンク(www.perl.com)
56:デフォルトの名無しさん
19/04/29 00:48:49.16 OgUfT4lW.net
メアド用にさくらインターネットのライトプラン(sslログインなし)借りてるんだけど
そこにちょっとしたcgi作って置こうとしてて
ものすごい久々にuse CGIとかやってます。
で、corelist CGIってやると
> Data for 2018-01-20
> CGI was first released with perl 5.004, deprecated (will be CPAN-only) in v5.19.7 and removed from v5.21.0
と出るんだけど
CGIが標準モジュールから削除された理由とか、
代替となるモジュールって知ってる人いませんか。
Perlはweb用の言語じゃないから標準モジュールからは消した とか
そんな理由ならいいんだけどさ。。
57:デフォルトの名無しさん
19/04/29 01:34:45.78 EAhXUlQz.net
「core は出来るだけ小さく」
「CGI はもはや Web の主流ではない」
かな。必要になった者のみが追加でインストールすればよい
標準で代替になるようなものはないと思うが pure perl だろうし最悪 CGI モジュールも一緒にアップロードとかでも動くでしょ
そもそもさくらレンタルサーバーで使える perl って 5.8 ~ 5.14 ぽいけど
URLリンク(help.sakura.ad.jp)
58:デフォルトの名無しさん
19/04/29 01:57:14.83 OgUfT4lW.net
>>56
どもども
その理由なら安心ですわ
perlのバージョンは確認したんだけど、消えた理由によっちゃ使うの気持ち悪いなーと思ったので
どもでした。
59:デフォルトの名無しさん
19/05/21 19:09:48.73 ItBIHcGN.net
5.30が出るのかと思ってたら、出てねー
やる気ねーのかよ
60:デフォルトの名無しさん
19/05/21 21:00:16.28 BVi2WQ22.net
ていうかこんなに長くアップデートが続いていることだけでもかなり凄い事だと思う。
61:デフォルトの名無しさん
19/05/21 22:12:45.42 vpg4l/5q.net
5.30.0 RC2までは出てるからそのうち出るだろ
62:デフォルトの名無しさん
19/06/01 02:23:48.95 4bbBO9Ct.net
$str =~ /$pattern/
みたいなことはできるけど、
$str =~ /$pattern/$opt
みたいにして大文字小文字を同一視するかどうかを動的に指定したい
if文で処理行を分けるしか無理?
63:デフォルトの名無しさん
19/06/01 04:41:47.86 uuPo6pHP.net
>>61
eval 使えばいいのでは?
64:デフォルトの名無しさん
19/06/01 08:47:17.23 GQlgchjf.net
Ruby では、Regexp オブジェクトで、動的に作れる
str = "aB"
opt = Regexp::IGNORECASE
p re = Regexp.new( str, opt )
#=> /aB/i
65:デフォルトの名無しさん
19/06/01 10:32:32.69 uuPo6pHP.net
パターンマッチの直前で比較対象の文字列を uc() 使って小文字を全て大文字に変換しておく、または lc() で大文字を全て小文字にしておく事でも実現できるな。
パターンの方にも変換必要になるかも知れないが、それについては予め大文字または小文字でパターン作っておけば回避できる。
66:デフォルトの名無しさん
19/06/01 10:33:06.85 4bbBO9Ct.net
ただ、どう考えても遅くなるよな
素直に切り替えよう
67:デフォルトの名無しさん
19/06/01 11:42:41.31 UESmRH3l.net
>>61
# URLリンク(perldoc.jp)
my $subject = 'FooBar';
my $search = 'foobar';
my $pattern = qr/$search/;
print $subject =~ /$pattern/ ? 'match' : 'unmatch', "\n";
$pattern = qr/(?i)$search/;
print $subject =~ /$pattern/ ? 'match' : 'unmatch', "\n";
68:デフォルトの名無しさん
19/06/01 11:49:39.64 4bbBO9Ct.net
(?i)と書いておけばいいだけか
じゃあもう実装済みで、使う側でどうにでもできる
69:デフォルトの名無しさん
19/06/01 13:34:35.95 zyIO0HLx.net
Python ってダサいよね。
70:デフォルトの名無しさん
19/06/13 09:38:18.19 8EHJsjb3.net
Pythonはほどほどの長さのスクリプト言語としてならアリなんだが
ツールとしては良くも悪くも電卓だなぁ
71:デフォルトの名無しさん
19/06/14 01:28:05.42 TwyiKBjF.net
バッチは使いやすさでperl、サーバだと今はパフォーマンスで選んでgolangやろうとしてるわ
72:デフォルトの名無しさん
19/06/14 21:23:40.01 GJHBGGzo.net
URLリンク(tech.nikkeibp.co.jp)
Pythonはコードが書きやすい?ご冗談でしょう
73:デフォルトの名無しさん
19/06/14 23:12:24.97 oN4k2Se6.net
>>71
読んだけど、実際にはタイトルほどPythonを悪くいってないな。w
74:デフォルトの名無しさん
19/06/16 10:31:31.41 Q48cejx2.net
windowsでreaddirするとcp932で読めてくる
それだと面倒なので、opendirする時か、ハンドラに対して、
decoding(cp932) みたいに指定するにはどうすればいい?
75:デフォルトの名無しさん
19/06/16 14:26:37.09 bI4lsVP6.net
URLリンク(www.javadrive.jp)
76:perltidy バグってない?
19/06/28 03:27:32.11 yOZUOG90.net
perltidy -pbp -nola perl_file
この -pbp は perl best practices にする設定になっている
という仕様が書かれているが
sub {
:LABEL
for ....................
のようなラベルが本の通りにならない。たとえば 103ページなど
ラベル調整を諦めて -nola をつけ、手動で正しくすることにした
これバグだよな?
77:バグもういっこ
19/06/28 03:37:53.64 yOZUOG90.net
URLリンク(i.imgur.com)
左のように綺麗にまっすぐ整えろ が本の通りなのに
右のように変なところにいく
78:デフォルトの名無しさん
19/06/28 05:48:53.09 MYNfkfjj.net
何語?
79:デフォルトの名無しさん
19/06/28 14:53:22.61 oMWPNRS2.net
perl にインデントを求めるな。
80:デフォルトの名無しさん
19/06/29 00:24:21.75 YzN8MsSb.net
\(^o^)/
81:デフォルトの名無しさん
19/06/29 05:53:24.17 3U68S2mZ.net
どうでもインデント
82:デフォルトの名無しさん
19/06/29 15:13:13.34 3U68S2mZ.net
sjisでローマ数字のⅡが書いてあるのをutf8にすると、どうやっても化けるな
83:デフォルトの名無しさん
19/06/29 15:18:34.74 3U68S2mZ.net
一旦生で読んでcp932でデコードすればいいのか
LWP:Simpleだとそのへんに手が出せない
84:デフォルトの名無しさん
19/06/29 17:02:36.85 o1VtcfU0.net
MySQLもそうだけど、sjisは使っちゃイカンやろ。
細かいところで文字の置き換えルールがメチャクチャだったような。
いわゆるシフトJISはとにかくcp932で。
85:デフォルトの名無しさん
19/06/29 17:53:32.74 3U68S2mZ.net
多分htmlに俺はsjisだと書いてあると、LWPが勝手にsjisでデコードするんだろう
86:デフォルトの名無しさん
19/07/06 10:10:18.37 oMEfEQKE.net
元がeuc-jpだと、
$str =~ s/\x{301c}/~/g;
みたいなことを明示的に書かないと、回避できないみたい
同じものやがな
87:デフォルトの名無しさん
19/07/12 02:22:50.96 AjCqo1Mf.net
下記のコードですがダブルクォートを介さずに$testから'フ'を表示させる方法はありますか?
#!/bin/env perl
use strict;
use warnings;
use utf8;
my $test = '\xE3\x83\x95';
my $test2 = "\xE3\x83\x95";
print "$test\n\n";
print "$test2\n\n";
88:デフォルトの名無しさん
19/07/12 02:35:11.65 gPQuYcbX.net
my $test3 = $test;
$test3 =~ s/\\x([0-9A-Fa-f]{2})/pack('H2', $1)/eg;
print "$test3\n";
89:デフォルトの名無しさん
19/07/12 04:04:28.94 yXcDIkyu.net
print eval qq/"$test\n\n"/;
90:86
19/07/12 07:58:26.24 AjCqo1Mf.net
ありがとうございます!
91:デフォルトの名無しさん
19/08/11 05:06:35.55 GTeyRs5o.net
こんな書きかたあったか?
DB<27> printf "%s\n", ('Fizz')[$_%3] . ('Buzz')[$_%5] || $_ for (1..15)
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
()[]が見おぼえがない
92:デフォルトの名無しさん
19/08/11 05:17:44.88 GTeyRs5o.net
()で配列とみなしたとき
()[0]は定義されていると考えて
()[1]などは未定義で無しというトリックか
93:デフォルトの名無しさん
19/08/11 05:42:32.38 GTeyRs5o.net
DB<25> print "$_ cup", ("s")[$_ < 2] , " of coffee\n" for (1..3)
1 cup of coffee
2 cups of coffee
3 cups of coffee
94:デフォルトの名無しさん
19/08/11 10:17:48.54 GTeyRs5o.net
DB<23> printf "%s\n", "$_ cup" . ("s")x!!($_ != 1) . " of coffee" for (0..3)
0 cups of coffee
1 cup of coffee
2 cups of coffee
3 cups of coffee
DB<24> printf "%s\n", "$_ butterfl" . ("y","ies")[($_ != 1)] for (0..3)
0 butterflies
1 butterfly
2 butterflies
3 butterflies
95:デフォルトの名無しさん
19/08/12 10:00:54.45 1t9yEA1l.net
今はもう (1)[1] が空リストにならないんだな。perl5220delta に書いてあった。
リストコンテキストでの問題を避けるために
[split( /::/ , $class)]->[4]
みたいな書き方をしていたんだが。
いや、これは変えなくていいのか。
96:デフォルトの名無しさん
19/08/12 10:16:24.43 BBJuWfXI.net
undefは省力とかフェールセーフ的に有効にするんじゃなくて、
厳密に仕様化して積極的に使うべきだよな
初期化されてないものを使うのが気持ち悪いと感じるのは、
auto変数が本当に領域確保するだけだった頃の名残り
97:デフォルトの名無しさん
19/09/14 11:56:42.38 MMNKizJk.net
簡単なシェルスクリプトしか書けない素人ですがPerlの利点ってどこです?
grep -Pやperl -peで世話にはなっていますが目当てはあくまで正規表現だけですし
比較演算子はbashと逆だし変数は記号で使い分けなきゃならんしなんだこいつってなって
98:デフォルトの名無しさん
19/09/14 12:00:19.76 JUmWdv2U.net
どこでも使える
99:デフォルトの名無しさん
19/09/14 23:46:33.57 n7pzU9md.net
テキスト処理に特化されているところ
そのおかげで "," や " " とかの部分を q(,) q( ) などと書けたり
perl コードが正規表現と一体化していて再帰も扱えたりなど色々あるが
全部特化したことによる利点
100:デフォルトの名無しさん
19/09/14 23:58:57.25 SgsUVSB1.net
Perl6使ってる香具師さんいますか?
101:デフォルトの名無しさん
19/09/15 00:02:41.49 epz106Yo.net
bashで凝ったことを書くことを考えたら、Perlのほうがはるかに簡単。
bashは所詮シェルなので、クォートとかエスケープとか変数とか関数とか、いちいちワナが多いからな。
102:デフォルトの名無しさん
19/09/15 17:56:28.72 riyG3w3b.net
Perlの利点?
他の言語と同様になんでもできることかな。モジュール色々使うと作るの楽だしOSの違いもかなり吸収されてWindowsでもLinuxでも何も変更せずに動くプログラムも作れる。
シェルスクリプトも外部コマンド動かせば何でもできるとは言えるが、起動のオーバーヘッドの問題や起動しているコマンドの仕様が変わったときに個別に対応しなければいけないなど面倒な事がある。
103:デフォルトの名無しさん
19/10/23 15:22:28.55 Q75cL8J3.net
>>101
> OSの違いもかなり吸収されてWindowsでもLinuxでも何も変更せずに動くプログラムも作れる。
これでとんでもない目に遭ったぞ。
perlの\nは、内部的にはLF のみだが、OSがWindowsなら、出力する際に
CR+LF に自動的に変換してくれる。
しかし、出力文字コードがutf16le だと、特殊な宣言文を書かない限り、
LF (0x000a)は 「0x000a000d」ではなく、「0x000a0d」に変換され、
ぐちゃぐちゃに文字化けする。
文字化けの原因を特定し、回避方法を見つけるために、ずいぶん時間を取られた。
104:デフォルトの名無しさん
19/10/23 15:31:23.16 7+59i/z7.net
chcp 1200でいけそうな気がするんだけど
105:デフォルトの名無しさん
19/10/23 17:37:45.28 azQS8Nqn.net
>>102
\n は他の言語でも気を付けた方が良い。
例えC言語だったとしても歴史的な事情でライブラリが勝手に変換するかも知れない。
この頃はそれにまつわるバグは減ってるとは思うけどね。
ま、少なくとも \n を \x0a だと信じ込んで使うのは止めた方がいいだろうな。
\x0a はあくまでも \x0a と書いた方が良い。
Javaとかでは改行は System.out.println() を使って改行させるようにして \n を埋め込んでの改行は極力避けた方が良い。
106:デフォルトの名無しさん
19/10/24 00:15:31.72 dNYiTPCj.net
>>102
いや、特殊な宣言文ってなんだよ。PerlIO の man 読めよ。
open 関数や binmode 関数の説明にも「PerlIO を読め」って書いてあるよ。
107:デフォルトの名無しさん
19/10/24 00:54:14.51 NQorbS3o.net
s/\n//g;
s/\r//g;
俺は常にこうしてる
108:デフォルトの名無しさん
19/10/24 06:24:46 rCe9ez9s.net
\nを埋め込んだ箇所が一つでもあったらアウト
みたいな作り方は絶対失敗する
109:デフォルトの名無しさん
19/10/24 08:28:21.30 wmDm31X8.net
>>106
s/\R//g;
じゃないのか?
110:デフォルトの名無しさん
19/10/24 09:04:15.10 LjTGtkP8.net
>>105
> いや、特殊な宣言文ってなんだよ。PerlIO の man 読めよ。
結論としては、下のように書けばいいのだが、これはネットで色々探して
見つけてきたもので、PerlIO の man 読んで自分で見い出すことは、
私にはできなかった。それが出来る人は凄いと思う。
binmode STDOUT => ":raw:encoding(utf16le):crlf";
111:デフォルトの名無しさん
19/10/24 22:37:27.00 rCe9ez9s.net
右から読むんだよ
112:デフォルトの名無しさん
19/11/06 01:45:01.50 yvB3xxPc.net
消費税計算(10
113:%)しようとしました。税込550円を消費税と本体価格にする。 $a = 550; $b = 1.1; $c = $a / $b; $d = $a - $c; $e = int($c); $f = int ($d); print すると、 $c は 500 $d は 50.000000000001(0の数はだいたい) $e は 499 $d は 50 とうやら550 / 1.1 が内部的に割り切れていない様子(おそらく実際は内部的に499.99999999999999になってるのでintすると499に) ロジックの変更で回避したけど、このバグ聞いたことありますか?
114:デフォルトの名無しさん
19/11/06 02:54:03.98 normnvJW.net
>>111
バグじゃなくて仕様やろ。
Perlの数値型はdoubleなので、1.1が正確に表現できてないんちゃう?
浮動小数点数の誤差についてぐぐれ。
115:デフォルトの名無しさん
19/11/06 03:29:15.89 normnvJW.net
>>111
おせっかいかもだがもうひとつ。
その手の誤差を回避するのは、ロジックでなんとかできることもあるが、実際にはなかなか難しいはず。
たまたま誤差が見えなくなってるだけの可能性もありそうなので、動作確認は慎重にな。
ちゃんとやるなら、decimal的なモジュールを使ったほうが。
あるかどうかは知らんけど。
116:デフォルトの名無しさん
19/11/06 03:46:51.16 QwLiS9cf.net
>>111
バクではなく仕様。
ちなみにPython,Tclで確認してみましたが同じ出力結果になりました。
どんな言語でも金額の計算や小数点の桁を調整をする場合、
int(切り捨て)、round(四捨五入)、ceil(切り上げ)などで処理するか、
出力時に、printfやsprintfを使って、"%.0f"などを指定して桁を合わせる
必要があると思います。
117:デフォルトの名無しさん
19/11/06 03:51:32.22 ZoqI13Ph.net
あるよ
use bigrat;
my %ISO_number = (
100 => 0,
125 => 1/3,
160 => 2/3,
200 => 1,
250 => 4/3,
320 => 5/3,
400 => 2,
500 => 7/3,
640 => 8/3,
800 => 3,
1000 => 10/3,
1250 => 11/3,
1600 => 4,
2000 => 13/3,
2500 => 14/3,
3200 => 5,
4000 => 16/3,
5000 => 17/3,
6400 => 6,
8000 => 19/3,
10000 => 20/3,
12800 => 7,
);
# dirty hack: 0/1 force rational type
# warning: if it locate last, sum goes WRONG!
printf "%s\n", 0/1 + $shutter_speed{$ss} + $F_number{$F} - $ISO_number{$ISO};
118:デフォルトの名無しさん
19/11/06 09:06:26.53 dfSHCt1W.net
浮動小数点の問題は知っていたが、こうなる事は初めて知った。危ないもんだな。
$c = $a / $b; # $c = 500
$e = int($c); # $e = 499
119:デフォルトの名無しさん
19/11/06 09:28:51.28 i85ttsqs.net
>>111
それはバグではないし、昔々からある超有名な仕様。知らないのはお前だけ。
120:デフォルトの名無しさん
19/11/06 10:08:35.95 yvB3xxPc.net
>>112
>>113
>>114
>>117
仕様で他の言語でもあるのですね。Perlで明示的な型指定とかはほぼ考えたことが無かった(1.08の時は意図した結果が得られていた)ので、勉強してみます。
ありがとうございます。
121:デフォルトの名無しさん
19/11/06 10:29:25.24 i85ttsqs.net
言語というよりはライブラリやCPUの問題だ。
しかしだいたいのメジャーな言語が採用しちゃってるので言語に関係なく出ると思って良い。
122:デフォルトの名無しさん
19/11/06 17:59:53.94 j94j+HrP.net
言語仕様っていうと違和感あるね
意図してこうしてますって感じで
IEEE 754の仕様といえばそうなのかもしれんがあれは規格であって
仕様とはまたニュアンスが違う なんつーか実数扱うときはそんなもんという感覚
123:デフォルトの名無しさん
19/11/06 18:58:09.30
124:yvB3xxPc.net
125:デフォルトの名無しさん
19/11/06 18:59:08.05 yvB3xxPc.net
$c = ;
この行余計でした
126:デフォルトの名無しさん
19/11/06 19:44:41.92 mEOqpT9o.net
>>120
C/C++なら規格が精密なのでそういう違和感もわかるが、Perlの場合は逆におかしいやろ。w
127:デフォルトの名無しさん
19/11/06 19:52:26.69 mEOqpT9o.net
>>121
税率によってはきっとアカン場合がありそう。。。
単純な切り捨てはヤバいような。
まあ、そこまでの精度はイランのやろけども。
ちなみに、今回のケースなら、$x/1.1とするのではなく、$x*100/110としたほうが安定しそう?
128:デフォルトの名無しさん
19/11/06 20:39:05.70 yvB3xxPc.net
>>124
うちは税込ものを分離する時は消費税側で小数点以下切り捨てなのでOKなのです
四捨五入とか会計方針によっては稀に問題が出るかもしれませんね
129:デフォルトの名無しさん
19/11/06 21:15:49.18 i85ttsqs.net
1.1を掛けるなら11を掛けてから10で割った方が良いかもな。そうすると正数計算でやれる。
切り上げや四捨五入をしたい場合は10で割る前に一桁目を見て10を足したり足さなかったりすれば良い。
130:デフォルトの名無しさん
19/11/06 21:18:49.26 i85ttsqs.net
ああ。逆か。税込みから本体と税を求めるのか。でも考え方は同じだな。
131:デフォルトの名無しさん
19/11/07 00:06:59.16 gr4VkOsJ.net
>>125
違うぞ。今回の問題点をちゃんとわかってるか?
1.1と書いたリテラルが、実際の値は1.10...となっていて、1.1よりも大きかったことだぞ。
誤差の具合によっては、正確には切り捨てが不要な値でも、除数が大きいせいで計算結果が実際よりも小さい値になってしまって、してはいけない切り捨てが発生してしまう可能性はないんかね。
132:デフォルトの名無しさん
19/11/07 00:07:26.65 gr4VkOsJ.net
>>126
>>124
133:デフォルトの名無しさん
19/11/07 01:08:34.48 q6f07NqD.net
>>128
消費税は小数点を使わず整数計算で
10 /110
8 / 108
で計算するようにします
アドバイスありがとうございます
134:デフォルトの名無しさん
19/11/07 01:12:13.17 q6f07NqD.net
>>128
うちの会社ではあんなに国家予算並みにたくさん「0」が出てくる消費税計算は無いのでとりあえずの回避でも大丈夫です
とはいえ先ほどのように整数計算に修正しようと思います
135:デフォルトの名無しさん
19/11/09 10:00:40.69 q+fGPpet.net
どちらにせよ、小数点以下をどう扱うかは仕様で決めないとダメだな。
136:デフォルトの名無しさん
19/11/14 22:54:58.33 cMIrVE8k.net
ファイルハンドル($fh)からファイル名を取得する方法ってありますか?
・stat $fhでinode取得してシェルのfindで見つけるってのはコストかかるのでやりたくない。
*{$fh}{IO}辿ってIO::Fileから得られないかなって調べたんですけど分かりませんでした。
基本的にそういう思想がないってことかも知れません。
137:デフォルトの名無しさん
19/11/15 00:28:22.57 WAwhq9DE.net
ムリやろ。
ファイル名のないファイルハンドルも少なくないしな。
138:デフォルトの名無しさん
19/11/15 12:49:10.35 qkK0C17l.net
ファイルハンドルからファイル名を求めるシステムコールとかもないしな。
ハードリンクされてて1つのi-nodeで複数のファイル名を持ってたらどうすんのっていう問題もある。
自分の作ったプログラムの中だけでいいならそのプログラム内だけの独自のopen,close作ってそこでファイル名を保持しとけば良いんじゃないかな。
139:デフォルトの名無しさん
19/11/15 22:37:17.80 9LSwivmi.net
お二方ありがとう
そもそもそういう使い方をするものではないって理解しました
140:デフォルトの名無しさん
19/11/17 00:22:07.56 +/PgA3gU.net
そもそもファイルをopenした時点で、ファイル名は自明だろ、、、
<>の場合は、今開いているファイル名は、$ARGVでアクセス出来るし、、、
while(<>){ print $ARGV if $. == 1 ; $. = 0 if eof }
他は、自分でコード書くんだからファイルリストの管理すりゃいいだけの
話だし。
141:デフォルトの名無しさん
19/11/17 00:47:01.26 7P3Fm4Oa.net
>>137
ファイルハンドルだけもらうクラスかもよ
142:デフォルトの名無しさん
19/11/17 01:44:18.01 cO7DNsZu.net
いや、気持ちはわかるやろ。
ファイルハンドルは、しょせんハンドルでしかないと納得するのは、事情がある程度わかってからなんだから。
143:デフォルトの名無しさん
19/11/17 07:47:40.51 bNRHw2eJ.net
ファイルハンドルをインクリメントすると次のファイルを指すハンドルになることはあまり知られていない。
144:デフォルトの名無しさん
19/11/17 12:07:49.00 Ew4nGi4g.net
>>140
それは、Perlのファイルハンドルの話か?
Cのファイルポインタではなく?
145:デフォルトの名無しさん
19/11/18 08:50:22.41 4tmHvePg.net
ActivePerl 5.22 から 5.28 にアップデートしたのだが、
次のものがなくなってしまって、とても不便になった気がする。
・PerlEz.dll
・ppm(perlパッケージマネージャー)
・htmlドキュメント
他の2点はいいとしても、PerlEz.dllが無いと生きていけないので、
5.22 に戻した。もう一生5.22 を使い続けることになるのかな。
なぜ、こんな事をするのだろうか?
146:デフォルトの名無しさん
19/11/18 20:45:39.28 2uYwgX87.net
Strawberry Perl 使えよ
147:デフォルトの名無しさん
19/11/22 22:32:44.69 G0qxcoi/.net
そういやみんな最新の安定版使ってんの?
うちは5.20で止めてる。特に意味はないんだけどこれが安定してるってどこかで見たから。
148:デフォルトの名無しさん
19/11/22 23:56:39.64 0hNsLKVA.net
5.16.3だな
多分意味は無い
149:デフォルトの名無しさん
19/11/23 00:04:49.15 pA1s2lMR.net
俺もCentOSのデフォルトだわ
5.16.x
もう枯れてるしね
150:デフォルトの名無しさん
19/11/23 00:20:10.52 FBMqwUlj.net
ずっと5.8.9のままだわ
とにかく安定している
151:デフォルトの名無しさん
19/11/23 01:08:20.02 uP8OeUg3.net
perlのワンライナーについて質問です。
cat /home/xxx/aaa.txt | perl -spe 's/AA/$var/; END{print "complated.\n"}' -- -var="BB" > bbb.txt
上記のようにすると、END部分の終了メッセージもbbb.txtに保存されてしまいます。
そこで下記のようにしてみたのですが、入力ファイルの指定と"--"以降の引数がうまく与えられずエラーになります。
perl -i -spe 's/AA/$var/; END{print "complated.\n"}' /home/xxx/aaa.txt -- -var="BB"
どのようにすれば入力ファイルの指定と変数渡しを一緒にできますか?
152:デフォルトの名無しさん
19/11/23 01:52:51.48 0LKgjFg3.net
5.30.0
なるべく最新の安定版を追っかけてる
153:デフォルトの名無しさん
19/11/23 02:19:04.46 En+bKilB.net
>>148
STDERRにprintすれば?
154:デフォルトの名無しさん
19/11/23 10:12:25.15 Dim3LBiC.net
perl5.26.1
perl2exe 使うので。
155:デフォルトの名無しさん
19/11/24 00:31:51.83 jceUCsgs.net
>>150
ご意見有難うございます。
ファイルを一番最後に入れるとできるということがわかりました。
perl -i -spe 's/AA/$var/; END{print "complated.\n"}' -- -var="BB" /home/xxx/aaa.txt
156:デフォルトの名無しさん
19/11/25 10:33:31.52 veETdbiQ.net
>>152
-i があるからでは?
-i.bak とかやっとくと .bak をファイル名に付加したバックアップ作れるよ。
多分新規ファイル開いてそちらに出力して後でリネームして元ファイルのバックアップを取ろうとしてるんだろうと思う。
-i の直後に何もない場合はバックアップ取らずに元ファイルにリネームだけやってるんだと思う。
157:デフォルトの名無しさん
19/11/26 23:14:08.94 EA1DZQ5h.net
>>153
コメントありがとうございます。
今回やることはファイルに上書きしたくバックアップもいらなかったので -i で良いかなと思っていました。
ワンライナーはよくお世話になってるのですが、今回-sでperl内に変数として渡せることがわかり、ますます重宝しそうです。
158:デフォルトの名無しさん
19/11/30 17:02:59.68 hCKH6fU7.net
今日、学んだこと。
/^([a-c]){2}\1/
は 'abb' にはマッチできるが 'aba' にはマッチできない。
もちろん 'aaa' にはマッチできるが…要するに
/^([a-c]){2}\1/
は
/^([a-c])\1\1/
と同じではなかった。
159:デフォルトの名無しさん
20/02/01 09:03:36 qxbFBKGD.net
パターンの中で\1って使えるんや…
正規表現って普通「事前に」FSMにコンパイルされてからマッチングに使うるんじゃないの…?
バックトラックとかする高度な実装のやつはまた違うんかね
160:デフォルトの名無しさん
20/02/01 13:27:18 wtOh7v6m.net
>>156
¥1は、むしろパターンの中でしか使わない。外で使うときは$1のほう。
正規表現は、バックトラックがあたりまえ。しない実装なんかあるか?
いろいろ勘違いしてるぞ。
161:デフォルトの名無しさん
20/02/02 08:34:53 7b/FZYuN.net
>>157
話が通じなさそうで大変よろしい
162:デフォルトの名無しさん
20/02/02 13:46:05 9cWLJdKQ.net
s/(pattern)/\1/
という使い方をするもんだと思いこんでいて、謎のバグに悩んだ
163:デフォルトの名無しさん
20/02/04 19:17:18 64ds8brY.net
perl hacks買った
送料込み300円
164:デフォルトの名無しさん
20/02/04 19:49:23 53yGrLtS.net
買われてしまった。
モダンperl入門でも買おうかな
165:デフォルトの名無しさん
20/02/05 00:34:08.21 Yyzz6n+F.net
今さら「モダン」もないやろ。w
どうとでも好きに書いたらええがな。
166:デフォルトの名無しさん
20/02/05 04:02:23 rxl56Lqp.net
モダンとか死語だもんな
そういうワード使うしかなかった当時の状況もあるけど
167:デフォルトの名無しさん
20/02/05 17:51:27 9nK7Yle0.net
死語かなあ?
168:デフォルトの名無しさん
20/02/05 21:33:12 SZWAnwkp.net
>>156
決定性有限オートマトンと非決定性有限オートマトンについて調べるといいぞ。
lex は前者で Perl は後者だ。
169:デフォルトの名無しさん
20/02/05 22:58:10 TkSDhbEE.net
そういやモダンperl入門の新刊どうなった?
170:デフォルトの名無しさん
20/02/05 23:00:15 TkSDhbEE.net
2014年1月予定か。たのしみやで。
171:デフォルトの名無しさん
20/02/06 00:10:26.01 UIZEnib+.net
perlの最新本って、これくらいだろ
初めてのPerl 第7版 2018/01/20
Effective Perl 第2版 2015/02/17
172:デフォルトの名無しさん
20/02/06 00:14:16.79 m/3X75FJ.net
クリスマスまでにはperl6の本が山のように出版されるからな
173:デフォルトの名無しさん
20/02/06 00:24:20 T14/xjtC.net
ドラマ「3000回目のクリスマス」
174:デフォルトの名無しさん
20/02/06 00:30:59.99 6QnB4wyK.net
Perl6無くなったんじゃなかったっけ?
175:デフォルトの名無しさん
20/02/06 14:10:21 EPBtHi1S.net
ちっちゃくRakuって書くんじゃない?
176:デフォルトの名無しさん
20/02/10 22:55:04.23 hYCIpnsp.net
非決定性有限オートマトンは決定性有限オートマトンに変換できる
ていうか両者の能力は同じ(正規言語止まり
177:デフォルトの名無しさん
20/02/10 23:09:15.59 O7nANUNm.net
ゲーデル?
178:デフォルトの名無しさん
20/02/11 08:07:12 RnNFx+rl.net
んまーできると言っても状態数の爆発を伴うこともあるので
非決定性有限オートマトンのままにしといて入力が来たときに探索(バックトラック)で解決、
というのもアリっていやーアリ
179:デフォルトの名無しさん
20/02/11 17:49:46.25 ix+UlUL8.net
名前変えたんだよね?やっぱ違いがありすぎて紛らわしいから変えたのか?
180:デフォルトの名無しさん
20/02/11 17:50:45.15 ix+UlUL8.net
すまん。リロード忘れて間に他の書き込みが挟まった。Perl6の話ね。
181:デフォルトの名無しさん
20/02/11 18:26:47.40 FJnR5oDj.net
ロゴもどうなんだ
182:デフォルトの名無しさん
20/02/11 22:24:33 kUx05S+X.net
>>176
少なくとも、もうPerlでは無いと言うことだ
Perlの系譜にある別言語だね
183:デフォルトの名無しさん
20/02/12 01:53:33 CB9IiDBv.net
YouTuberは「最強の職業」である理由。
URLリンク(www.youtube.com)
【事例付き】YouTuberは最強の副業である件について。
URLリンク(www.youtube.com)
【初心者向け】YouTubeの始め方・稼ぎ方を徹底解説!
URLリンク(www.youtube.com)
「YouTubeなんていつか稼げなくなる」という主張を論破する。
URLリンク(www.youtube.com)
収益化から丸1年!YouTubeでいくら稼いだか公開。
URLリンク(www.youtube.com)
その動画で月商○○万!? YouTubeで稼ぐ裏技的アプローチ。
URLリンク(www.youtube.com)
【貧者の工夫で戦え】ガラケーだっていい。YouTube始めるのにパソコンはいらない!
URLリンク(www.youtube.com)
【第一回】SNS、YouTube、ブログで稼ぐ方法を、丁寧に解説します!
URLリンク(www.youtube.com)
184:デフォルトの名無しさん
20/02/12 07:13:33 ZjDcS8oe.net
元から別言語定期
185:デフォルトの名無しさん
20/02/12 10:59:57 urwrbVLd.net
Python もそのくらいやって欲しい。
186:デフォルトの名無しさん
20/02/12 16:01:22.42 SF/q3PcI.net
Rakuは設計当初からオプショナルな型システムあるし
numpyっぽい操作が言語組み込みだったり
いろいろ早すぎた
187:デフォルトの名無しさん
20/02/13 01:14:31.03 on7ESczL.net
当初はすごいと思ったけど今見ると糞仕様だな
188:デフォルトの名無しさん
20/02/15 12:59:07.78 8m1Cr/X/.net
ハッシュの配列とかも簡単にできるもんね。
perlで作ったプログラムをC++で作り直すと思うとゾッとするw
189:デフォルトの名無しさん
20/02/15 14:49:16 av6eWd5V.net
ハッシュの配列とかスクリプト言語の類ならどれも同じようにできる。
Perlがだめなのは、スカラとリストの二つが存在することだな
同じ書き方をしても、使い方で意味が変わってしまう。
変わるだけならともかく違う解釈で動いてしまうからバグのもとに鳴る。
190:デフォルトの名無しさん
20/02/15 16:00:24.43 CBuE7ub7.net
>>186
リストは使わずに全部リファレンスでやった方がいろいろ安全だよ
191:デフォルトの名無しさん
20/02/15 16:25:27.75 33mO6l2/.net
なるほどそうかもしらん
192:デフォルトの名無しさん
20/02/15 18:59:30.30 jU+J++ht.net
$aと@aが区別されるので調子に乗って、
$a->[0][0][0] と一緒に $a も使ってバグる
193:デフォルトの名無しさん
20/02/16 20:31:14 7RTwZ9VV.net
まあ、自分で作るには兆便利だけど人のプログラムの修正やメンテはやりたくないなw
やっぱ、C言語ぐらい厳しくないとプロ用は無理だよね。
194:デフォルトの名無しさん
20/02/17 00:50:46 qx2LCmQN.net
Cは厳しさが足りない!
195:デフォルトの名無しさん
20/02/17 09:02:59 3xf/X3D3.net
他人が書いたものばかりでなく、1年前ぐらいに自分が書いたものを
修正しようとして、「なにやってんの?これ」と思う。
自分自身のために、「しつこいぐらいにコメントを入れる」を心がけてるよ。
196:デフォルトの名無しさん
20/02/17 10:26:17 DZOr9dsV.net
それ以前にコメントがなくてもわかるようなコードにしてるよ
197:デフォルトの名無しさん
20/02/17 13:13:07 ZZZ2hHJ7.net
マクロなコードは読んで意味がわかるものにするのは当然として
コメントはビジネスロジックと言うか、フローの説明じゃね
198:デフォルトの名無しさん
20/02/17 13:17:02 5usMQUGr.net
書いてあることを説明する必要はない。
コメントで書くのは、なぜこんなフローにしたかだ
199:デフォルトの名無しさん
20/02/17 13:21:56.88 ZZZ2hHJ7.net
ミクロだわ恥ずかしい(´・ω・`)
200:デフォルトの名無しさん
20/02/17 15:20:38 wTmXuXv8.net
一見すると何やってんだか分からなくてもよく辿るとスゲエなこれ天才じゃねって思うことある
自分が書いたんだけどね
201:デフォルトの名無しさん
20/02/17 20:40:48 Y4S6wB9m.net
書くのも読むのも全然困らないようなコードしか書かないのが理想
難解な処理は、きっともっとシンプルに解決できる
202:デフォルトの名無しさん
20/02/17 22:34:20 qx2LCmQN.net
現実はそうではない。
203:デフォルトの名無しさん
20/02/18 20:13:13 55IHv/fO.net
my @result = grep !$temp{$_}++, @list;
凄げーよね、@listをuniqにソートするコードだって。
パールならではだよね。
普通なにしてるかわからんよw
204:デフォルトの名無しさん
20/02/18 20:25:02 2VKhUmei.net
それは慣用句なので割と判る
コメントくらい付けるけど
205:デフォルトの名無しさん
20/02/18 20:32:09 KQgsUf00.net
result = list(set(LIST))
pythonのほうが圧倒的に簡単
206:デフォルトの名無しさん
20/02/18 21:09:43 lAgti/Dg.net
>>200
これでなんでソートされるの?
207:デフォルトの名無しさん
20/02/18 21:10:15 Z1cJ/QMX.net
>>200
それじゃあソートできてないだろ
my @result = sort grep !$temp{$_}++, @list;
208:デフォルトの名無しさん
20/02/18 21:32:52 v/AIhdlf.net
>>202
sort 使わずに sort できるなんて凄いな。
209:デフォルトの名無しさん
20/02/18 21:34:51 55IHv/fO.net
>>203
>>204
ゴメンソートは関係無かった。
uniqしたくて、検索したらこれが出てきたんだけど、自分で作るなら
for文で回してif文でチェックしてpushで配列に入れる。まあ、どんな言語でも動くやつね。
パッとこのコードが書けるんならいいけど、ここで時間を掛けたくないよね。
210:デフォルトの名無しさん
20/02/18 21:48:33 3v1Ek71E.net
普通のfor文で書けばよくね?w
211:デフォルトの名無しさん
20/02/18 21:53:35 2VKhUmei.net
機能がはっきりしてるから、sub uniqか何かを作って言語仕様かのように書く
きっと既にあるから、コピペで済む
212:デフォルトの名無しさん
20/02/18 22:00:21.17 3v1Ek71E.net
まあ余程の理由がない限り普通はList::Util使うね
213:デフォルトの名無しさん
20/02/18 22:14:59 2AC9Ct1n.net
ワンライナーカッケー病なんだろ
214:デフォルトの名無しさん
20/02/18 22:20:53 KQgsUf00.net
ハッシュを使ってカウントするなんてperlの定石なんだが
入門書のハッシュ解説で必ず載ってるぞ
215:デフォルトの名無しさん
20/02/18 23:17:41.56 aJeTcUgK.net
>>209
普通は>>204でしょ
モジュールは精査して本当に必要なものしか入れない
まあ現場次第だと思うが
216:デフォルトの名無しさん
20/02/19 00:10:20.47 XDqysw2e.net
>>200
Rubyだとuniqが使えるが配列の集合演算でもできる。
result = list | []
217:デフォルトの名無しさん
20/02/19 00:43:04 6o0SSmsW.net
実装は面白くても実際の所普段の仕事では
わかりやすいインターフェースの関数にするから
そういう点で差はでないというね。
218:デフォルトの名無しさん
20/02/19 01:02:36 mEonuRdN.net
>>214
PerlやRubyなら、わざわざ関数にはしないかな。
その場でハッシュにつめてキーだけ使うとかかなりふつうだから。
219:デフォルトの名無しさん
20/02/19 01:53:16.69 IHihvCy5.net
ここ人いたんだ
220:デフォルトの名無しさん
20/02/19 02:27:13 +yXfQCpG.net
オワコンだとかすたれた言語だとか言われるけどまだまだ使われてるから
221:デフォルトの名無しさん
20/02/19 04:28:09.35 UqnCT+lt.net
>>200
いや。わかる。
君もそのうちわかるようになるよ。
222:デフォルトの名無しさん
20/02/19 05:39:50.97 6o0SSmsW.net
>>215
そしてコメント書くぐらいなら関数にしろ
223:デフォルトの名無しさん
20/02/19 09:01:28.79 pJACNDga.net
他人にわかってもらいたくないんだろう。
224:デフォルトの名無しさん
20/02/19 09:31:49.80 oZi5GQ/y.net
ほら、こんなコードで実現できるんやで、
なにやってるか一見わからんやろ
説明しよか?
みたいに言いたくなったら、それは可読性が悪い証拠
225:デフォルトの名無しさん
20/02/19 12:23:16.28 CZsThdPw.net
Perl慣れしていない人の事を考える必要があるなら
標準モジュールの List::Util で uniq を使えばいいし、
URLリンク(perldoc.perl.org)
何らかの理由で標準モジュールや XS が使えないなら
Pure-perl 実装を CPAN から拾ってくればいいし、
URLリンク(metacpan.org)
実際 List::Util::PP::uniq() の中身はその手法だぞ。
URLリンク(metacpan.org)
sub uniq (@) {
my %seen;
my $undef;
my @uniq = grep defined($_) ? !$seen{$_}++ : !$undef++, @_;
@uniq;
}
226:デフォルトの名無しさん
20/02/19 16:51:28 /J962Gym.net
perl使い生きてた
227:デフォルトの名無しさん
20/02/19 18:36:12.61 X6PQVyJY.net
勉強になるというか、どこで学んだの
228:デフォルトの名無しさん
20/02/19 19:52:56.93 SoQYbBiO.net
>>219
書かないから心配するな!
1+1と同じレベルだからな!
229:デフォルトの名無しさん
20/02/19 20:07:21 pJACNDga.net
そういう思想の馬鹿しかおらんからperlは廃れたんだよ。
230:デフォルトの名無しさん
20/02/19 20:07:27 zh3CM0eN.net
if (defined $table{$var}) {
$var = $table{$var};
}
みたいな処理
「何か」に対して判定した結果に従ってその「何か」を採用する
何かを2回書くのが嫌な時の逃げ方は何だろう
231:デフォルトの名無しさん
20/02/19 20:12:42 1DPeZovD.net
リストの要素数を得るために空リストに代入するのも慣用句と読んでいいかな?
$n = (() = <*>);
みたいの。
232:デフォルトの名無しさん
20/02/19 21:01:35 zh3CM0eN.net
要素数なんてどうせループにしか使わないので、
そんなのを取得しない解決がきっとエレガント
pythonの何でもイテレータ思想はきっと正しい
233:デフォルトの名無しさん
20/02/19 21:35:36 bGX6osz8.net
>>227
これはあるね しばし考えるんだけど結局一時変数を使う
構造によっては$_が使える時もあるんだけどまれだなあ
234:デフォルトの名無しさん
20/02/19 21:45:00.08 mEonuRdN.net
>>226
じゃあRubyやらC#やらも滅びるんやな。w
ハッシュのある言語ではあたりまえのイディオムやろが。
235:デフォルトの名無しさん
20/02/20 00:34:37 bivTkZxZ.net
まあ最近の言語は便利な標準メソッド呼べば終わりって感じだからね
Perlは標準モジュールの範囲だけでやろうとすると結構面倒
236:デフォルトの名無しさん
20/02/20 00:35:55 1VYpL0NG.net
スレに人が来ていてオジサンうれしいよ
237:デフォルトの名無しさん
20/02/20 01:29:24 bivTkZxZ.net
最近はPerlのことを喋ると謎の軍団が叩きに来るからな
ネット上で喋れる場所がなくなった
迫害されてる気分
238:デフォルトの名無しさん
20/02/20 13:15:43.08 fXEOX4Gg.net
Perl/Tk は使い物にならん。プログラムが大きくなると動かないでやんのw
Perl/Qt を推進していくべき。
ここの人はPerlでGUIを使ったりしてる?
239:デフォルトの名無しさん
20/02/20 15:23:29 Gm5IubjH.net
Windows限定だが、Win32-GUIを使ってるよ。
インストールして、次のバッチファイルを走らせると、
細かい具体例のデモが見れる。
C:\Perl\site\bin\win32-gui-demos.bat
240:デフォルトの名無しさん
20/02/20 17:36:38 Nllb9nDe.net
>>231
そうではなくて独自の記号にコンテキスト毎に意味を詰め込む様な言語思想のこと言ってるんだがね。
241:デフォルトの名無しさん
20/02/20 18:47:26 CqCGFBWH.net
入力も出力もテキストで完結してるのがいい
と思ってたけど、最近excelデータを入出力に使い出した
242:デフォルトの名無しさん
20/02/20 20:33:42 0HRLUjae.net
短絡論理演算子を使うという方法もあるが、お気に召すかどうかは知らん。
243:デフォルトの名無しさん
20/02/20 20:44:08.31 CqCGFBWH.net
>>227の例だと
$var = $table{$var} or $var
で概ね動くけど、空文字列なんかが入ってた時に誤動作する
判別はdefinedしか無いとして、それでも書ける短絡評価とは
244:デフォルトの名無しさん
20/02/20 21:36:24.51 uxa6Suua.net
defined-or使うだけじゃないの?
$var = $table{$var} // $var;
245:デフォルトの名無しさん
20/02/20 22:00:38.63 0HRLUjae.net
アンカー入れ忘れたのによく分かってくれたな。ありがとう。
246:デフォルトの名無しさん
20/02/20 22:37:06 CqCGFBWH.net
そんな演算子知らん
247:デフォルトの名無しさん
20/02/20 23:16:35.88 NRacWxGd.net
null合体演算子は最近の流行りやぞ?
248:デフォルトの名無しさん
20/02/21 01:54:46.68 dQ0Yz//t.net
//流行ってる気がしない。
新しい機能を積極的に使う人はそもそもperlを使わないのではないか。
断固外氏のブログのネタにしかなってなさそう。
249:デフォルトの名無しさん
20/02/21 02:18:25 YvRUEPlL.net
5.8じゃ使えないからね
それだけで使わない理由になる
250:デフォルトの名無しさん
20/02/21 03:26:53.00 6/adwu75.net
細かいけど優先度は// > = > orだよ
251:デフォルトの名無しさん
20/02/21 03:54:06.99 6/adwu75.net
>>227と等価なのは>>241か
この例はdefinedだったから適用できるのね
判定が任意だとするとやはり2度書くしかないかね 例えば
if ($table{$var} % 3) {
$var = $table{$var};
}
perlは同一値への参照と解釈して2回読みにはいかないという気の利いたことはしないだろうね
エクセプション入ったら変わる可能性あるしね
252:デフォルトの名無しさん
20/02/21 03:58:30.72 6/adwu75.net
//=の逆バージョンあったらいいなとはたまに思うね
そこまで必要性ないという判断でないのだろうけども
253:デフォルトの名無しさん
20/02/21 07:05:24 TnPEnehp.net
$table{$var} が $_ に入るような無害な処理をしておいて、
$var = $_ % 3 ? $_ : $var
と等価なシンタックスシュガーで処理する
みたいなことができれば
254:デフォルトの名無しさん
20/02/21 09:05:21.00 KvZFDIbR.net
2回読みたくないというのがどういうレベルでの事か分からんが
ソースコードの見た目だけならサブルーチンに押し込めばどうとでも
#!/usr/bin/perl -w
use strict;
use Scalar::Util qw(looks_like_number);
sub dp {
defined $_[0] ? "d[$_[0]]" : 'u[]';
}
sub if_true(&$$) {
local $_ = pop;
$_[1] = $_ if &{$_[0]};
}
my %table = ('' => 1, 0 => 2, a => 3, b => 4, c => 0, d => '', e => undef);
for my $var (sort keys %table) {
print dp($var), dp($table{$var});
if_true { looks_like_number($_) && $_ % 3 } $var => $table{$var};
print " => var[$var]\n";
}
255:デフォルトの名無しさん
20/02/21 09:57:55 PzVMR7sv.net
サブルーチンとか甘え。謎の記号を使って魔法のようなコードを書くのがPerlの醍醐味。可読性は悪
256:デフォルトの名無しさん
20/02/21 12:24:11 TKnLlA6x.net
>>235
昔々 Perl/Tk 使おうと思ったが日本語対応が出来てなくて止めたことがある。
それ以来 Perl で GUI はやってない。
257:デフォルトの名無しさん
20/02/21 14:01:10.98 OOdvSVAe.net
絶対やらないけど
$_ % 3 and $var = $_ for $table{$var};
258:デフォルトの名無しさん
20/02/21 15:45:08.67 ooEapY6E.net
>>253
それ、5.6以前の話?記憶が曖昧だけど、utf8に対応した5.6あたりから、Tkで日本語使えたような気がするけど。
259:デフォルトの名無しさん
20/02/21 18:15:13 TKnLlA6x.net
>>255
忘れた。20年ぐらい前だったかな?
260:デフォルトの名無しさん
20/02/22 22:24:09.42 pvGxmVZm.net
裏でずっと何かしてるスクリプトを走らせておきたい
ActivePerlのウィンドウが出るのが嫌なので、wperlを起動してウィンドウを出さない
でも、wperlを起動する為のbatファイルのウィンドウがずっと出てる
batファイル以外のいい起動方法はないだろうか
261:デフォルトの名無しさん
20/02/22 22:46:33 KpqdZij5.net
>>257
start "" "wperl ..."
262:デフォルトの名無しさん
20/02/22 22:47:18 +QQ7ccWr.net
ショートカットでよくね?
263:デフォルトの名無しさん
20/02/22 23:01:19 pvGxmVZm.net
wperl以降を""で括ると動かないけど、無くせば動いた
これでサーバ監視ができる
264:デフォルトの名無しさん
20/02/23 06:57:52.64 6djC7Yo0.net
Linuxなら何も考えずにできるが・・・
265:デフォルトの名無しさん
20/02/23 07:18:43.14 u5LzmB/p.net
pingが通るようにしてしまえばwindowsでもそういうのは既にある
266:デフォルトの名無しさん
20/02/23 12:43:19 1MmoNroU.net
>>261
シェルからふつうに起動したら、親プロセスとの関連でトラブルが発生するところはどちらも同じ。
というか、むしろLinuxのほうがわかりにくくてひどい。
disownとかnohupとか知ってるか?
267:デフォルトの名無しさん
20/02/24 04:42:11.62 jrwZftYn.net
知ってるよ。
268:デフォルトの名無しさん
20/02/25 12:21:34 Z4NIrtJK.net
>>260 何か使い方間違ってない? 次のようなコマンドで、普通に通るぞ。 wperl.exe "C:\utp\foobar.PL" "C:\foo\bar.txt"
270:デフォルトの名無しさん
20/02/25 23:35:33.10 Vpd+P02x.net
>>265
>>258
271:デフォルトの名無しさん
20/03/05 09:29:31 hJr+GlCd.net
ブラウザでは普通に見られる楽天市場の商品ページ
(item.rakuten.co.jp/shop_mei/a012345/)を get 出来なくなった。
ユーザーエージェントやらリファラはイジってみたけど
272:デフォルトの名無しさん
20/03/05 12:43:29 eb4C0HQQ.net
active perl の ppm がなくなっていろんなモジュールが動かないのだが、困ってるの俺だけ?
ググっても誰も文句言ってないな
273:デフォルトの名無しさん
20/03/05 12:50:46.42 WFS2X5DF.net
>>268
>>142 でオレが文句を言ったが。
結局、一生5.22 を使い続けることにした。
274:デフォルトの名無しさん
20/03/05 14:56:24.55 NI6SkVuR.net
新しめのバージョン追ってる人はもう大半がactive perl捨ててstrawberry perlに移住したんじゃね
275:デフォルトの名無しさん
20/03/05 20:36:47 HImUaDHG.net
つい最近ppm使ったような
276:デフォルトの名無しさん
20/03/06 00:11:57 Wxp9Lzi1.net
strawberry perl なら cpan インストーラ、もう少しまともに動くのか。
明日、試してみる。
277:デフォルトの名無しさん
20/03/06 08:49:13 20KFjtwq.net
URLリンク(community.activestate.com)
5.26以前なら、ppmは使えないことはないけど、「保守はしない」ということだね。
278:デフォルトの名無しさん
20/03/06 09:25:47 7w4EZP5c.net
>>268
WSLでLinuxそっくり環境の中で普通のPerl使うかOS丸ごとLinuxにしてしまえば悩むことはなくなる。
279:デフォルトの名無しさん
20/03/06 13:37:53 OG/dFmOQ.net
macという手も
280:デフォルトの名無しさん
20/03/06 13:53:08 YSIXaKl0.net
visual studioインストールして普通にビルドすれば?
Makefileちょっと変更してnmake叩くだけだよ
281:デフォルトの名無しさん
20/03/06 18:40:33.19 JNQJmFQ4.net
>>274
MSYS2のがええで。
WSLは別物。
282:デフォルトの名無しさん
20/03/06 19:44:20.68 /FgvtXba.net
もう Perl6 でラクになれよ
283:デフォルトの名無しさん
20/03/06 23:38:47.92 nrb1VEEF.net
strawberry perl をインストールしたけど、いろんなモジュールをまたゼロから入れなきゃいけないと思ったらヤル気なくなってとりあえず active perl に戻した。
次は active perl のディレクトリを調べて同じモジュールを strawberry perl にインストールするバッチファイル作んないと。
284:デフォルトの名無しさん
20/03/07 06:00:24.07 Q6Yn3ttH.net
>>279
そんな時代はもう終わってるぞ。
Windows版のPerlは使わない。WSLを使ってLinux版を使う
Perlのバージョンはplenvで管理し、いろんなモジュールは(俺が知っているときと変わってないなら)
cpanやcpanmあたりでプロジェクトごとに簡単にインストールする。
ソースコードをgitで管理してるとして、新しくプロジェクトに参加するなら、
plenvでperl入れて、git cloneしてモジュール入れるコマンド(cpanm?忘れたw)を叩くだけだ。
285:デフォルトの名無しさん
20/03/07 08:04:07.87 GE9TyCQC.net
で、どうやってwindowsから動かすんだ?
286:デフォルトの名無しさん
20/03/07 13:07:09 nxiojuUK.net
>>280
クリップボード使えない
アイコンダブルクリックで実行できない
オタクは自分の世界に閉じこもってシコシコやってろよバカ
287:デフォルトの名無しさん
20/03/07 18:28:23 jD3HBeI4.net
> クリップボード使えない
使える
> アイコンダブルクリックで実行できない
CLIでアイコンって何言ってるの?
288:デフォルトの名無しさん
20/03/08 01:15:11.77 DyTj6VlC.net
perlのスクリプトファイルが関連付けされてたらアイコンダブルクリックで実行できるんだけどね
289:デフォルトの名無しさん
20/03/08 01:34:31 rEU5WeDw.net
>>283
>>284
流れ的にWSLの話やぞ?
290:デフォルトの名無しさん
20/03/08 01:44:53 DyTj6VlC.net
>>285
勝手に流れ変えるなよw
>>280がwslって言いだしてwslじゃ不便もあるって話だろ?
291:デフォルトの名無しさん
20/03/08 05:59:45 P20sq25k.net
>>284
何が不便なのかわからない。
関連付けの設定をするのが面倒な ”だけ” か?
ならやっぱりWSLでいいだろ。
関連付けの設定方法がわからないんですは
プログラマやめれのレベルだからな
292:デフォルトの名無しさん
20/03/08 06:00:52 P20sq25k.net
>>286
だからWSLでクリップボード使えるし、
関連付け設定を自分でやればWSL上のスクリプトを動かせる
293:デフォルトの名無しさん
20/03/08 07:36:51.62 nyv63FmX.net
explorerから.plファイルを起動すると、カレントディレクトリのファイルに対して処理、
みたいなこともできる?
294:デフォルトの名無しさん
20/03/08 08:33:18.06 P20sq25k.net
できるだろうな。plファイルだけでできるかもしれんし、
簡単なラッパースクリプトが必要になるかもしれんが大した問題じゃない。
Windows特有の問題にぶち当たることのほうが大変だから
295:デフォルトの名無しさん
20/03/08 08:55:09 nyv63FmX.net
readdir は何の文字コードで返ってくるの?
296:デフォルトの名無しさん
20/03/08 09:09:34.43 P20sq25k.net
OSは文字コード変換なんてことは行わない。
そんなものが行われるとしたら、それはお前が
使ってる言語とライブラリがやってる。
ようはお前はPerlを知らんのだ
297:デフォルトの名無しさん
20/03/08 09:19:17.63 nyv63FmX.net
答えられなくなるとキレるっていうw
cygwinとの互換性で困った問題いろいろは起きそうな感じだな
win8.1のサポートが終わった頃に思い出したら使ってみよう
298:デフォルトの名無しさん
20/03/08 09:27:52.75 P20sq25k.net
知らないやつほど他人のせいにする。
299:デフォルトの名無しさん
20/03/08 11:23:41 2fZbJlty.net
全部 emacs の中でやれば実質的にクリップボードは使えるし
実行も emacs の中でできる。マウスを使わずにキーボードだけで
すべて完結するが
300:デフォルトの名無しさん
20/03/08 22:14:47 z5WqTo29.net
windows使っててマウス使わないなんてありえん
301:デフォルトの名無しさん
20/03/08 22:39:04 gXtOMf8r.net
WSLってクリップボード使えるの?
use Clipboardでいける?
今はどうなってるか知らんが知らんがcygwinは無理だったんで/dev/clipboard読み書きするラッパー書いてたな
302:デフォルトの名無しさん
20/03/09 14:08:24.97 OgnIoX0o.net
>>296
マウスを使うのは権利であって義務ではないからなあ
ゆっくりとプログラミングをしたいのてあればどうぞご自由に
303:デフォルトの名無しさん
20/03/09 14:59:05 eblk0ZGB.net
さすがにキモイw
304:デフォルトの名無しさん
20/03/09 19:42:54.58 aF4+X/eL.net
>>288
これマジ?
エクスプローラからWSL上のperlファイルが見えてダブルクリックでWSLのperlで実行できんの?
305:デフォルトの名無しさん
20/03/09 21:51:11.95 1P2a1qpP.net
無理でしょ
それぞれに違うファイルシステムになってる
参照はできるようになってるというだけ
windows上の/usr/binって何だよ
306:デフォルトの名無しさん
20/03/09 22:34:27 aF4+X/eL.net
だよね
ちょっと信じて損した
307:デフォルトの名無しさん
20/03/09 23:01:39.93 d25zd4do.net
アホが見~る~ブタのケ~ツ~
308:デフォルトの名無しさん
20/03/10 01:54:02 Lezaa9m7.net
>>300
> エクスプローラからWSL上のperlファイルが見えて
普通ほぼすべてのファイルが見える
見えないのは/procとか/sysとか特殊なものだけ
> ダブルクリックでWSLのperlで実行できんの?
ファイルが見えてるんだから当然ダブルクリックできる。
もちろん関連付けは必要だがな。
それをWSL内で実行するのもWSLを使わずに実行するのも
関連付けの設定次第
309:デフォルトの名無しさん
20/03/10 01:55:43 Lezaa9m7.net
ググれば普通に見つかる
Windows Subsystem for Linux でダブルクリックで sh ファイルを実行する
URLリンク(dskjal.com)
Windows 10のbashのコマンドをGUIから起動させるには?
URLリンク(kako.com)
310:デフォルトの名無しさん
20/03/10 02:35:30.61 iN6KW/Ct.net
WSL2は、Windows側のファイル属性とかちゃんとふつうにあつかえるようになったんか?
WSL1のときは完全別物で、全然ダメやったが。
311:デフォルトの名無しさん
20/03/10 03:13:18 8QcyJ6p0.net
WSL1もWSL2も同じ。Linuxのファイル属性として正しく扱えるようになった。
Windowsのファイル属性をLinuxアプリが正しく扱えることはありえないから
逆の発想でLinuxとして正しく扱える方向に舵をとった。
312:Linuxアプリから正しく扱えないなら意味ないでしょ?
313:デフォルトの名無しさん
20/03/10 03:17:19 8QcyJ6p0.net
そもそもファイル属性はWindowsの方が高機能で
Linuxは、いろいろ拡張入れたら別だが
基本のファイル属性はUNIX初期の頃から変わって無くてかなり貧弱。
Windowsの高機能なファイル属性をそのLinuxにマッピングすることは出来ない。
逆にLinuxのファイル属性を全てWindows側に持たせることは可能
こうすることで全てのWindowsのファイルをLinuxで正しく扱えるようになった。
314:デフォルトの名無しさん
20/03/10 04:18:19.87 /bE8vLVb.net
漏れは、Ruby のバージョンマネージャー、rbenv をWSL, Ubuntu 18.04 に入れた。
これで、Linux 側に、好きなバージョンのRubyを入れられる
Windows 10 側には、VSCode を入れて、拡張機能のRemote WSL を入れる
これが基本!
315:デフォルトの名無しさん
20/03/10 04:23:54 qHN38Ccx.net
windowsでも開発できそうだなー
316:デフォルトの名無しさん
20/03/10 12:00:40 tTiB+rjP.net
DBIの動作についてお聞きしたいことがあります。
my $dbh = DBI->connect(接続情報);
my $sql = 'パラメータ付きクエリ';
my $ret1 = $dbh->selectrow_arrayref($sql, undef, 'A');
my $ret2 = $dbh->selectrow_arrayref($sql, undef, 'B');
my $sth = $dbh->prepare($sql);
my $ret3 = $dbh->selectrow_arrayref($sth, undef, 'A');
my $ret4 = $dbh->selectrow_arrayref($sth, undef, 'B');
このようなコードで$ret1と$ret2には'A', 'B'それぞれのパラメータを使用した結果が入るのですが、$ret3は$ret4と同じ'B'を使用した結果になってしまいます。
selectrow_arrayrefに同じステートメントハンドラを渡して複数回実行すると、リファレンス実体が最後に実行した結果で上書きされてしまうような雰囲気でした。
Perl 5.10.1 & DBI 1.609の環境と、Perl 5.16.3 & DBI 1.642の環境で試してどちらも同じ結果になったのですが、こういうものなのでしょうか…。
317:デフォルトの名無しさん
20/03/10 13:47:10 nryxofxk.net
>>305
アホか?
バッチファイルでwsl起動してその中で実行してるだけじゃん
レジストリ編集の方もパワーシェルに引数渡してwsl起動してるだけだ
これじゃあcygwin使ってやるのとなんら変わっとらん
318:デフォルトの名無しさん
20/03/10 14:03:39.54 0m+9gBGV.net
>>312
あのさ、おまえ頭悪いよ?
目的を一番ラクに実現する方法が
目の前にあるというのにそれを使わないのはアホだろ
ネイティブのPerlを使えばいい
今更PerlのWindows移植版なんかいらんよ。
Windows移植版なんてcygwinと何も変わらん
319:デフォルトの名無しさん
20/03/10 15:17:13.04 qHN38Ccx.net
>>311
試してみたけど確かに同じ配列が変えるね
オライリーのDBI本見たらそう書いてあった
selectrow_arrayって方を使ってリストコンテキストで受けるといいみたい
320:デフォルトの名無しさん
20/03/10 15:22:16 tTiB+rjP.net
>>314
やはりそうですか…
selectrow_hashrefを使うと$sqlでも$sthでも'A', 'B'それぞれの結果が返るので、selectrow_arrayrefだけ期待と違う動作をしている気がします。(バグ?)
321:デフォルトの名無しさん
20/03/10 15:28:19 qHN38Ccx.net
>>315
バグというか仕様だと思う
作者の書いたオライリー本にも書いてあったから意図的なはず
今更変更できないからこのままになってるんだろうね
322:デフォルトの名無しさん
20/03/10 15:39:16 tTiB+rjP.net
>>316
なるほど。
それでは今後、selectrow_arrayrefは注意して使うようにしたいと思います。
ありがとうございました。
323:デフォルトの名無しさん
20/03/10 15:58:50 SCW8qISh.net
>>313
へー
バッチファイル作ったりトリッキーな関連付けまでしないと動かないのが一番楽な方法ねー
cygwinで全く同じことができるしwin移植版perlならそのまま実行できちゃうんだけどね
ところでエクスプローラからどうやったらwsl内のファイルが見えるんだい?
324:デフォルトの名無しさん
20/03/10 16:50:47.58 lAAHr9o2.net
>>311
selectrow_arrayref は最初の1行しか返さないからということはない?
325:デフォルトの名無しさん
20/03/10 16:52:18.68 lAAHr9o2.net
ぐえ。リロード忘れたらとっくに話が終わっていて間に沢山の書き込みが
326:デフォルトの名無しさん
20/03/10 20:10:42.81 UzsfbeET.net
BOOKOFFに100円で売っていたPerl/CGI辞典によると、
selectrow_array:先頭行
selectcol_arrayref:最初のフィールド
selectall_arrayref:すべて
327:デフォルトの名無しさん
20/03/10 23:18:16.01 gGR9Cwad.net
>>318
Windows版Perl使って
Windowsで動かないーってやるより、
安心して使えるバッチファイルを使ったほうがシンプル
328:デフォルトの名無しさん
20/03/10 23:32:00 Z32YaYnf.net
いやいやw
WSLならバッチファイルなんか使わなくてもエクスプローラーからダブルクリックでWSL上のスクリプトを直接実行できるんでしょ?
やり方教えてよ
windows版perlならバッチファイルなんか使わなくてももちろん出来るからねw
それとwindows版perlだと何が動かないのかな~?
329:デフォルトの名無しさん
20/03/10 23:37:16 9jB6JpZx.net
バッチファイルとかっていったい何歳の爺さんなんだよ
330:デフォルトの名無しさん
20/03/10 23:42:56.03 tP5E2IWo.net
>>323
普通に、wsl.exe+スクリプトファイルのショートカットを作るだけ
331:デフォルトの名無しさん
20/03/10 23:51:09.20 Z32YaYnf.net
>>325
やってることはバッチファイルと同じじゃん
332:デフォルトの名無しさん
20/03/11 00:05:26.96 5FVYO8f6.net
Ruby でも、MSYS2/MINGW は、日本語でバグル・日本語入力できない。
一方、WSL は、日本語でバグらない!
WSL が出たから、次第に、Windows 版のRuby Installer は、使われなくなっていく
それに、VSCode の拡張機能、Remote WSL が出たから、
Windows 10 では、Ubuntu 18.04 が標準になる
プロジェクトも、Windows 側のC: ドライブじゃなくても、
Linux 側に置いて、Remote WSL でアクセスできるので、本番環境に近い
Windows/Linux のファイルのアクセス権限の違いに、困らない!
333:デフォルトの名無しさん
20/03/11 00:38:23.60 3jaBr8Hp.net
ルビーならそうだろうねw
334:デフォルトの名無しさん
20/03/11 00:53:43 FWSDJbu9.net
>>326
それで実現できるだろ
しかも完全にちゃんと動くPerlで
335:デフォルトの名無しさん
20/03/11 01:05:10.04 zcf0ykb5.net
ハア?
WSLはwindows版perlより楽できるんじゃないの?
なんでわざわざそんな面倒なことすんの?
それとエクスプローラからWSLのファイルが見えてそれをダブルクリックで実行できるって話はどうなったの?
336:デフォルトの名無しさん
20/03/11 01:17:13 M00P+dL8.net
WSLはあくまでLinux的システムなアプリであって、Windows側とはやっぱり高い壁がある、と思っとくほうが安全やろ。
337:327
20/03/11 01:47:27 EKM5ywjJ.net
Ruby なら、WSL から、1-liner で、
Rubyで作られた遅いウェブサーバー、WEBrick が起動する
index.html が、Windows 側のC: ドライブにあるとすると、
cd /mnt/c/~ で、Windows側へ移動して、
または、index.html が、linux 側のドライブにあるとすると、cd で、そこへ移動して、
ruby -run -e httpd . -p 8080
これで、Windows側のブラウザで見れる
URLリンク(localhost:8080)
つまり、プロジェクトが、Windows/Linux側のどちらにあっても、Windows側のブラウザで見れる
338:デフォルトの名無しさん
20/03/11 02:27:57 M00P+dL8.net
Webサーバーを経由すれば、ファイルが地球の裏側にあってもふつうに見れるなー。w
339:327
20/03/11 04:58:50 EKM5ywjJ.net
Linux 側のフォルダ内を公開した、Linux側のサーバーに対して、
Windows 側のブラウザのlocalhost で見れるんだよ!!
340:デフォルトの名無しさん
20/03/11 09:27:01 AZbrV/6V.net
>>319
>>321
返信ありがとうございます。
すみませんが、selectrow_arrayrefが最初の1行しか返さないということは知っています。
そうではなく、結果(リファレンス)を変数に入れてから再度同じステートメントハンドラでselectrow_arrayrefを使用すると、リファレンス実体の方が書き換わってしまうので、1回目の結果が失われてしまうということを言いたかったのですが…。
サンプルとして'パラメータ付きクエリ'と書きましたが、複数行を返さない単純な「SELECT ?」でも再現します。
341:デフォルトの名無しさん
20/03/11 09:44:35.82 LRW51TqV.net
なるほど。
342:デフォルトの名無しさん
20/03/11 20:46:52 M00P+dL8.net
>>335
同じ変数を使い回しまくって、パフォーマンスを落とさないためやないの?
GCのないPerlならたいしてかわらんやろけど。
343:デフォルトの名無しさん
20/03/11 21:49:34.54 gWo/n1eo.net
>332
ウェブサーバーならbusyboxでよくね?w
数MBのメモリで動作する
344:デフォルトの名無しさん
20/03/11 23:17:22.77 k/ve+D91.net
>>335
クエリ結果を保持してるのはステートメントハンドラオブジェクトの方でパフォーマンス優先のためにその内部変数のリファリンスを返すのが*_arrayrefって考えればいいかな
んでselectrow_arrayrefの第1引数に文字列を渡したときは内部で毎回prepareされるので後から実行しても書き変わらないと
345:デフォルトの名無しさん
20/03/12 01:40:41 i54BE1kH.net
>>304
よくもこんな大嘘をw
346:デフォルトの名無しさん
20/03/12 01:44:08 NTVlQfwP.net
第一引数に$sth渡せるんだって思ったね
文字列しか渡したことないし
Perlはいまだに知らないことがある
347:デフォルトの名無しさん
20/03/12 09:49:43 05BordF4.net
>>339
そうですね。
DBI.pmで第1引数がリファレンス(ステートメントハンドラ)ならそのまま使用、そうでなければprepareしているところまではわかったのですが、その後の流れは同じのようでしたし、Driver.xstまで解析するのはやめておきました(^^;)
348:デフォルトの名無しさん
20/03/12 16:51:12.87 XWa7Kkjq.net
>>340
そういう時は
How dare you?
と言う。
349:デフォルトの名無しさん
20/03/12 16:52:32.93 XWa7Kkjq.net
あ、記号まつがえた。
350:デフォルトの名無しさん
20/03/12 17:18:02.38 +5N6GCV3.net
関連付けの仕組みを知らない人がいるのかな?
単にレジストリに、この拡張子はこのコマンドで実行するって書くだけなんだけど
351:デフォルトの名無しさん
20/03/12 17:18:57.67 +5N6GCV3.net
つまりcmd。exeから実行できるものは全て
同じやり方で関連付け作れるってことね
352:デフォルトの名無しさん
20/03/12 18:12:19 XQbCK6u3.net
それはただの起動のしくみでしかない。
実際の動作は高い壁で分離されてるといって過言でないものをいっしょくたにはできまい。
353:デフォルトの名無しさん
20/03/12 18:48:34 U4j5Oz8o.net
>>347
理由は?
354:デフォルトの名無しさん
20/03/12 18:49:23 U4j5Oz8o.net
そもそもダブルクリックできるなんて
起動の仕組みなんだから、起動の仕組みでしか無いと言われても
その話をしてるんですよとしか言いようがないがw
355:デフォルトの名無しさん
20/03/12 19:40:41 kpO7RyNn.net
だからエクスプローラからWSLにあるファイル見る方法教えてくれってw
356:デフォルトの名無しさん
20/03/12 19:47:21 IWxDU6vM.net
それは見れる \\wsl$
エクスプローラからしか見れないのが問題
357:デフォルトの名無しさん
20/03/12 19:57:44 MY0SLzQz.net
グレタちゃんもアナルパールを使ってます
358:デフォルトの名無しさん
20/03/12 20:49:28 U4j5Oz8o.net
ダブルクリックてエクスプローラーの話じゃん
エクスプローラーから見れるなら、ダブルクリックして開ける。
その証拠にテキストファイルだって開けるだろ
359:デフォルトの名無しさん
20/03/12 22:39:56.96 MY0SLzQz.net
グレタちゃんに僕のパイソンを貸してあげたい
360:デフォルトの名無しさん
20/03/14 18:16:47.41 jx2yED/o.net
active perlのcryptのsaltにasciiでない文字を渡すと止まるんだけど何で?
361:デフォルトの名無しさん
20/03/14 19:34:39.97 RPa5riWU.net
WSLつかえ
362:デフォルトの名無しさん
20/03/14 22:58:59.61 eh0BX5+5.net
>>355
理由を聞いてどうするんや?
文字コードとかややこしいから、対応してないんやろ。
363:デフォルトの名無しさん
20/03/14 23:16:24 5TZ0Uf7y.net
分からんのなら黙ってろやチンカス
364:デフォルトの名無しさん
20/03/14 23:39:11.11 9VuyfYoc.net
暗号化って、base64 とかだろ。
ascii だけだろ
Ruby なら、こういうやつだろ
module SecureRandom
URLリンク(docs.ruby-lang.org)