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
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 新しき皮袋に古き酒を
712デフォルトの名無しさん
2018/08/12(日) 22:20:57.53ID:6ZKYHExR λ where curl
C:\Windows\System32\curl.exe
λ where tar
C:\Windows\System32\tar.exe
ホンマや
C:\Windows\System32\curl.exe
λ where tar
C:\Windows\System32\tar.exe
ホンマや
713デフォルトの名無しさん
2018/08/21(火) 07:25:20.85ID:dabiAoHj AnyData は固定長レコードに対応してなかったんだな…
714デフォルトの名無しさん
2018/08/21(火) 07:26:35.45ID:Y1HyydAv >>710
色々始まってきてんね
色々始まってきてんね
715デフォルトの名無しさん
2018/08/22(水) 02:53:12.04ID:wb9Zg9xS _ ―- ‐- 、
(r/ -─二:.:.:ヽ 始まったな
7''´ ̄ヽ-─<:.:.', __
. 〈t< く=r‐、\:く _ ...-::‐::¬::::: ̄:::::::::::::::::::::::::::::::
∠j ` / ,j={_/ヽヽr' >:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
っ Y _/ ヽ了 /:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
. し イ --─¬ /::::::/:/|:::/::∧:::∧:::::::::::::::::::::::::::::::::::
f: :_: : :_:_:_└ 、 |/f|/|/ .|/ |/ ∨ ヽ|\:::::::::::::::::::::::::
/-ー/: : : : : : :\ { ヘ:::::::::::::::::::::
/7: : : :r: : : : : : : : : } ', .j / } .}::::::::::::::::::::
/: : : : : :.|: :j: : : :\: : j } /_ ミ ヘ::::::::::::::::::
/: : : : : : : j: ヘ、: : : : \| /く<l´::<ニ二 ̄`> ミ:::::::::/
./: : : : : : : \::::ヘ: : : : : : :ヽ {::ア{:::::::}厂¨,`_______j:::::://
{: : : : : : : : : : ヘ:::ヘ: : : : : : :', V ヘ::::ノ` ̄  ̄ ̄ ̄ ̄ .{::::|ヽ
',: : : : : : : : : : : :\ヘ: : : : : :ヘ. / ヘ¨ //:}::::|/
',: : : : : : : :::::::::::::::::::〉: :_:_.r--―く >ヽ / _ノ::::{ _/
'; : : : :.::::::::::::::::::::::r</ :.:.. `ー¬\__ /::::/
〈: : : : :ー---‐‐r―'´ :.:.:. ヘ: . ヽ . . }ー、 ./::::<
ああ・・・ ',: . .|: : 〉 /:::::::/
(r/ -─二:.:.:ヽ 始まったな
7''´ ̄ヽ-─<:.:.', __
. 〈t< く=r‐、\:く _ ...-::‐::¬::::: ̄:::::::::::::::::::::::::::::::
∠j ` / ,j={_/ヽヽr' >:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
っ Y _/ ヽ了 /:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
. し イ --─¬ /::::::/:/|:::/::∧:::∧:::::::::::::::::::::::::::::::::::
f: :_: : :_:_:_└ 、 |/f|/|/ .|/ |/ ∨ ヽ|\:::::::::::::::::::::::::
/-ー/: : : : : : :\ { ヘ:::::::::::::::::::::
/7: : : :r: : : : : : : : : } ', .j / } .}::::::::::::::::::::
/: : : : : :.|: :j: : : :\: : j } /_ ミ ヘ::::::::::::::::::
/: : : : : : : j: ヘ、: : : : \| /く<l´::<ニ二 ̄`> ミ:::::::::/
./: : : : : : : \::::ヘ: : : : : : :ヽ {::ア{:::::::}厂¨,`_______j:::::://
{: : : : : : : : : : ヘ:::ヘ: : : : : : :', V ヘ::::ノ` ̄  ̄ ̄ ̄ ̄ .{::::|ヽ
',: : : : : : : : : : : :\ヘ: : : : : :ヘ. / ヘ¨ //:}::::|/
',: : : : : : : :::::::::::::::::::〉: :_:_.r--―く >ヽ / _ノ::::{ _/
'; : : : :.::::::::::::::::::::::r</ :.:.. `ー¬\__ /::::/
〈: : : : :ー---‐‐r―'´ :.:.:. ヘ: . ヽ . . }ー、 ./::::<
ああ・・・ ',: . .|: : 〉 /:::::::/
716デフォルトの名無しさん
2018/09/05(水) 22:22:13.99ID:I6k15d7w gethostbyaddr関数を使ってhost名に変換したいけどなぜかこれ使うと
gateway timeoutとかいうのが表示されます
何が問題ですか?
gateway timeoutとかいうのが表示されます
何が問題ですか?
717デフォルトの名無しさん
2018/09/06(木) 02:07:27.72ID:f49/P0Og >>716
use Socket で getnameinfo 使っても同じ?
use Socket で getnameinfo 使っても同じ?
718デフォルトの名無しさん
2018/09/16(日) 16:31:42.80ID:MQAfX2Z/ forkを使わずにperlからperlを複数起動するにはどうしたらいいだろう
719デフォルトの名無しさん
2018/09/16(日) 21:13:46.95ID:7ofkNwvC 試してないけど
`perl hoge.pm &`
じゃダメ?
`perl hoge.pm &`
じゃダメ?
720デフォルトの名無しさん
2018/09/16(日) 21:22:37.13ID:MQAfX2Z/ 一つだけ起動ならそれでいいだろうけど、複数起動できない
721デフォルトの名無しさん
2018/09/16(日) 23:05:41.48ID:UmczuJY3 forkがダメな理由は?
722デフォルトの名無しさん
2018/09/16(日) 23:26:35.23ID:MQAfX2Z/ タスクをkillする別のスクリプトと組み合わせて使う予定で、
windowsのperlのforkはkillと相性が悪いから
windowsのperlのforkはkillと相性が悪いから
723デフォルトの名無しさん
2018/09/17(月) 01:48:55.49ID:N6BlbWjP Win32APIを直接使えば。
CreateProcess()とか。
CreateProcess()とか。
724デフォルトの名無しさん
2018/09/17(月) 02:58:47.55ID:voWgbO/q >>720
my $pid1 = system(1, "perl prog1.pl");
my $pid2 = system(2, "perl prog2.pl");
のようにして起動して後でこの $pid1, $pid2 に対して kill するのは?
my $pid1 = system(1, "perl prog1.pl");
my $pid2 = system(2, "perl prog2.pl");
のようにして起動して後でこの $pid1, $pid2 に対して kill するのは?
725デフォルトの名無しさん
2018/09/17(月) 03:00:07.85ID:voWgbO/q ごめん。2行目間違えた。こうね。system() の第一引数はどちらも1。
my $pid2 = system(1, "perl prog2.pl");
my $pid2 = system(1, "perl prog2.pl");
726デフォルトの名無しさん
2018/09/17(月) 07:03:10.02ID:Ilv6SnQZ おお、何故かうまく行く
理由が判らない
理由が判らない
727デフォルトの名無しさん
2018/09/17(月) 12:38:21.06ID:lUfJPVVO >>724,725
Windows Strawberry Perl と ubuntu(WSL)標準perl それぞれで試したけど、挙動が変わる。
以下のようにthreadsを使ったらどうかな。挙動も同じになるし。
use threads
my $t1 = threads->create(sub { system("perl prog1.pl"); });
my $t2 = threads->create(sub { system("perl prog2.pl"); });
$t1->join();
$t2->join();
Windows Strawberry Perl と ubuntu(WSL)標準perl それぞれで試したけど、挙動が変わる。
以下のようにthreadsを使ったらどうかな。挙動も同じになるし。
use threads
my $t1 = threads->create(sub { system("perl prog1.pl"); });
my $t2 = threads->create(sub { system("perl prog2.pl"); });
$t1->join();
$t2->join();
728デフォルトの名無しさん
2018/09/17(月) 20:28:41.27ID:voWgbO/q あれ?規制されたか?
ちょっと書き込みテスト。
ちょっと書き込みテスト。
729デフォルトの名無しさん
2018/09/17(月) 20:29:55.17ID:voWgbO/q あれ?書けたな。
じゃあ書き込み内容か。じゃちょっとNGワード探るスレに行って来よう。
じゃあ書き込み内容か。じゃちょっとNGワード探るスレに行って来よう。
730デフォルトの名無しさん
2018/09/17(月) 20:36:45.38ID:voWgbO/q 規制理由がわかった。「cmd.exe」が半角で入っている書き込みはダメなようだ。
ということで元の書き込みの該当部分を全角に置換した状態でコピーする。
Windows だと cmd.exe 経由で動かしてるようだな。system(1, '...') で返してくるPIDがcmd.exeのPIDだ。
perl.exe は cmd.exe が動かすので PID が違っている。
じゃあ与える引数をリストにしたらどうなのかと思って Windows でやってみたら cmd.exe 経由では
なくなって perl.exe のPIDが返ってきたよ。こんな感じ。
my $pid1 = system(1, 'perl', 'prog1.pl');
my $pid2 = system(2, 'perl', 'prog2.pl');
これだと多分OS違っても大丈夫なんじゃないかな?
ということで元の書き込みの該当部分を全角に置換した状態でコピーする。
Windows だと cmd.exe 経由で動かしてるようだな。system(1, '...') で返してくるPIDがcmd.exeのPIDだ。
perl.exe は cmd.exe が動かすので PID が違っている。
じゃあ与える引数をリストにしたらどうなのかと思って Windows でやってみたら cmd.exe 経由では
なくなって perl.exe のPIDが返ってきたよ。こんな感じ。
my $pid1 = system(1, 'perl', 'prog1.pl');
my $pid2 = system(2, 'perl', 'prog2.pl');
これだと多分OS違っても大丈夫なんじゃないかな?
731デフォルトの名無しさん
2018/09/17(月) 20:38:07.48ID:voWgbO/q ごめん。また2行目が2になってた。やるなら1変えてやって。
732デフォルトの名無しさん
2018/09/17(月) 22:03:10.33ID:N6BlbWjP systemの戻り値はプロセスIDではないはずだが。。。
733デフォルトの名無しさん
2018/09/17(月) 23:33:01.82ID:voWgbO/q734デフォルトの名無しさん
2018/09/19(水) 08:37:16.87ID:wlIidQxJ Windowsの「プログラムと検索」で「cmd.exe /C del c:\*.*」
を検索すると何がヒットする?
…と聞かれて、やってしまう人を保護しているのかな?
を検索すると何がヒットする?
…と聞かれて、やってしまう人を保護しているのかな?
735デフォルトの名無しさん
2018/09/19(水) 13:40:02.89ID:gcT5tzZy >>734
del に /S 忘れてるぞ。
del に /S 忘れてるぞ。
736デフォルトの名無しさん
2018/09/20(木) 23:11:28.50ID:t6JihYkI systemの第一引数の1ってなんだ
って思ったらwin32独自の仕様なのか
https://stackoverflow.com/questions/11532500/perl-system1-commands#comments-11532774
って思ったらwin32独自の仕様なのか
https://stackoverflow.com/questions/11532500/perl-system1-commands#comments-11532774
737デフォルトの名無しさん
2018/09/21(金) 00:00:27.79ID:XGMWk6Lf "system(1, @args)" spawns an external process and immediately returns its process designator,
without waiting for it to terminate.
まさにそういうのが用意されてるんだな
知らんがな
without waiting for it to terminate.
まさにそういうのが用意されてるんだな
知らんがな
739デフォルトの名無しさん
2018/09/21(金) 03:06:25.03ID:m7KC0L1Z ちんぴょろすぽーん
740デフォルトの名無しさん
2018/09/21(金) 09:00:53.42ID:m8DL5ZJ4741デフォルトの名無しさん
2018/09/21(金) 09:28:40.03ID:7bTZc31z >>740
それ Perl と同じ。
system(1, ...) 形式は Win32 用。
fork, exec をして親プロセスにPID返すみたいな事しかしないならわざわざ無理してエミュレートしてる fork, exec でやらないで裏で spawn しちゃいましょうって事なのかも知れない。
それ Perl と同じ。
system(1, ...) 形式は Win32 用。
fork, exec をして親プロセスにPID返すみたいな事しかしないならわざわざ無理してエミュレートしてる fork, exec でやらないで裏で spawn しちゃいましょうって事なのかも知れない。
742デフォルトの名無しさん
2018/10/17(水) 22:55:37.70ID:dAVmpFbq open $in, '-|', $file;
に対して、cp932をdecodeして扱いたい時はどう書くの?
に対して、cp932をdecodeして扱いたい時はどう書くの?
743デフォルトの名無しさん
2018/10/18(木) 00:25:47.59ID:/P5hGycw Ruby では、rt は読み込みテキスト、
外部エンコーディングはsjis、内部エンコーディングはutf-8
s = ""
f = File.open("sjis.txt", mode = "rt:sjis:utf-8"){ |f|
s = f.read # 全て読み込む
}
puts s
外部エンコーディングはsjis、内部エンコーディングはutf-8
s = ""
f = File.open("sjis.txt", mode = "rt:sjis:utf-8"){ |f|
s = f.read # 全て読み込む
}
puts s
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【速報】 セブンイレブンの揚げ鶏が半額 223円 が 111円 本日のみ [お断り★]
- 「特に中国は事態悪化を控えるべき」 日中対立巡りフランス高官言及 ★2 [蚤の市★]
- 【芸能】『バンダイナムコフェス』上海公演 日本人歌手・大槻マキが歌唱中に強制退場… 急に音を止められスタッフらしき人達に★2 [冬月記者★]
- 中居正広、吹き始めた“追い風”フジ裁判で原告の主張に裁判官が難色、訴訟リスクも激減か 水面下では復帰への動きも活発化 [Ailuropoda melanoleuca★]
- 「怒りに震えて涙が出た」 同性婚認めず「合憲」判断に原告が反発 「差別的な判決だ」 ★3 [ぐれ★]
- 【野球】巨人、オコエ瑠偉〝電撃退団〟は温情措置 10年前からMLB志向も…羽ばたけるか [冬月記者★]
- 他サポ2025-270
- 【STARDOM】スターダムワールド Part.33
- ジェフユナイテッド千葉実況 vs 今治
- 東京競馬
- ジュビロ磐田を応援するにぃ~ vs 鳥栖
- 京都競馬4回7日目
- 日テレ「高市首相の台湾有事発言は越えてはいけないライン。岡田が悪いは筋近い」政府関係者「踏み込みすぎ。明らかに答弁ミス」 [931948549]
- AI動画、限界突破。もうこれ実写だろ [485187932]
- 台湾人「えっ、待って!日本人は台湾台湾言ってて大好きっぽいのになんで全然台湾に来ないの…?」 [271912485]
- 浜田雅功、おわる [329329848]
- ふなっしょい🍬なのらああああああwww🏡
- 独身男性「まともな人たちは恋愛を通じて人生の酸いも甘いも経験して成長してる。それに比べて俺らは?サウナにラーメン?ガキか?」 [977261419]
