1 名前:デフォルトの名無しさん [2014/02/19(水) 23:36:23.29 .net] CGIについての質問は板違いです。WEBプログラミング板でどうぞ。 CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。 (WEBプログラミング板: kohada.2ch.net/php/ ) このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。 スレ違いの質問にはスルーか、速やかな誘導をお願いします。 荒らしはスルー推奨。 "The duct tape of the Internet" こと、Perlについての質問箱です。 "There's more than one way to do it" ということで、 Perlの奥深さについて皆で語り合い、追求してまいりましょう。 www.perl.org/get.html Download Latest Stable Source (5.18.2) ▼前スレ Perlについての質問箱 61箱目 toro.2ch.net/test/read.cgi/tech/1381561905/ Perlについての質問箱 62箱目 toro.2ch.net/test/read.cgi/tech/1385039352/
901 名前:デフォルトの名無しさん mailto:sage [2017/10/02(月) 18:11:00.25 ID:zZtvHqX+.net] perl6についてスレすらないけどみんな無関心なの?
902 名前:デフォルトの名無しさん mailto:sage [2017/10/02(月) 19:15:38.66 ID:7PTk8Wzs.net] 違う言語だからなあ そんなんに慣れるくらいなら別の言語やる
903 名前:デフォルトの名無しさん mailto:sage [2017/10/02(月) 19:19:54.66 ID:zZtvHqX+.net] とんくす やっぱそういう認識なんやね
904 名前:デフォルトの名無しさん mailto:sage [2017/10/02(月) 19:54:37.34 ID:W4ke7gLE.net] 使えるとこではPerl使いたいけど いよいよとなったら次はpythonかなぁ
905 名前:デフォルトの名無しさん [2017/10/02(月) 20:13:00.81 ID:xxT2R/Bt.net] (lock_test1.cgi) test.lockを排他ロック sleep(10); ロック解除 (lock_test2.cgi) test.lockを削除 test.lockを排他ロック ロック解除 lock_test1.cgiを実行した3秒後にlock_test2.cgiを実行して試したら lock_test2.cgiの方はロック待ちにならなかった test.lockを削除しない場合はロック待ちになった だからロック用ファイルを削除するとロックが解除される
906 名前:デフォルトの名無しさん mailto:sage [2017/10/02(月) 20:14:57.29 ID:7PTk8Wzs.net] pythonも新バージョンへに移行したくない同じ現象になってて、 次の言語が待たれている perlからpythonはいろいろ新しいアイディアが追加されて、 より面白い言語になったけど、 次の言語では何が追加されるんだろう
907 名前:デフォルトの名無しさん mailto:sage [2017/10/02(月) 20:19:16.81 ID:W4ke7gLE.net] >>877 個人的にpythonは3から入ったから、 早く移行完了して欲しいw
908 名前:デフォルトの名無しさん mailto:sage [2017/10/03(火) 13:20:15.84 ID:inJ+8qV1.net] >>876 それはロック解除されてない それは、毎回新しくロックファイル作ってロックする方法なら 常にロック出来るというだけ
909 名前:デフォルトの名無しさん mailto:sage [2017/10/05(木) 23:33:51.09 ID:1JBojDVn.net] ロック状態を示すファイルを削除したら、その擬似的なロックが、解放されるのは当たり前だとおもうのだけど、結局何がしたいんだ?
910 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 08:15:23.63 ID:6wQnopu1.net] 基本的なことだったと思うのですが、忘れてしまって調べても見つけられなかったので質問させてください。 print関数のFHのようなスペースを伴わずに渡す第一引数って * なんていう名前でしたっけ * どうやって定義するんでしたっけ
911 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 11:13:34.60 ID:lC4cuCCD.net] >print関数のFHのようなスペースを伴わずに渡す第一引数 ??? 何を指しているのかよくわからないし、定義するってどういうことだ? print FH "hoge", "fuga"; print "hoge", "fuga";
912 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 12:02:43.75 ID:6wQnopu1.net] >>882 自分で定義する関数にprintのFHような渡し方をする引数を定義するということです。 スロットとかいう名前だった気がしたのですが、どうも違うようで
913 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 12:05:55.88 ID:6wQnopu1.net] あ、スペースを伴わずに、じゃない カンマを伴わずに…
914 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 12:33:54.72 ID:lC4cuCCD.net] 間接オブジェクト構文 ttp://perldoc.jp/docs/perl/5.8.8/perlobj.pod#Indirect32Object32Syntax new Hoge 'foo', 'bar'; Hoge->new('foo', 'bar'); 普通にメソッドを定義すればよく、呼び出す時の書き方が違うだけ
915 名前:デフォルトの名無しさん mailto:sage [2017/10/07(土) 13:02:49.57 ID:5L99WECK.net] >>885 そうだったー!! ありがとうございます!!!
916 名前:デフォルトの名無しさん [2017/10/09(月) 21:30:40.03 ID:EtpsZHXA.net] で、何をしたのかね?
917 名前:デフォルトの名無しさん mailto:sage [2017/10/09(月) 21:33:56.63 ID:EtpsZHXA.net] うう。リロード忘れ。
918 名前:デフォルトの名無しさん [2017/10/12(木) 16:28:32.59 ID:5XRwFLPd.net] WWW-Curl-4.17.をインストールしたいと思っています。
919 名前: perl Makefile.PLを実行して以下のエラーが出力されました。 原因と対応方法が分かる方、ご教示ください。 Locating required external dependency bin:curl-config... found at /usr/local/bin/curl-config. The version is libcurl 7.19.6 Found curl.h in /usr/local/include/curl/curl.h No working cpp (ファイルもディレクトリもありません。). Parsing curl.h in Perl at Makefile.PL line 105. Building curlopt-constants.c for your libcurl version Building Easy.pm constants for your libcurl version Building Share.pm constants for your libcurl version Generating a Unix-style Makefile Writing Makefile for WWW::Curl Writing MYMETA.yml and MYMETA.jso [] [ここ壊れてます]
920 名前:デフォルトの名無しさん [2017/10/12(木) 22:11:19.78 ID:5bT9xlHu.net] そのモジュールのことは知らないけど、とりあえず「cpp が無い」と言ってるようだね。 make と C をインストールすればいいと思うよ。
921 名前:デフォルトの名無しさん mailto:sage [2017/10/12(木) 22:58:50.94 ID:4iOww/iD.net] makeがちゃんとした文法になる日は来るんだろうか
922 名前:デフォルトの名無しさん [2017/10/13(金) 09:46:32.50 ID:BQhKbAsH.net] 880さん、ありがとうございます。 cppがインストールされていないのですね。。 pkginfoでみるとそれらしいものが入っているのですが、下記とは違うものでしょうか。 # pkginfo -i |grep cpp system SUNWcpp Solaris cpp GNOME2 SUNWsigcpp Libsigc++ - a library that implements typesafe callback system for standard C++ GNOME2 SUNWsigcpp-devel Libsigc++ - a library that implements typesafe callback system for standard C++ - development files
923 名前:880 [2017/10/13(金) 21:28:27.18 ID:4p1OUNBb.net] 問題は解決しましたか? Solaris のことは分からないのでこれ以上お役に立てそうにありません。 まだ解決していないのなら perlsolaris というマニュアルがあるはずですから読んでみてください。 その上で、Solaris のことをよく知っている人に聞くのがよろしいかと思います。
924 名前:デフォルトの名無しさん [2017/10/14(土) 22:03:44.55 ID:7hq5DvWK.net] ダメですね。。 もうちょっとネットで調べてみます。
925 名前:デフォルトの名無しさん [2017/10/20(金) 15:42:18.30 ID:1xv6Ebpc.net] 流れを切ってすみません。 半角カタカナを全角カタカナにしてファイルに書き込みたいです。 Cannot decode string with wide characters at... のエラーになります。どこをどう修正すればよいでしょうか。 use utf8; use Encode; use Encode::JP::H2Z; open(IN, "<:encoding(cp932)", "src.txt"); open(OUT, ">:encoding(cp932)", "dst.txt"); ... #$strはファイルから読み込んだ文字列 Encode::from_to($str, "utf8", "euc-jp"); #どうもここでひっかかる Encode::JP::H2Z::h2z(\$str); Encode::from_to($str, "euc-jp", "utf8"); ... といったコードなのですが・・・。 Shift-JISのコードだと上手く動くのですが・・・。 utf8で標準モジュールの利用で行いたいです。どなたかよろしくお願いします。
926 名前:デフォルトの名無しさん [2017/10/20(金) 17:53:57.14 ID:P8duaFnv.net] 目的がそれだけなら、こんな感じになるかな。 open( IN,'<','src.txt') open( OUT,'>','dst.txt') Encode::from_to( $str,'cp932','euc-jp'); Encode::JP::H2Z::h2z(\$str); Encode::from_to( $str,'euc-jp','cp932'); どうしてかというと、from_to に渡すのは Perl の用語で言うなら文字列ではなくバイト列。 だから入力時にデコードする必要は無い。 日本語でのパターンマッチなどのためにデコードしてある場合は from_to ではなく encode を使う。 Encode のマニュアルを読んでください。 標準モジュールしか使えないわけじゃないのなら Unicode::Japanese を使って
927 名前:ンてはどうでしょう。 [] [ここ壊れてます]
928 名前:885 [2017/10/21(土) 02:31:17.21 ID:JUnyPSe2.net] >896 返信ありがとうございます。 他に日本語の処理があるのでencoding(cp932)としています。 $str=Encode::encode('euc-jp',$str);Encode::JP::H2Z::h2z(\$str); $str=Encode::decode('utf-8',$str); としても #$str=Encode::encode('utf-8',$str);#これの有無に関わらず $str=Unicode::Japanese->new($str)->h2zKana->get; (ためしにUnicode::Japaneseを使ってみましたが、標準モジュールで行いたいです) "\x{xxxx}" does not map to cp932 at .... とワーニングだらけで>:encoding(cp932)がうまくいっていないというか それ以前の変換がうまくいっていないようです・・・。
929 名前:855 [2017/10/21(土) 02:40:01.52 ID:JUnyPSe2.net] 連投すみません。encodeとdecode間違ってるなと思い $str=Encode::decode('euc-jp',$str);Encode::JP::H2Z::h2z(\$str); $str=Encode::encode('euc-jp',$str); とすると、 Wide character in subroutine entry at... で出力が0バイトとなってしまいます・・・。
930 名前:885 [2017/10/21(土) 03:03:22.99 ID:JUnyPSe2.net] 何度もすみません。できました。 $str=Encode::encode('euc-jp',$str);Encode::JP::H2Z::h2z(\$str); $str=Encode::decode('euc-jp',$str); でした。 > 886 encodeを使うアドバイスありがとうございました。助かりました。
931 名前:デフォルトの名無しさん [2017/10/28(土) 14:12:24.45 ID:86e9E3uL.net] #!/usr/local/bin/perl use strict; use CGI::Carp qw(fatalsToBrowser); print <<"EOM"; Content-tyoe: text/html; charset=shift_jis\n\n <html><body> EOM eval {require DBI;}; if($@) { print "DBI NG<br>\n"; } else { print "DBI OK<br>\n"; } undef $@; eval {require DBD::SQLite; } if($@) { print "DBD::SQLite NG<br>\n"; } else { print "DBD::SQLite OK<br>\n"; } print "</body></html>"; sqlchk.cgiの19行目の構文エラー。 "){" と出るんですが何が原因か分かりません。もしよろしければ教えていただけないでしょうか?
932 名前:デフォルトの名無しさん mailto:sage [2017/10/28(土) 14:36:19.07 ID:yzxLOqe0.net] >>900 eval {require DBD::SQLite; } の最後に ; が無い
933 名前:デフォルトの名無しさん [2017/10/28(土) 15:04:21.68 ID:86e9E3uL.net] 助かりました。ありがとうございました^−^
934 名前:デフォルトの名無しさん mailto:sage [2017/11/01(水) 19:40:06.83 ID:FhCkv10M.net] ^−^
935 名前:デフォルトの名無しさん mailto:sage [2017/11/01(水) 21:59:57.34 ID:uQFQAfJE.net] (^_^;
936 名前:デフォルトの名無しさん [2017/11/22(水) 19:37:11.64 ID:kPeZVcC+.net] (^────────────^)
937 名前:デフォルトの名無しさん mailto:sage [2017/11/22(水) 22:55:47.27 ID:oTRzAO+2.net] (^________________^;
938 名前:デフォルトの名無しさん mailto:sage [2017/11/23(木) 00:10:28.02 ID:kTaFEskE.net] :-)
939 名前:デフォルトの名無しさん [2017/11/23(木) 18:54:17.85 ID:8ru0xFWh.net] :────────────)
940 名前:デフォルトの名無しさん [2017/12/05(火) 14:22:42.29 ID:nNRKwkIq.net] APIアクセスでのレスポンスをDumperしたら下みたいに返ってきたんだけど 'https://hogehoge.hoge/'を取得するにはどうアクセスしたらいいです? $VAR1 = bless( { 'url' => bless( do{\(my $o = 'https://hogehoge.hoge/')}, 'URI::https' ) }, 'Entity::Tag' );
941 名前:デフォルトの名無しさん mailto:sega [2017/12/07(木) 10:28:22.13 ID:OnTOXu6z.net] ファイルに書くときに、closeをせず明示的にフラッシュしたいんだけど どうしたらいいの? selectやautoflushは明示的ではないのでできれば使いたくない
942 名前:デフォルトの名無しさん mailto:sage [2017/12/07(木) 10:57:31.26 ID:ULPWPGO9.net] >>910 perldoc.jp/docs/perl/perlfaq5.pod#How32do32I32flush47unbuffer32an32output32filehandle63-32Why32must32I32do32this63 > IO::Handle オブジェクトには flush メソッドもあります。 #!/usr/bin/perl -w use strict; for (1..10) { print '.'; sleep 2; STDOUT->flush; } print "!\n";
943 名前:デフォルトの名無しさん mailto:sage [2017/12/26(火) 21:57:47.00 ID:PAyaH1Yv.net] =~ 正規表現で中身を置換ができる事は理解できたんですが、 中身を入れ替えたいん
944 名前:カゃなく別の変数に入れたいときはどう書けばいいんでしょうか? 現在の自分の知識だと、例えば引数にとった文字列を置換してある変数に入れるとき $_ = $ARGV[0]; $_ =~ s/mukimuki/mukemuke/; $hoge = $_; こんな風に無駄に $_ を経由した書き方になってしまいます。 ほかの言語風に言うと $hoge = $ARGV[0].replaceWith(s/mukimuki/mukemuke/); こんな感じで書きたいのですが。 [] [ここ壊れてます]
945 名前:デフォルトの名無しさん mailto:sage [2017/12/26(火) 22:06:02.40 ID:Vj82fll/.net] ($hoge = $ARGV[0]) =~ s/mukimuki/mukemuke/; こう書くのがセオリーかな
946 名前:デフォルトの名無しさん mailto:sage [2017/12/26(火) 22:37:33.36 ID:3f/g1GW0.net] >>912 Perl 5.14.0 以降なら /r も使える perldoc.jp/docs/perl/5.14.0/perl5140delta.pod#Non-destructive32substitution
947 名前:902 [2017/12/27(水) 03:38:54.44 ID:885vGvc2.net] >>913-914 的確なご回答ありがとうございます。 試してみます。
948 名前:デフォルトの名無しさん mailto:sage [2017/12/27(水) 15:34:07.71 ID:yY2jVcTO.net] perlスクリプトの稼働率は今どれくらいなんだろうか? PHP流行から、徐々にフェードアウトしてるし PHPオワコン説が流れだした頃から、perl6が登場したけど 存在感がないんだよなー
949 名前:デフォルトの名無しさん mailto:sage [2017/12/27(水) 19:01:25.94 ID:Rj9CQ2gH.net] DeNAとかmixiとかがPerIだけど、置き換えが進むだろうし 新規でメインスクリプトでってのはもうなかなか無いだろうね
950 名前:デフォルトの名無しさん mailto:sage [2017/12/27(水) 19:28:49.86 ID:tmtXLaBC.net] ちょっと何かするときはperl使うよ。慣れてるので何も見ずに書けるから。 phpがなぜ出てくるのかわからん。使ったことないけどあれwebアプリ用でしょ
951 名前:デフォルトの名無しさん [2017/12/27(水) 19:55:51.39 ID:bfruSbpL.net] ま、しかし、PerlはWebでしか使われてないわけではないからな。
952 名前:デフォルトの名無しさん [2017/12/27(水) 19:56:46.60 ID:bfruSbpL.net] >>918 多分Webプログラムでの事しか思い浮かばなかったのだろう。
953 名前:デフォルトの名無しさん mailto:sage [2017/12/27(水) 23:26:51.61 ID:+qI9wAl8.net] 素人に毛が生えたレベルの低スキル層でも実用的なwebアプリ作れる点でPHPは凄いよ。 フレームワークの種類も情報量も多いし。 CLIも作りやすくなってる。一からCLIアプリ作るときにPHP使う優位性は無いけど webアプリに付随するものとかなら十分。
954 名前:デフォルトの名無しさん mailto:sage [2017/12/28(木) 00:19:43.19 ID:O5Tikz8c.net] フォーマット変換とかテキスト一括処理系は、perlでなれるとどれもしっくりこないんだよなぁ。 shを補完する感じで使ってる最近は。 cとセットで使いたくなったらpython?を勉強するかもしれない。
955 名前:ゆっきー mailto:sage [2017/12/28(木) 03:17:44.94 ID:NczIEmFQ.net] 10年ぐらい前の入門書で、カンマとドットを間違えて 人工衛星が明後日の方向に飛んで言ったとか何とか、小中学生ぐらいの時に読んだ記憶が有る。
956 名前:デフォルトの名無しさん [2017/12/28(木) 09:29:38.01 ID:wX0EFIYP.net] そういやそんなことあったなあ。
957 名前:デフォルトの名無しさん [2017/12/28(木) 18:55:35.20 ID:Er3In3fn.net] こんなのあったのな。知らなかったよ。 https://qiita.com/AnnPin/items/5f868f0c7cb5d1af306b
958 名前:デフォルトの名無しさん mailto:sage [2017/12/28(木) 19:24:59.40 ID:Ur1ocpFu.net] 粗太陽センサーと精太陽センサーの取得先を取り違える
959 名前:デフォルトの名無しさん [2017/12/28(木) 20:38:10.17 ID:9xNc6XZe.net] 【IS自爆テロ】「死んだら天国へ行ける」 <九条は必要> 「死んだら靖国に祀られる」【神風特攻隊】 https://rosie.5ch.net/test/read.cgi/liveplus/1514253929/l50 【東海アマ】安倍晋三はどんな殺され方 <祖父の代りに絞首刑> 公約反故は自殺に繋がる【世界教師】 rosie.5ch.net/test/read.cgi/liveplus/1514425832/l50
960 名前:デフォルトの名無しさん [2017/12/31(日) 12:51:33.73 ID:6G2PkezB.net] >>923 それ、打ち上げ延期
961 名前:デフォルトの名無しさん [2018/01/01(月) 05:59:15.42 ID:4wMbPbHX.net] >>928 あ、それで済んだの?そうか、じゃあ都市伝説か。
962 名前:デフォルトの名無しさん mailto:sage [2018/01/01(月) 12:14:32.50 ID:rcsYJFXY.net] >>918 PHPが重宝されてるのはDB連携のPDOが便利すぎてハゲるから PDO一つあれば、オラクル、ポスグレ、mysql、sqlサーバー、DB2、SQLITEなんでも 同じ記述で接続できるからな ただ、関数定義に一貫性がない、変数スコープのグローバル化が面倒、 型変換で楽しいバグが発生するなど 素人向けと思って甘く見ると大火傷する諸刃の剣
963 名前:デフォルトの名無しさん mailto:sage [2018/01/01(月) 12:30:16.97 ID:zAUlE2YO.net] 手に馴染んだ道具として今後もperlを使うだろうな rubyに持ち替えた方が使い勝手はいいんだけど、 そもそもrubyが無い環境が多いので使えなくては意味がない
964 名前:デフォルトの名無しさん mailto:sage [2018/01/01(月) 18:55:01.09 ID:FPPCegVg.net] perlの持ち替えならpythonがいいと思う。 特に最近のlinux系はpythonものが増加傾向だし。 でもまあ、perlあればokじゃね?というのが正直なところ
965 名前:デフォルトの名無しさん mailto:sage [2018/01/02(火) 12:32:50.81 ID:Q+9WD3Xu.net] 今年の目標は、新たに言語を勉強することなんだが Perl、Python、Rubyの違いとそれぞれのメリットを 教えてくだされ
966 名前:デフォルトの名無しさん mailto:sage [2018/01/02(火) 12:41:01.44 ID:UbsIsL+c.net] perl どこにでもある python 人工知能に強い ruby Railsが使える
967 名前:デフォルトの名無しさん [2018/01/02(火) 16:34:43.56 ID:pQ/3ped7.net] >>930 DBはPerlでもDBIと各DB用のDBIモジュールがあれば同じようにアクセスできるよ。 てか、その辺は他の言語でもだいたい同じようにできないか?みんなJavaのJDBCの影響受けて接続部分で違いを吸収してなんとかしてるように思うんだが。
968 名前:デフォルトの名無しさん [2018/01/02(火) 16:36:32.56 ID:pQ/3ped7.net] >>935 訂正 > 各DB用のDBIモジュール じゃなくて 各DB用のDBDモジュール
969 名前:デフォルトの名無しさん mailto:sage [2018/01/03(水) 00:47:07.06 ID:0mS9Giqv.net] >>935 なるほど、どこも似たような機能を実装してきてるわけか
970 名前:デフォルトの名無しさん mailto:sage [2018/01/03(水) 01:45:39.60 ID:mxmMGWxl.net] ORM使えば各DBのSQLの差異も気にせず使えるぜよ
971 名前:デフォルトの名無しさん mailto:sage [2018/01/03(水) 20:21:48.88 ID:vVUVg3Hi.net] Perl習得も今年の目標の一つなんだけど Linuxの環境構築しておいた方がいい? それともwin64でもサクサク動かせる?
972 名前:デフォルトの名無しさん mailto:sage [2018/01/04(木) 11:48:53.39 ID:vxw86c0g.net] windows環境でperlなんてまず使わないだろうし、linux環境構築したほうがいいんじゃない?shも覚えるし。。。 webページ作りたいならperlはやめとけ
973 名前:デフォルトの名無しさん mailto:sage [2018/01/04(木) 18:26:44.77 ID:Eqt08FX4.net] >>939 どうしてもっていうならWindowsでもいいとは思うがいまいち面倒かも知れない。 知っての通りファイルシステムやその他細かい点が色々違うから。 かといってわざわざ Linux 動く環境を作るのは面倒だという場合は Windows Subsystem for Linux 使えばいい。これだと Kernel は Linux のふりをして動く Windows になって、その他は Linux とほぼ同じだ。 Windows 内のファイルは /mnt/c/ にマウントされていて Windows 用の コマンドも(全てではないと思うが)使える。
974 名前:デフォルトの名無しさん mailto:sage [2018/01/04(木) 18:30:15.45 ID:Eqt08FX4.net] 参考 https://qiita.com/Aruneko/items/c79810b0b015bebf30bb
975 名前:デフォルトの名無しさん mailto:sage [2018/01/04(木) 18:51:32.73 ID:M2GmV8ZJ.net] 要はダクトテープだから それを必要とする環境で使うのが一番 日常的にいろんな作業をlinux上でしてるなら、きっといろいろ役立つ そうでないなら用途が見つからない
976 名前:デフォルトの名無しさん mailto:sage [2018/01/04(木) 21:49:12.83 ID:bZ/07R3T.net] ありがとう、こっちの住民は親切で助かったよ WSLはもっと調べて導入検討するわ >>943 仕事でかなりLinuxは使ってるよ。特にVMは仕事で必須なんで 一からセッティングしてる どうしても起動系とかハード周りになると Perlの知識ないときつい部分が出てきたんで
977 名前:デフォルトの名無しさん [2018/01/05(金) 19:25:38.46 ID:T2NhU/kF.net] WSLは結構便利だと思うよ。何せWindows側のコマンド動くし、起動時にWindows側のPATHを /mnt/c 以下のディレクトリとして引き継いでくれるし。 前にKotlinをインストールした時はWindows側で C:\kotlinc 以下にインストールしてその下の bin に PATH 通しておいたら WSL の方でもそのままそれが使えた(JavaVMは別途インストールしたけどね)。 こんな感じで共有が当たり前のようにできる。 まあしかし今のところサーバー用のプログラムは完全には動かないだろうからサーバーとしての動きを期待するならやはり VirtuslBox とかで Linux 動かした方が良いだろうね。 または古いPC等に本当にインストールする。
978 名前:デフォルトの名無しさん [2018/01/05(金) 22:44:53.33 ID:2xeG2hRa.net] ファイルにロックをかけないでロックされているか調べる方法あったらやり方教えて flockだとロックかけちゃうのでだめです
979 名前:デフォルトの名無しさん mailto:sage [2018/01/05(金) 23:02:38.22 ID:/B3nNmE2.net] アトミックが保証されてるコマンドが必要とかそんなことになるような
980 名前:デフォルトの名無しさん [2018/01/06(土) 06:45:30.55 ID:MH4bKWED.net] fcntl のマニュアルには、できるようなことが書かれてるけどどうか。 申し訳ないが実際に試してみるほど暇じゃないから、役に立つかどうかは自分で判断してほしい。
981 名前:デフォルトの名無しさん mailto:sage [2018/01/06(土) 11:11:20.45 ID:3YD8ke1c.net] ロックしていないのに、ロックしていることを調べるとはこれ如何に。 まぁ、一般には、pidを別ファイルに保存しておいて占有するプロセスをはっきりさせるんじゃないかな〜 ハードリンクとkill -0あたりで調べてみるとよろし??
982 名前:デフォルトの名無しさん mailto:sage [2018/01/06(土) 11:27:28.32 ID:uhIItiyd.net] セマフォの処理はてきとーに作ってもだいたい動くんだけど、 極まれにおかしくなる 完璧に作ろうと思うとなかなか大変 っていうか、OSが提供してなかったら無理
983 名前:デフォルトの名無しさん [2018/01/06(土) 23:54:48.69 ID:aO8vJyO+.net] >>946 ちょっとぐらいロック掛かってもいいじゃん。 F_SETLKなら他がロックしてたら待たずに即エラーになるんだし。 エラーにならずにロックできたら他にロックしてるやつは居なかったってことだよ。
984 名前:デフォルトの名無しさん [2018/01/06(土) 23:56:53.89 ID:aO8vJyO+.net] あ、ごめん。fcntl()でのロックのはなしじゃなかったか。じゃあfcntl()使って。 使えないOSの場合は何かテクニックがあると思うがその場合はOSを書いてくれないと誰も答えられないと思う。
985 名前:デフォルトの名無しさん mailto:sage [2018/01/07(日) 02:29:51.54 ID:6djc4wO2.net] >>946 あっ、もしも、今使っているかどうかを調べたいならfuserコマンドかな? windowsはしらぬ
986 名前:デフォルトの名無しさん [2018/01/07(日) 06:11:20.40 ID:VUVSKv67.net] まあ落ち着け。まずは何のためにしたいのかということが重要だと思うよ。 ロックを試みることで他のプロセスの邪魔をしたくないというのも目的によっては理解できる。 目的によってはデータベースを使うのが最善かも。
987 名前:デフォルトの名無しさん mailto:sage [2018/01/07(日) 12:06:33.05 ID:esrWpXaw.net] >>946 > ファイルにロックをかけないでロックされているか調べる方法あったらやり方教えて 不可能だよ なぜなら、仮にそういう関数が有ったとしても ロックされていると判断した1ナノ秒後には ロックが解除されてるかもしれないから もちろんその逆もありうる つまり関数を実行している時点では正しかったかもしれないが 関数から結果の戻り値を取得した段階では 間違った結果になってるかもしれない
988 名前:デフォルトの名無しさん mailto:sage [2018/01/07(日) 13:16:21.35 ID:9kbWRuZM.net] だから不可能では無いんだよな その時点でそうだったことは判る でも、その情報を元に何かをすることが出来ないので、 情報の使いみちが無い
989 名前:デフォルトの名無しさん [2018/01/07(日) 17:39:55.82 ID:xuWfGrV5.net] >>953 fuserはオープンしてるプロセス出すだけなのでロックしてるかどうかはわからない。 lsofだとそこまで出る。
990 名前:デフォルトの名無しさん [2018/01/07(日) 17:43:16.42 ID:xuWfGrV5.net] >>956 使い道は単に確認するだけならあると言えるんじゃないか? lsofコマンドみたいな確認するだけのコマンドもあるしな。 まあでもほとんどない事は確かだな。やはり自分でロックして成功するかどうかで見た方が良い。
991 名前:938 [2018/01/07(日) 17:58:29.25 ID:VUVSKv67.net] そのファイルに対して何かしたいとはどこにも書かれていないんだけどな。 彼が充分に説明しないのが悪いというなら確かにその通りだが。
992 名前:デフォルトの名無しさん mailto:sage [2018/01/08(月) 02:39:29.72 ID:3kxjIyqg.net] コマンドプロンプトを自動で開いてperl aaa.txtを自動起動させることはできませんか? OSはwin7です 目的は複数のperlファイルを数秒で起動することです 日に何度かやるので、手間を省くために1個のperlプログラムを実行すれば10個のコマンドプロンプトが開かれてaaa1からaaa10まで全部実行、みたいにしたいです
993 名前:デフォルトの名無しさん [2018/01/08(月) 03:02:25.00 .net] >>960 できるっちゃできるけど、その起動をPerlでやる必然性あるの? バッチファイルでやればよくね? perl_start.batに start perl aaa1.txt start perl aaa2.txt みたいに書き連ねりゃいいだけじゃん
994 名前:デフォルトの名無しさん mailto:sage [2018/01/08(月) 16:46:09.77 ID:QsqxlxVF.net] そのbatファイルをタスク登録(ログオン時実行)とかにしとけば自動実行されるしね
995 名前:デフォルトの名無しさん mailto:sage [2018/01/08(月) 18:09:00.53 ID:uJ83jHj4.net] perl関係ねえ
996 名前:デフォルトの名無しさん [2018/01/23(火) 09:36:50.60 ID:vYqw+N7N.net] open(ロック用ファイルハンドル,ロック用ファイル); flock(ロック用ファイルハンドル,2); unlink(ロック用ファイル); close(ロック用ファイルハンドル); #ロック解除 このようにロックを解除する前にロック用ファイルを削除するのは何か問題ありますか? ロック解除したあとにロック用ファイルを削除するとロックに隙間ができるので
997 名前:デフォルトの名無しさん [2018/01/23(火) 10:33:50.77 ID:ytLWcXDj.net] >>964 flock使うならファイル削除しなきゃいいんだよ。そうすれば隙間はできない。 ファイル削除したいならopenの時のモードで O_EXCL | O_CREAT も指定しておいてエラーが出るかどうかで判別する。 エラーなくオープンできたら成功で、必要な処理が終わったらファイルをクローズする。 ただしこの方法はUNIX系OS以外では通用するかどうかわからないのと、NFS越しのファイルでは使えないかも知れない。 NFS越しでも使えるファイルロックは多分fcntl()のF_SETLKとかだろうと思う(しかしこれもまたOSしだいだ)。
998 名前:デフォルトの名無しさん [2018/01/23(火) 10:34:51.22 ID:ytLWcXDj.net] ごめん。訂正。 ファイルクローズするではなくて削除だ。
999 名前:デフォルトの名無しさん mailto:sage [2018/01/23(火) 12:02:42.65 ID:N8Mjx+M1.net] >>964 flockで相互排他する場合
1000 名前:普通はファイル削除しない 削除で隙間はできない。但し別プロセスがファイル作成するなら 隙間が生じるように感じるかもしれない [] [ここ壊れてます]