CGI についての質問は板違いです。WEB プログラミング板でどうぞ。
CGI と Perl の区別がつかない人も WEB プログラミング板に行ってください。
(WEB プログラミング板: http://hibari.2ch.net/php/ )
回答する際はモダンな方法でお願いします
(例 jcode.plではなくEncodeモジュールを使った方法)
理由はもう2012年です。いい加減2000年以前の方法はやめましょう。
最新のPerlを使うほうがかっこいいです。
いつまで勉強しないつもりですか?
過去にとらわれるのはもうやめです。進歩しませんよ。
このスレでは(CGI 以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
スレ違いの質問にはスルーか、速やかな誘導をお願いします。
"The duct tape of the Internet" こと、Perl についての質問箱です。
"There's more than one way to do it" ということで、
Perl の奥深さについて皆で語り合い、追求してまいりましょう。
http://www.perl.org/get.html
● 2011/10/30 現在の最新版: 5.14.2
▼ 前スレ
Perlについての質問箱 49箱目
http://toro.2ch.net/test/read.cgi/tech/1319953460/
リンク集は >>2-3辺り
Perl 日本語処理の基礎の基礎 >>4辺り
探検
【モダン推奨】Perlについての質問箱 50箱目
■ このスレッドは過去ログ倉庫に格納されています
2012/01/21(土) 10:56:39.03
612デフォルトの名無しさん
2018/05/06(日) 12:36:15.67ID:Bse1bLkg >>611
え?困らんだろ。普通に $10 とか $11 とか書けば良いだけだし。
え?困らんだろ。普通に $10 とか $11 とか書けば良いだけだし。
613デフォルトの名無しさん
2018/05/06(日) 13:41:43.10ID:1K09Bg92 Perl のことだとは言ってないな。正規表現の話なら 9 までしか使えない方が多数派だ。Perl でさえ昔はそうだった。
まあ、そういう話なら $10 ではなく \10 と書くべきかもしれないが。
まあ、そういう話なら $10 ではなく \10 と書くべきかもしれないが。
614デフォルトの名無しさん
2018/05/06(日) 18:20:08.93ID:Bse1bLkg いやこのスレは「Perl についての質問箱」なわけで・・・
615デフォルトの名無しさん
2018/05/15(火) 01:25:39.67ID:bz5cqKe9 ユーザ定義関数のリファレンスを変数に代入しておき、そのリファレンス変数を
参照することによって関数を呼び出すことができます。たとえばこんな感じに。
sub s { $_[0]+1 }
$r = \&s;
print $r->(1)."\n";
$ perl usr.pl
2
それでは、popやshift、printなどの組み込み関数についても、リファレンスを変数に代入しておき、変数を参照することによって組み込み関数を呼び出すことができないか方法を探しています。
しかしCOREやCORE::GLOBAL名前空間を使ってできないか、ためしてみましたがうまくいきません。たとえば
$r = \CORE::print;
#print "$r\n";
print $r->(3.14, "\n");
を実行すると
Not a CODE reference at 〜.pl line 3.
となります。
$r = \CORE::GLOBAL::print;
#print "$r\n";
print $r->(3.14, "\n");
を実行しても
Not a CODE reference at 〜.pl line 3.
となってしまします。何かいい方法をご存知でしたら教えてくださいませ。
参照することによって関数を呼び出すことができます。たとえばこんな感じに。
sub s { $_[0]+1 }
$r = \&s;
print $r->(1)."\n";
$ perl usr.pl
2
それでは、popやshift、printなどの組み込み関数についても、リファレンスを変数に代入しておき、変数を参照することによって組み込み関数を呼び出すことができないか方法を探しています。
しかしCOREやCORE::GLOBAL名前空間を使ってできないか、ためしてみましたがうまくいきません。たとえば
$r = \CORE::print;
#print "$r\n";
print $r->(3.14, "\n");
を実行すると
Not a CODE reference at 〜.pl line 3.
となります。
$r = \CORE::GLOBAL::print;
#print "$r\n";
print $r->(3.14, "\n");
を実行しても
Not a CODE reference at 〜.pl line 3.
となってしまします。何かいい方法をご存知でしたら教えてくださいませ。
616デフォルトの名無しさん
2018/05/15(火) 07:18:03.41ID:PvTz5h0y ユーザー定義関数だと\&でやってるのにCOREは\&でやってないのはなんで?
617615
2018/05/15(火) 23:35:25.73ID:fP8R1+3G >>616
\&CORE もためしたけれど
$r = \&CORE::print;
print "$r\n";
$r->(3.14, "\n");
実行すると
Undefined subroutine &CORE::print called at 〜.pl line 3.
CODE(0x3919c)
となるのよ。
できなことなのかね…
\&CORE もためしたけれど
$r = \&CORE::print;
print "$r\n";
$r->(3.14, "\n");
実行すると
Undefined subroutine &CORE::print called at 〜.pl line 3.
CODE(0x3919c)
となるのよ。
できなことなのかね…
618デフォルトの名無しさん
2018/05/16(水) 00:12:42.68ID:uHifQt6J ttps://perldoc.perl.org/CORE.html
COREパッケージの関数もリファレンスを取得したり別名を定義することができる(pushなど)
ただし一部はベアワードでしか呼び出せない(printなど)
>組み込み関数についても、リファレンスを変数に代入しておき、変数を参照することによって組み込み関数を呼び出すことができないか
結論: ものによる
COREパッケージの関数もリファレンスを取得したり別名を定義することができる(pushなど)
ただし一部はベアワードでしか呼び出せない(printなど)
>組み込み関数についても、リファレンスを変数に代入しておき、変数を参照することによって組み込み関数を呼び出すことができないか
結論: ものによる
620デフォルトの名無しさん
2018/05/16(水) 04:01:32.31ID:5FKSCtlR 無名関数のリファレンスを使えば。
621615
2018/05/16(水) 07:58:19.21ID:lqxKAjJz >>620
そうすれば機能的に可能だけれど、
ユーザ関数のコードがワンクッション間に入るので
パーフォマンス的にみて、
できれば組み込み関数を直接、第一級関数としてクロージャーなどに
使えないか調べていた、ってわけですのよ
そうすれば機能的に可能だけれど、
ユーザ関数のコードがワンクッション間に入るので
パーフォマンス的にみて、
できれば組み込み関数を直接、第一級関数としてクロージャーなどに
使えないか調べていた、ってわけですのよ
622デフォルトの名無しさん
2018/05/20(日) 02:13:22.75ID:QVTwsNDJ https://log.perl.org/2018/05/goodbye-search-dot-cpan-dot-org.html
search.cpan.orgが6月に終了だと。
mcpan使ってねってことだけど、終焉を感じるなぁ…
search.cpan.orgが6月に終了だと。
mcpan使ってねってことだけど、終焉を感じるなぁ…
623デフォルトの名無しさん
2018/05/23(水) 19:29:13.97ID:Au5e7VGg 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
U85LY
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
U85LY
624デフォルトの名無しさん
2018/05/23(水) 21:28:50.98ID:/p8qS87L 意味もなく、関係ない変数を bless
625デフォルトの名無しさん
2018/05/24(木) 12:17:56.05ID:62mXzMMG bless
それは祝福
それは祝福
626デフォルトの名無しさん
2018/05/26(土) 02:04:34.60ID:NxLTutQ0 God bless you!
627デフォルトの名無しさん
2018/05/26(土) 06:15:15.44ID:qdFYQfps さすがにリファレンスですらない変数だと怒られた
でも、勝手に作った偽オブジェクトを食わせたりはできる
他の言語はそのへんの安全装置はどうなってるんだろう
でも、勝手に作った偽オブジェクトを食わせたりはできる
他の言語はそのへんの安全装置はどうなってるんだろう
628デフォルトの名無しさん
2018/05/26(土) 11:44:11.22ID:nibGH99w blessは、オブジェクトにパッケージを関連付けるだけだろ。
どんな「安全装置」が必要なのか?
ちなみに、RubyもJavaScriptも、動的に後からメソッドとか足し放題だな。
まあ、スクリプト言語としては残念でもないし当然。
どんな「安全装置」が必要なのか?
ちなみに、RubyもJavaScriptも、動的に後からメソッドとか足し放題だな。
まあ、スクリプト言語としては残念でもないし当然。
629デフォルトの名無しさん
2018/05/26(土) 11:59:50.95ID:qdFYQfps メソッドを足すのと、コンストラクタが生成してないものを使うのは全然違うだろ
630デフォルトの名無しさん
2018/05/26(土) 15:30:59.65ID:NxLTutQ0 Pod::PerldocJp という日本語 perldoc を cpanm 使ってインストールしてみたが、root でないとエラーが出て動かない(Linux 環境ね)。
$ perldocjp perldocjp
Error stat on '/tmp/.perldocjp/perldocjp.pod': そのようなファイルやディレクトリはありません at /usr/local/share/perl5/Pod/PerldocJp.pm line 78.
$
root になるとちゃんと出てくる。ただし sudo perldocjp perldocjp ではダメで、 sudo su - とかで root でログインした状態で perldocjp perldocjp とするとちゃんと動く。
実行時の環境変数 LANG は一般ユーザもroootも ja_JP.UTF-8 になっている。
これ Linux でインストールしてみてうまく行った人いる?
Pod::PerldocJpとperldocjpコマンドについての日本語での説明はここね。
http://search.cpan.org/~ishigaki/Pod-PerldocJp-0.18/perldocjp
$ perldocjp perldocjp
Error stat on '/tmp/.perldocjp/perldocjp.pod': そのようなファイルやディレクトリはありません at /usr/local/share/perl5/Pod/PerldocJp.pm line 78.
$
root になるとちゃんと出てくる。ただし sudo perldocjp perldocjp ではダメで、 sudo su - とかで root でログインした状態で perldocjp perldocjp とするとちゃんと動く。
実行時の環境変数 LANG は一般ユーザもroootも ja_JP.UTF-8 になっている。
これ Linux でインストールしてみてうまく行った人いる?
Pod::PerldocJpとperldocjpコマンドについての日本語での説明はここね。
http://search.cpan.org/~ishigaki/Pod-PerldocJp-0.18/perldocjp
631デフォルトの名無しさん
2018/06/03(日) 15:51:19.96ID:F3uiBXX1 5.28まだ?
632デフォルトの名無しさん
2018/06/08(金) 21:09:03.47ID:JtDK6GNM 例えばファイル名を入れて関数を呼んで、
処理結果を入れた配列なりのリファレンスを戻り値で返す
別のファイル名で同じ関数を呼んで、結果のリファレンスを別の変数で受ける
それで普通に動くんだけど、
なぜ同じ関数のmyで宣言した変数が違うオブジェクトを指しているのか、
なぜ古い方は消えてしまわないのか、
そもそもいつまで残ってるのか、
みたいな部分が何となく不安
参照カウントの仕組みを理解しても、やっぱり不安
処理結果を入れた配列なりのリファレンスを戻り値で返す
別のファイル名で同じ関数を呼んで、結果のリファレンスを別の変数で受ける
それで普通に動くんだけど、
なぜ同じ関数のmyで宣言した変数が違うオブジェクトを指しているのか、
なぜ古い方は消えてしまわないのか、
そもそもいつまで残ってるのか、
みたいな部分が何となく不安
参照カウントの仕組みを理解しても、やっぱり不安
633615
2018/06/09(土) 01:53:50.05ID:dh6JCgcP634デフォルトの名無しさん
2018/06/09(土) 05:26:23.38ID:uYb8xFM5 大丈夫。参照されなくなったやつは自動で消える。
635デフォルトの名無しさん
2018/06/09(土) 08:22:42.99ID:VVS81UdD 消えないことに対する不安じゃないんだよな
肉体は既に滅びているけど、どこかにある名簿にまだ名前があるお陰で、
辛うじて魂だけまだ現世に留まってる感じ
リファレンスを戻り値で受けるんじゃなくて、
自分で宣言した変数のリファレンスを引数で渡して、
そこに入れて貰う方式なら安心できる
意味は同じなんだけど
肉体は既に滅びているけど、どこかにある名簿にまだ名前があるお陰で、
辛うじて魂だけまだ現世に留まってる感じ
リファレンスを戻り値で受けるんじゃなくて、
自分で宣言した変数のリファレンスを引数で渡して、
そこに入れて貰う方式なら安心できる
意味は同じなんだけど
636デフォルトの名無しさん
2018/06/09(土) 08:45:10.02ID:ngqKHOqq strdupの仕様の気持ち悪さ
無名関数のリファレンスの気持ち悪さ
みたいなやつなら、俺も感じる
無名関数のリファレンスの気持ち悪さ
みたいなやつなら、俺も感じる
637デフォルトの名無しさん
2018/06/09(土) 17:49:06.89ID:uYb8xFM5 うーん。しかし、そういうのは言語を実現する環境の実装にバグがあるかどうかの問題だよなあ。
そのバグを気にするならどんな言語も使えなくなるのでは?コンパイルする言語でもバグってて
変なコード作られたら終わりだしなあ。
そのバグを気にするならどんな言語も使えなくなるのでは?コンパイルする言語でもバグってて
変なコード作られたら終わりだしなあ。
638デフォルトの名無しさん
2018/06/09(土) 19:13:31.22ID:sS73Mbwb 信頼性の話じゃないだろ。
言ってしまえば、リファレンスとかオブジェクトとか、なんかふわふわしてて、なんとなく納得がいかん、てだけ。
感覚的には慣れの話でしかないと思うけど、どうしてもというなら、C++でもやってみればいいのでは。
newとかヒープとかを把握できれば、実はぜんぜんふわふわしてないことが理解できるはず。
余計に混乱するかもしらんけども。w
言ってしまえば、リファレンスとかオブジェクトとか、なんかふわふわしてて、なんとなく納得がいかん、てだけ。
感覚的には慣れの話でしかないと思うけど、どうしてもというなら、C++でもやってみればいいのでは。
newとかヒープとかを把握できれば、実はぜんぜんふわふわしてないことが理解できるはず。
余計に混乱するかもしらんけども。w
639デフォルトの名無しさん
2018/06/09(土) 19:58:15.52ID:VVS81UdD C言語で関数内にstatic変数を持ってて、
そこに何か格納してそのポインタを返す、みたいな仕組みなら安心する
何回呼んでも同じポインタが返ってきて、前回の内容は保存されていない
だから必要なら呼んだ側の責任で保存しとかないといけない
家がない子はいない
perlのsub内のmy変数のリファレンスも見かけはそれと似てるけど、
実際の動作が全然違って、実体は動的に生成される
じゃあC言語のauto変数みたいなもんかというと、関数が終わってもスコープを抜けない
かといってずっと存在する訳でもなくて「要らなくなったら消える」というルールが人智を超える
うまく動くように出来てるんだから、怖がらずに飛んでみろ的な
そこに何か格納してそのポインタを返す、みたいな仕組みなら安心する
何回呼んでも同じポインタが返ってきて、前回の内容は保存されていない
だから必要なら呼んだ側の責任で保存しとかないといけない
家がない子はいない
perlのsub内のmy変数のリファレンスも見かけはそれと似てるけど、
実際の動作が全然違って、実体は動的に生成される
じゃあC言語のauto変数みたいなもんかというと、関数が終わってもスコープを抜けない
かといってずっと存在する訳でもなくて「要らなくなったら消える」というルールが人智を超える
うまく動くように出来てるんだから、怖がらずに飛んでみろ的な
640デフォルトの名無しさん
2018/06/09(土) 20:16:55.67ID:vLAdQtfD もはや信じるか否かという宗教的問題か?
641デフォルトの名無しさん
2018/06/09(土) 20:29:44.29ID:VVS81UdD 変数の寿命なんて本来はコードから静的に判るものだったのに、
それを動的にする代わりに管理を手放して機械に任せることにした
それはなかなかのパラダイムシフトである筈なのに、
オブジェクト指向のデータ隠蔽とセットで隠蔽されてあんまり気にしてない
コンストラクタさんに任せとけば全部うまくやってくれるから
それを動的にする代わりに管理を手放して機械に任せることにした
それはなかなかのパラダイムシフトである筈なのに、
オブジェクト指向のデータ隠蔽とセットで隠蔽されてあんまり気にしてない
コンストラクタさんに任せとけば全部うまくやってくれるから
642デフォルトの名無しさん
2018/06/10(日) 02:37:37.78ID:3IVbSRGy >>639
人智は超えないだろ…
人智は超えないだろ…
643デフォルトの名無しさん
2018/06/10(日) 05:50:21.80ID:eOmqsLdO >>639
それだとマルチスレッドの時に困るわけだな。呼び出し側でバッファ作ってそのポインタを渡すという手もあるが、
量が動的に変化する場合はそれだけでは実現できない。で、malloc() 使うわけだが、そうするとどこかで必ず
free() する必要が出てくる。これが煩わしいので自動でなんとかならないかと色々やってるのが今時の言語。
とはいっても Perl は30年以上前に作られた言語だけどね。
それだとマルチスレッドの時に困るわけだな。呼び出し側でバッファ作ってそのポインタを渡すという手もあるが、
量が動的に変化する場合はそれだけでは実現できない。で、malloc() 使うわけだが、そうするとどこかで必ず
free() する必要が出てくる。これが煩わしいので自動でなんとかならないかと色々やってるのが今時の言語。
とはいっても Perl は30年以上前に作られた言語だけどね。
644デフォルトの名無しさん
2018/06/10(日) 18:45:28.50ID:vU7l4ry5 Perl++
645デフォルトの名無しさん
2018/06/10(日) 18:52:31.32ID:7xflXXzg 個人環境をMariaDBに代えてみたけど
DBD::MariaDBがgithubにしかなくてMySQLに戻したわ(´・ω・`)
こういうとこ困るなー枯れてると
DBD::MariaDBがgithubにしかなくてMySQLに戻したわ(´・ω・`)
こういうとこ困るなー枯れてると
646デフォルトの名無しさん
2018/06/10(日) 23:05:19.73ID:A0irmCxf MySQL用で動きそうなもんだが。
実際、数年前だけどRubyでは使えた。
実際、数年前だけどRubyでは使えた。
647デフォルトの名無しさん
2018/06/11(月) 00:28:21.09ID:giD/kjqV それは枯れてないのでは
648デフォルトの名無しさん
2018/06/11(月) 13:01:10.20ID:FLjqN/A3 枯れてるって、不具合とか掘り尽くされて安定してるって言ういい意味と
動きが無いって言う悪い意味の両面がある気が
動きが無いって言う悪い意味の両面がある気が
649デフォルトの名無しさん
2018/06/11(月) 13:04:00.52ID:FLjqN/A3 >>646
my.conf的な(my.confではない)、恐らくMySQLにあってまりあDBに無いファイル読みにいってこける。
たぶん簡単に修正できるけど、CPAN取得ファイルは弄りたくないから様子見にしたわ
my.conf的な(my.confではない)、恐らくMySQLにあってまりあDBに無いファイル読みにいってこける。
たぶん簡単に修正できるけど、CPAN取得ファイルは弄りたくないから様子見にしたわ
650デフォルトの名無しさん
2018/06/11(月) 17:12:02.09ID:ah84zYcK651デフォルトの名無しさん
2018/06/11(月) 17:21:23.85ID:FLjqN/A3652デフォルトの名無しさん
2018/06/11(月) 19:02:34.25ID:HvQh9O78 不具合が枯れたなら分かるけど、動きがないはよくわからん。
ユーザー数は関係ないってこと?C言語はどっち?
ユーザー数は関係ないってこと?C言語はどっち?
653デフォルトの名無しさん
2018/06/11(月) 19:30:59.90ID:giD/kjqV %cat = (%hash1, %hash2);
みたいにするとハッシュが結合できる
keys %cat でkeyの配列が取得できる
でも、keys (%hash1, %hash2)
とすると怒られる
keys {%hash1, %hash2}
ならいけるけど、5.12では通らない
どうすれば
みたいにするとハッシュが結合できる
keys %cat でkeyの配列が取得できる
でも、keys (%hash1, %hash2)
とすると怒られる
keys {%hash1, %hash2}
ならいけるけど、5.12では通らない
どうすれば
654デフォルトの名無しさん
2018/06/11(月) 21:05:27.50ID:HvQh9O78 (keys %hash1, keys %hash2)かなあ
655デフォルトの名無しさん
2018/06/11(月) 21:25:55.72ID:C5cAV0Rs それだけだと同じキーがあった場合に2つ出て来るのでもう一捻り必要ということになるんだろうな。
こうかねえ?
keys map { $_ => 1 } keys %hash1, keys %hash2
こうかねえ?
keys map { $_ => 1 } keys %hash1, keys %hash2
656デフォルトの名無しさん
2018/06/11(月) 21:27:28.65ID:bgvsbZyV >>653
$cat a.pl
use strict;
my %h0 = ( a => 1, b => 2);
my %h1 = ( b => 3, c => 4);
print( keys( %{ +{ %h0 , %h1 }}),"\n");
$perl a.pl
acb
$
$# できるといえばできるけど、君がやってるやり方をおすすめするよ。その方が余計なバグを防止できる。
$cat a.pl
use strict;
my %h0 = ( a => 1, b => 2);
my %h1 = ( b => 3, c => 4);
print( keys( %{ +{ %h0 , %h1 }}),"\n");
$perl a.pl
acb
$
$# できるといえばできるけど、君がやってるやり方をおすすめするよ。その方が余計なバグを防止できる。
657デフォルトの名無しさん
2018/06/11(月) 21:37:24.11ID:giD/kjqV 怒られる方法が何故悪いのかがよく判らんのだよな
普通に無名のハッシュになるんじゃないのかと思うんだけど、
> Type of argument to keys on reference must be unblessed hashref or arrayref
hashでもarrayでもない何かのリファレンスになってる?
普通に無名のハッシュになるんじゃないのかと思うんだけど、
> Type of argument to keys on reference must be unblessed hashref or arrayref
hashでもarrayでもない何かのリファレンスになってる?
658デフォルトの名無しさん
2018/06/11(月) 21:46:36.09ID:C5cAV0Rs {}で括ってるからhashrefと思ったとか
659デフォルトの名無しさん
2018/06/11(月) 23:58:04.20ID:kxBy2s6A keys()が引数にリファレンスをとれるようになったのは最近(でもないけど)だから、曽野せいなんでは。
>>657
>>657
660デフォルトの名無しさん
2018/06/11(月) 23:59:00.05ID:kxBy2s6A >>656は、わざわざデリファレンスしてるし。
661デフォルトの名無しさん
2018/06/12(火) 00:01:02.77ID:DCSlzX2w %hash1 = (a => 1, b => 2);
%hash2 = (c => 3, d => 4);
$ref = (%hash1, %hash2);
print $ref;
さて、何が表示されるでしょう?
%hash2 = (c => 3, d => 4);
$ref = (%hash1, %hash2);
print $ref;
さて、何が表示されるでしょう?
662デフォルトの名無しさん
2018/06/12(火) 02:21:03.71ID:zyhS8Ljg perl -e "use Data::Dumper; %hash1 = (a => 1, b => 2); %hash2 = (c => 3, d => 4); $ref = (\%hash1, \%hash2); print Dumper($ref);"
663656
2018/06/12(火) 13:02:00.90ID:0nDO7HX7 >>660
つっこみありがとう。もう長いこと Perl 使ってるからね、そこはデリファレンスしたいんだよ。
そもそも Perl4 にはリファレンスが無かったんだ。
C でも関数ポインタ使うときは (*p)() みたいな書き方してるよ。
つっこみありがとう。もう長いこと Perl 使ってるからね、そこはデリファレンスしたいんだよ。
そもそも Perl4 にはリファレンスが無かったんだ。
C でも関数ポインタ使うときは (*p)() みたいな書き方してるよ。
664デフォルトの名無しさん
2018/06/13(水) 02:19:57.94ID:mK+NhzCY >>661
2/8 と出た。何が出てるんだこれ?
2/8 と出た。何が出てるんだこれ?
665デフォルトの名無しさん
2018/06/13(水) 06:32:37.33ID:a9+2+9qX >>661
通常はそこはリスト値に展開されて %hash2 の要素のどれかが全体のスカラ値になるはずだけど、そうなってないね。
その仕様は公式ドキュメントのどこに書かれてるの?
通常の評価をしてもらうにはどう書けばいいの?
通常はそこはリスト値に展開されて %hash2 の要素のどれかが全体のスカラ値になるはずだけど、そうなってないね。
その仕様は公式ドキュメントのどこに書かれてるの?
通常の評価をしてもらうにはどう書けばいいの?
666デフォルトの名無しさん
2018/06/13(水) 07:40:41.18ID:3GuASBgR667デフォルトの名無しさん
2018/06/13(水) 10:44:03.43ID:a9+2+9qX ありがとう。perldata は読んでたけど理解できてなかった。
668デフォルトの名無しさん
2018/06/15(金) 22:18:58.35ID:Cep0TxDe 正規表現のマッチ結果って、どこかのデフォルト変数に入ってないの?
($match1, $match2) = ($1, $2);
とやる代わりに、
($match1, $match2) = @_;
みたいにやりたい
($match1, $match2) = ($1, $2);
とやる代わりに、
($match1, $match2) = @_;
みたいにやりたい
669デフォルトの名無しさん
2018/06/15(金) 22:34:53.18ID:+TY+tyj1 リストコンテキストで評価すれば$1とか使わず代入できる
($hours, $minutes, $second) = ($time =~ /(\d\d):(\d\d):(\d\d)/);
ttp://perldoc.jp/docs/perl/5.22.1/perlretut.pod#Extracting32matches
($hours, $minutes, $second) = ($time =~ /(\d\d):(\d\d):(\d\d)/);
ttp://perldoc.jp/docs/perl/5.22.1/perlretut.pod#Extracting32matches
670デフォルトの名無しさん
2018/06/16(土) 06:32:34.79ID:CnQY4Co9671デフォルトの名無しさん
2018/06/16(土) 06:48:42.62ID:QsFR7Mzm インデックスだけ渡されてもなー
672デフォルトの名無しさん
2018/06/16(土) 13:31:25.59ID:CnQY4Co9673デフォルトの名無しさん
2018/06/16(土) 14:40:46.76ID:QsFR7Mzm どうやっても、($1, $2)に相当するような配列は、自分で作らないと無いんだけど、
そもそもそのやり方は便利なのか? という問題があって
括弧の数を左から数えて、挿入したら間違えずにずらして、というやり方は、
どう考えても避けるべきテクニックなので、わざわざ改良版でそんな方法を
準備したりはしない
そもそもそのやり方は便利なのか? という問題があって
括弧の数を左から数えて、挿入したら間違えずにずらして、というやり方は、
どう考えても避けるべきテクニックなので、わざわざ改良版でそんな方法を
準備したりはしない
674デフォルトの名無しさん
2018/06/17(日) 02:57:43.02ID:rS3/QTqY >>669
ちょっと捻ってこうすると配列に入るね。
@t = ($time =~ /(\d\d):(\d\d):(\d\d)/);
で、マッチしなければ @t には何も入らないので if (@t) { マッチした時の処理 } のように書ける。
ちょっと捻ってこうすると配列に入るね。
@t = ($time =~ /(\d\d):(\d\d):(\d\d)/);
で、マッチしなければ @t には何も入らないので if (@t) { マッチした時の処理 } のように書ける。
675デフォルトの名無しさん
2018/06/17(日) 04:40:03.87ID:rS3/QTqY if の中に突っ込んじゃえば見た目が元とあまり変わらなくなるな。
if (my @t = $time =~ /(\d\d):(\d\d):(\d\d)/) {
# このブロックに入った場合は @t[0..2] に値が入っている。
}
if (my @t = $time =~ /(\d\d):(\d\d):(\d\d)/) {
# このブロックに入った場合は @t[0..2] に値が入っている。
}
676デフォルトの名無しさん
2018/06/17(日) 09:21:55.81ID:jBtDb+3n それが常套手段
でも、次の行で使うためだけにテンポラリの変数を命名して、
ということを避ける手段が大抵はあるのに、この場合は無さそうなのが気になる
でも、次の行で使うためだけにテンポラリの変数を命名して、
ということを避ける手段が大抵はあるのに、この場合は無さそうなのが気になる
677デフォルトの名無しさん
2018/06/17(日) 16:50:23.88ID:YZJ2jt3n 気にするな。
678デフォルトの名無しさん
2018/06/17(日) 17:15:26.48ID:1gNDCUDy リストのスライスを使えばいいんじゃないかなあ。
679デフォルトの名無しさん
2018/06/17(日) 17:43:24.21ID:jBtDb+3n もう括弧を数えるのはやめようぜ、ということなのだろう
$1, $2 の代わりの配列があったとしても、数えないといけないのは同じなので、
明示的にラベルを付けて書くのが人間的
$1, $2 の代わりの配列があったとしても、数えないといけないのは同じなので、
明示的にラベルを付けて書くのが人間的
680デフォルトの名無しさん
2018/06/17(日) 21:23:30.12ID:hnLcPBvl あー。まあそうかな。
681デフォルトの名無しさん
2018/07/04(水) 17:49:09.45ID:XD9RzW/r 使ってる Perl が 24.1 になったんだけど、どこかで do の仕様変わった?
do('.state')
がエラーになるんだが。
@INC に '.' を加えれば見つけてくれるけど
do('./.state')
と書いとくべきだったよ。
do('.state')
がエラーになるんだが。
@INC に '.' を加えれば見つけてくれるけど
do('./.state')
と書いとくべきだったよ。
682デフォルトの名無しさん
2018/07/04(水) 21:00:50.16ID:pO2eBJuX それは do の仕様が変わったんではなく、@INC の仕様が変わったんだな。
683デフォルトの名無しさん
2018/07/04(水) 21:36:23.59ID:k7IkWFxo @_ とタイプしようとしても必ずミスする
下手すると、`\ になる
下手すると、`\ になる
684デフォルトの名無しさん
2018/07/04(水) 22:16:13.94ID:gFgZc5FG WCG
685デフォルトの名無しさん
2018/07/04(水) 23:54:26.65ID:pO2eBJuX >>683
いっそ `\ とタイプするよう心がけたらミスで @_ となる率が上がったりして。
いっそ `\ とタイプするよう心がけたらミスで @_ となる率が上がったりして。
686681
2018/07/05(木) 06:47:48.29ID:xxuahHpW688デフォルトの名無しさん
2018/07/06(金) 00:12:17.27ID:sx2dCES6 質問じゃないけど、愚痴なんで聞き流してください。
Perlが好きなんですが、モジュールを使って実践サンプルが多いんが、つくって覚えるだけなんで
すごいさみしいです。
Perlのモジュールプログラムは最高に面白いのに、なんであの本だけなんですかね?
あと、PythonのTKinterも好きだけど、全然出てない。
Perlが好きなんですが、モジュールを使って実践サンプルが多いんが、つくって覚えるだけなんで
すごいさみしいです。
Perlのモジュールプログラムは最高に面白いのに、なんであの本だけなんですかね?
あと、PythonのTKinterも好きだけど、全然出てない。
689デフォルトの名無しさん
2018/07/06(金) 08:01:08.76ID:MZPdd74D 今回のプロジェクトは大掛かりだったので、
自分で使う用のツールを大量に作った
こういうの好き
自分で使う用のツールを大量に作った
こういうの好き
690デフォルトの名無しさん
2018/08/11(土) 13:47:45.26ID:DaBLZ7U5 perlの話でもなんでもないけど、再帰呼び出しの話
あるディレクトリから下の階層構造について、再帰的に調べたい
その時に、そのターゲットのディレクトリからの相対パスで出力させたい
それを再帰呼び出しを使ってやらせようとすると、
最初: ターゲット
次: ターゲット/file1
次の次: ターゲット/file1/file11
次の次の次: ターゲット/file1/file11/file111
が調べる対象で、単純に受け取った相対パスに対して
ターゲット/相対パス/ファイル名
を調べればいい訳ではないし、再帰的に渡す相対パス名も、
相対パス/ファイル名
と決め打ちすると最初だけ例外がある
何かスマートにやる方法は無いもんかなと
いっそフルパスで扱って、後から文字列置換でターゲット部分だけ削るという方法もあるけど
あるディレクトリから下の階層構造について、再帰的に調べたい
その時に、そのターゲットのディレクトリからの相対パスで出力させたい
それを再帰呼び出しを使ってやらせようとすると、
最初: ターゲット
次: ターゲット/file1
次の次: ターゲット/file1/file11
次の次の次: ターゲット/file1/file11/file111
が調べる対象で、単純に受け取った相対パスに対して
ターゲット/相対パス/ファイル名
を調べればいい訳ではないし、再帰的に渡す相対パス名も、
相対パス/ファイル名
と決め打ちすると最初だけ例外がある
何かスマートにやる方法は無いもんかなと
いっそフルパスで扱って、後から文字列置換でターゲット部分だけ削るという方法もあるけど
691デフォルトの名無しさん
2018/08/11(土) 14:01:06.83ID:4zfRZVUI >>690
台無しなこというと、ディレクトリ以下のファイルを列挙するシェルコマンドとプロセス通信したほうが速い。
台無しなこというと、ディレクトリ以下のファイルを列挙するシェルコマンドとプロセス通信したほうが速い。
692デフォルトの名無しさん
2018/08/11(土) 14:16:49.10ID:DaBLZ7U5 再帰しなくてよくなるだけで、相対パスの問題は解決しないというか、
より遠のくような
より遠のくような
693デフォルトの名無しさん
2018/08/11(土) 15:52:58.06ID:edehoOie Perlの話をするが、File::Findモジュールを使えば。
694デフォルトの名無しさん
2018/08/11(土) 20:53:56.37ID:4zfRZVUI >>693
まさにFile::Findが遅い。シェルコマンドとプロセス間通信読み取りしたほうがいい。
具体的には以下のようなシェルコマンドをパイプ読み取りするといい。
unixの場合: find [path] -type f
windowsの場合: dir /B /S /A:-D [path]
まさにFile::Findが遅い。シェルコマンドとプロセス間通信読み取りしたほうがいい。
具体的には以下のようなシェルコマンドをパイプ読み取りするといい。
unixの場合: find [path] -type f
windowsの場合: dir /B /S /A:-D [path]
695デフォルトの名無しさん
2018/08/11(土) 21:20:05.57ID:DaBLZ7U5 まさにそんな感じになった
dir の結果になんかハングルとかSJISじゃないものが混じってて、
それをそのままbatファイルに吐いて、
batファイルを見ても・・・みたいに化けてても、
実行させるとちゃんと正常に動作する
何作ってたかというと、差分バックアップツール
tarコマンドでできそうで試したけどうまくいかないので作ったった
全ファイルのタイムスタンプ一覧を保存しておいて、
2代目からは差分だけのアーカイブを作る
消えてるファイルを削除する為のbatファイルも一緒に生成
dir の結果になんかハングルとかSJISじゃないものが混じってて、
それをそのままbatファイルに吐いて、
batファイルを見ても・・・みたいに化けてても、
実行させるとちゃんと正常に動作する
何作ってたかというと、差分バックアップツール
tarコマンドでできそうで試したけどうまくいかないので作ったった
全ファイルのタイムスタンプ一覧を保存しておいて、
2代目からは差分だけのアーカイブを作る
消えてるファイルを削除する為のbatファイルも一緒に生成
696デフォルトの名無しさん
2018/08/11(土) 23:09:00.44ID:v5OekXOz Perlの話から外れるが、おらは差分バックアップにはrsyncに--backupオプションつけて使ってる。
697デフォルトの名無しさん
2018/08/11(土) 23:21:12.60ID:DaBLZ7U5 windowsにもあればいいんだけど
差分バックアップツールそのものはいろいろあるんだよな
っていうか、windowsそのものにも内蔵されてたような
バックアップのデータをバックアップ対象のシステムと同じとこに置いててもあんまり意味ないので、
単一のアーカイブとしてクラウドかどっかに置きたい
しかも、専用ファイル形式とかでなくて、何もインストールせずに解凍するだけでリストアしたい
とか考えると条件に合うツールがなかなか無くて、
それでいて作るのはそんなに難しくもなさそうなので、自分で作るかと
差分バックアップツールそのものはいろいろあるんだよな
っていうか、windowsそのものにも内蔵されてたような
バックアップのデータをバックアップ対象のシステムと同じとこに置いててもあんまり意味ないので、
単一のアーカイブとしてクラウドかどっかに置きたい
しかも、専用ファイル形式とかでなくて、何もインストールせずに解凍するだけでリストアしたい
とか考えると条件に合うツールがなかなか無くて、
それでいて作るのはそんなに難しくもなさそうなので、自分で作るかと
698デフォルトの名無しさん
2018/08/12(日) 05:27:13.10ID:YGBUsYMx rsyncは、Windowsでもつかえるぞ。
699デフォルトの名無しさん
2018/08/12(日) 05:29:09.82ID:5MmmYY5A Windows でバックアップというと xcopy や robocopy だろうな。
rsync も動くんじゃないか? Cygwin や WSL 上の Ubuntu とかなら確実に動くと思うが。
rsync も動くんじゃないか? Cygwin や WSL 上の Ubuntu とかなら確実に動くと思うが。
700デフォルトの名無しさん
2018/08/12(日) 06:37:38.09ID:I0JtNgg1 rsyncっていうかrdiffかな
rdiffの出力形式がどんなのか知らないけど、
リストア時にもrdiffが必要だというなら避けたい
ただのzipなりtarなりのアーカイブを順に上書き展開するだけでいい状態にしておかないと、
リストアが必要な事態になった時には多分リストア用のツールも無い
rdiffの出力形式がどんなのか知らないけど、
リストア時にもrdiffが必要だというなら避けたい
ただのzipなりtarなりのアーカイブを順に上書き展開するだけでいい状態にしておかないと、
リストアが必要な事態になった時には多分リストア用のツールも無い
702デフォルトの名無しさん
2018/08/12(日) 15:08:29.76ID:I0JtNgg1 だからミラーを作りたい訳じゃないって
ミラーも実はあるけど
そっちはもっと頻度の高いバックアップ用で、
物理的に別のドライブなら同時に壊れる確率は低いだろうという考え
そうじゃなくて、PC一式盗まれた/津波で流された/証拠物件として押収された、等の為に、
まるきり新規から昨日の作業環境を復元したい時の為に、
最低限の情報をクラウドに置いてある
それは特定のディレクトリ以下まるごとのアーカイブでいいんだけど、
サイズが巨大になるので2代目以降は差分で済ませたいというのがそもそもの動機
ミラーも実はあるけど
そっちはもっと頻度の高いバックアップ用で、
物理的に別のドライブなら同時に壊れる確率は低いだろうという考え
そうじゃなくて、PC一式盗まれた/津波で流された/証拠物件として押収された、等の為に、
まるきり新規から昨日の作業環境を復元したい時の為に、
最低限の情報をクラウドに置いてある
それは特定のディレクトリ以下まるごとのアーカイブでいいんだけど、
サイズが巨大になるので2代目以降は差分で済ませたいというのがそもそもの動機
703615
2018/08/12(日) 16:11:04.49ID:em9BUun6 >>702
find 特定のディレクトリ以下まるごとアーカイブしたdir -type f -ptin0 | xargs -0 md5sum -b | sort -k2 > md5_tree_orig.out
で生成した md5_tree_orig.out を保持しておき、
md5sum --quiet -c その後更新を受けた上記dir md5_tree_orig.out
で追加/削除/更新されたファイルを検出しリストアップ
とか
find 特定のディレクトリ以下まるごとアーカイブしたdir -type f -ptin0 | xargs -0 md5sum -b | sort -k2 > md5_tree_orig.out
で生成した md5_tree_orig.out を保持しておき、
md5sum --quiet -c その後更新を受けた上記dir md5_tree_orig.out
で追加/削除/更新されたファイルを検出しリストアップ
とか
704デフォルトの名無しさん
2018/08/12(日) 16:17:29.70ID:I0JtNgg1 まあ、そんなようなことをタイムスタンプの比較だけでやらせた
リストアップまでは簡単で、差分のアーカイブの作成と、
ファイルが減ってたらリストア側からも減らす仕組みが面倒なんだけど
動かしてみると空のディレクトリが生成されてなかったり
リストアップまでは簡単で、差分のアーカイブの作成と、
ファイルが減ってたらリストア側からも減らす仕組みが面倒なんだけど
動かしてみると空のディレクトリが生成されてなかったり
705デフォルトの名無しさん
2018/08/12(日) 18:42:09.50ID:YGBUsYMx 信頼性の不安とか動作確認のめんどさとか考えたら、rsync/robocopyにしたほうがいいんじゃないの?
どうしても差分だったらrdiff-backupとか?
どうしても差分だったらrdiff-backupとか?
706デフォルトの名無しさん
2018/08/12(日) 19:21:31.28ID:I0JtNgg1 ミラーは既にやってるからもう要らない
差分のアーカイブを作ってネットに保存するというのをやりたいだけ
勧めるとしたらtarのバックアップ機能で、まさに差分だけのアーカイブを
作る機能があるんだけど、windowsに移植した人が更新時間とアクセス時間とか
あのへんを失敗してるみたいで、試したのは使えないビルドだった
差分のアーカイブを作ってネットに保存するというのをやりたいだけ
勧めるとしたらtarのバックアップ機能で、まさに差分だけのアーカイブを
作る機能があるんだけど、windowsに移植した人が更新時間とアクセス時間とか
あのへんを失敗してるみたいで、試したのは使えないビルドだった
707615
2018/08/12(日) 21:24:20.34ID:YC+nt/a3 mtimeに基づいて更新されたファイルだと判定する方法は、
アーカイブから抽出した古い日付のファイルを見落とすので
抜けが起きる可能性があるよ
アーカイブから抽出した古い日付のファイルを見落とすので
抜けが起きる可能性があるよ
708デフォルトの名無しさん
2018/08/12(日) 21:35:27.48ID:Q5PU7gst よし、cygwinを導入してcygwinのtar使おうぜ。
709デフォルトの名無しさん
2018/08/12(日) 21:37:14.43ID:I0JtNgg1 makeじゃないんだから
イコールでなければ当然更新対象
でもなー
意図的にタイムスタンプを保持したまま修正する、みたいなことを
あちこちでやってるんだよな
イコールでなければ当然更新対象
でもなー
意図的にタイムスタンプを保持したまま修正する、みたいなことを
あちこちでやってるんだよな
710デフォルトの名無しさん
2018/08/12(日) 21:43:05.49ID:TfFR22LF tar.exe はWindows10だと標準で入るらしい。
「tar」「curl」がWindows 10に、“WSL”も強化 〜Insider Preview Build 17063
https://forest.watch.impress.co.jp/docs/news/1097996.html
2017年12月20日 15:17
「tar」「curl」がWindows 10に、“WSL”も強化 〜Insider Preview Build 17063
https://forest.watch.impress.co.jp/docs/news/1097996.html
2017年12月20日 15:17
711デフォルトの名無しさん
2018/08/12(日) 21:58:15.81ID:I0JtNgg1 新しき皮袋に古き酒を
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 「国民の憤りを引き起こした」中国側“高市首相発言の撤回改めて要求” [どどん★]
- 【インバウンド】中国からの“渡航自粛”…ツアー1000人分の直前キャンセル「キャンセル料は免除してくれ」 ことしいっぱいキャンセルに [1ゲットロボ★]
- 【芸能】日中関係悪化でエンタメ業界に大ダメージ… JO1の中国でのイベント中止、邦画は公開延期、STARTOアイドルへの影響も [冬月記者★]
- XやChatGPTで広範囲の通信障害 投稿や閲覧できず [蚤の市★]
- 【サッカー】日本代表、ボリビアに3発快勝 森保監督通算100試合目を飾る…鎌田、町野、中村がゴール [久太郎★]
- Perfume・あ~ちゃんの結婚相手の一般男性、吉田カバンの社長と判明 [977261419]
- 地球から無限km先の場所ってどうなっているの?
- お前らインターネット大規模障害起きてたとき何してた
- 自民党議員「高市は先人が築き上げた日中関係を壊した。外務省が謝罪に言ってるが自分で責任を取れ」 [834922174]
- 日本、高市のお陰で破滅に近づくwwwwwwww
- 岡田克也「軽々しく存立危機事態とか言うべきじゃない」高市早苗「台湾で武力攻撃が発生したらどう考えても日本の存立危機事態」 [931948549]
