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/
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 名前:普通はファイル削除しない 削除で隙間はできない。但し別プロセスがファイル作成するなら 隙間が生じるように感じるかもしれない [] [ここ壊れてます]
1001 名前:デフォルトの名無しさん [2018/01/23(火) 12:28:01.19 ID:f+jO8q2F.net] >>967 感じるではなくロックとして機能しないよね?
1002 名前:デフォルトの名無しさん mailto:sage [2018/01/23(火) 19:08:17.77 ID:N8Mjx+M1.net] >>968 ファイルシステムから見ると削除して作成すると、同じファイル名でも別ファイルになる 排他処理は同じファイルを使ってるもの同士なら出来る 例えばopenしたものをずっと使い続けるプロセス同士なら、削除された後でも相互排他が出来る
1003 名前:デフォルトの名無しさん mailto:sage [2018/01/23(火) 20:56:31.43 ID:wO1dM6nx.net] >>969 3つ以上のプロセスで必ず破綻するように思うが。 いや2つでも2回目でダメになるか。
1004 名前:デフォルトの名無しさん [2018/01/23(火) 22:04:43.15 ID:ZqrAOfGF.net] あ、ずっとオープンしっぱなしならその後削除されても大丈夫ってことか。 それはそうだな。なんか危うさを感じるが。
1005 名前:デフォルトの名無しさん mailto:sage [2018/01/30(火) 21:14:29.11 ID:SNmuV+Ws.net] ヒアドキュメントをファイルに出力する時に、 print $out <<"EOC"; ならokで、 print $out << "EOC"; だと駄目なのは何故?
1006 名前:デフォルトの名無しさん mailto:sage [2018/01/31(水) 01:11:29.08 ID:ajZ2gLGd.net] >>972 << はビットシフト演算子でもあるので、優先順位的に $out << "EOC" として解釈されちゃうから…? print $out (<< "EOC"); や print << "EOC"; で通るならそうだと思う。
1007 名前:デフォルトの名無しさん mailto:sage [2018/01/31(水) 01:46:30.10 ID:PKL4UNme.net] <<の直後が空白文字だと空白文字自体が識別子とみなされる と、とある本に書いてあった
1008 名前:デフォルトの名無しさん mailto:sage [2018/01/31(水) 03:10:45.37 ID:ajZ2gLGd.net] <<964 perldoc.jp/docs/perl/perlop.pod#Regexp32Quote-Like32Operators > <<EOF <略> > 識別子がクォートされていない場合は、<< と識封ハ子の間に 空白を入れてはいけません。 > (もし空白を入れると、空識別子として扱われます; これは有効で、 最初の空行にマッチ > するようになります。) 昔は print <<; document here. print "foo"; みたいにできたけど、今これやると警告が出る。<<""; なら OK。 #!/usr/bin/perl -w use strict; sub E { print "\n6\n" } open my $out, '>&STDOUT' or die $!; print $out <<""; 1 print $out (<< 'E', "3\n", <<''); 2 E 4 print $out << 'E'; # Argument "E" isn't numeric in left bitshift (<<) "5"; # Useless use of a constant ("5") in void context E
1009 名前:デフォルトの名無しさん [2018/01/31(水) 09:25:45.73 ID:H6iQ2Lk/.net] >>972 <<の直後のスペースの有無? そりゃシェルスクリプトみたいな <<EOL のような何もクオートしない形式も許している都合でシェルの文法に合わせたからではないかな。
1010 名前:デフォルトの名無しさん [2018/01/31(水) 09:27:00.94 ID:H6iQ2Lk/.net] あ、すまん。リロードせずに書いてしまった。既に回答書かれてたな。
1011 名前:デフォルトの名無しさん mailto:sage [2018/01/31(水) 19:05:43.73 ID:vCtk0IVE.net] スペース空けるの禁止ならそれでいいんだけど、 ファイルハンドラが無いならスペースがあってもokなのが納得行かない
1012 名前:デフォルトの名無しさん [2018/02/01(木) 07:25:10.05 ID:Msx4nr7P.net] 気持ちは分からなくもないが、変数の場合はしょうがない。>>973 に書かれてるとおりだ。
1013 名前:デフォルトの名無しさん [2018/02/01(木) 12:35:16.66 ID:Msx4nr7P.net] 誰もつっこまないが、 $out->print( << "EOC"); と書けばいいと思う。 bless されてない場合は昔は use IO::Handle; が必要だったが今では perl -e 'STDOUT->print("abc")' なんてこともできる。 個人的には、ファイルハンドルの後に , があるというアホな間違いをせずに
1014 名前:マむというところで助かっている。 [] [ここ壊れてます]
1015 名前:デフォルトの名無しさん [2018/02/02(金) 07:43:01.24 .net] ヒアドキュメントなんてプログラムを読みにくくする諸悪の根源
1016 名前:愛知人 [2018/02/02(金) 12:10:04.50 .net] Wikipediaの12桁トリップの生成スクリプトで12桁以上のトリップキーの変換が5chの結果と合いません。どうすれば合いますか。
1017 名前:デフォルトの名無しさん mailto:sage [2018/02/03(土) 08:12:51.87 ID:hZgGNvq2.net] Archive::Rar を使って、中身のファイルサイズを取得するにはどうすれば 無理なら、代わりに何を使えばいい?
1018 名前:デフォルトの名無しさん [2018/02/03(土) 09:38:14.14 ID:nCUOym6+.net] rar コマンドをインストールしてないから CPAN でソースコードを見ただけだが、List を呼べば rar の出力をパースして list に入れてくれるみたいだよ。 試してないから勘違いしてるかもしれないけど、使ってるならソースコードの List, _AddToList 辺りを読めばいいかも。
1019 名前:デフォルトの名無しさん mailto:sage [2018/02/03(土) 10:13:43.25 ID:hZgGNvq2.net] Listはファイル名一覧しか渡してくれないんだよな
1020 名前:デフォルトの名無しさん mailto:sage [2018/02/03(土) 10:20:52.21 ID:hZgGNvq2.net] -alldata を指定すれば、->{size} で見えるのか どうせやってるのは、rar.exe の出力を読んでテキスト解析してるだけなので、 似たようなことを自前でやった
1021 名前:デフォルトの名無しさん [2018/02/03(土) 14:48:15.33 ID:nCUOym6+.net] マニュアルには書かれてなかったのか……まあ、信頼性の低い方法だしね。
1022 名前:デフォルトの名無しさん mailto:sage [2018/02/04(日) 11:13:30.15 ID:22FJuDW8.net] 出力される表の形式に似せたファイル名とかにすると、多分騙されるんだろうな
1023 名前:デフォルトの名無しさん [2018/02/09(金) 18:18:02.60 ID:U+AwHosU.net] >>981 KENT WEBの見にくさを見てから言ってくれ
1024 名前:デフォルトの名無しさん [2018/02/09(金) 20:07:25.83 ID:VqU2EMqO.net] ヒヤー
1025 名前:デフォルトの名無しさん mailto:sage [2018/02/09(金) 20:21:39.58 ID:67QUQBJT.net] 他言語弄るとき、まずヒアドキュメント探すつっても過言じゃ無いんだが…
1026 名前:デフォルトの名無しさん [2018/02/09(金) 20:58:36.22 .net] >>989 printはもっと読みにくいに決まってるだろ テンプレートしかあり得ん
1027 名前:デフォルトの名無しさん mailto:sage [2018/02/09(金) 21:23:05.06 ID:ukY4fsl4.net] here => <<~EOM インデント 出来る EOM これ出来るようになって昔書いたソースが結構綺麗になった
1028 名前:デフォルトの名無しさん mailto:sage [2018/02/13(火) 11:06:08.61 ID:b5aNFBbA.net] ソースにhereドキュメントが多量に含まれてる時点で キレイじゃねーよw
1029 名前:デフォルトの名無しさん [2018/02/13(火) 21:01:03.94 .net] それな
1030 名前:デフォルトの名無しさん [2018/02/13(火) 21:31:52.97 ID:RM6vxbUw.net] ヒアドキュメントはうまくやると配布するファイルをプログラムのファイル一つにまとめられる。 そういうのは何かのプログラムのインストーラやアップデータには良いかも知れない。
1031 名前:デフォルトの名無しさん mailto:sage [2018/02/14(水) 01:07:32.41 ID:eq6pqk6J.net] 全てのスクリプト言語には、ファイルを一つに結合する機能と コードを圧縮暗号化する機能が必要な気がする JSにあるアレね
1032 名前:デフォルトの名無しさん mailto:sage [2018/02/14(水) 02:24:43.93 ID:kFW7p5Uz.net] SQL使うときだなヒアドキュメントは ORM嫌い
1033 名前:デフォルトの名無しさん [2018/02/14(水) 09:08:25.15 ID:1w/9kxzB.net] ああ。そういやSQL文に使ったなあ。 長くなるのが普通だもんなあれって。
1034 名前:デフォルトの名無しさん [2018/02/14(水) 13:42:37.08 ID:eEfPvNoj.net] $str = <<'EOF'; エスケープの必要性から解放されたい場合もあるんだよなあ。 これに相当することを C でやるには別ファイルに分けて Makefile で str_escaped : str_raw sed 's/\([\"\\]\)/\\\1/g ; s/^/\"/ ; s/$/\"/ ;' < str_raw > str_escaped みたいにして C の方で str[] = #include "str_escaped" とする必要がある。Perl は本当に便利だ。 EOF
1035 名前:デフォルトの名無しさん mailto:sage [2018/02/14(水) 13:50:00.92 ID:L6K2VJP2.net] Pealで正規表現なら、デミリタ変えるだけでいいじゃん 可読性下がるけど $hoge =~ m!/!;!g; みたいな
1036 名前:デフォルトの名無しさん mailto:sage [2018/02/14(水) 19:56:29.61 ID:JCOq4GRt.net] 終わりを示す文字列にQEDを使う
1037 名前:デフォルトの名無しさん mailto:sage [2018/02/14(水) 20:05:36.90 ID:eq6pqk6J.net] それが厨二病
1038 名前:990 [2018/02/14(水) 22:39:20.53 ID:eEfPvNoj.net] >>1001 何を言いたいのかさっぱり解らないが、ひょっとして >>1000 に興味持ってくれた? そうだとしてもやっぱり何を言いたいのかさっぱり解らないのだが。 ちなみに Perl と C を比較してるのであって、sed は関係無いよ。 「これに相当すること」の「これ」とは >>1000 全体を Perl コードとして実行した結果のことで、正規表現は何の関係も無い。 大筋としては ・元のテキストはエスケープなどの加工をしないでおきたい。 ・エスケープが必要な場合でも目視と手作業なんて論外。自動化したい。 ・実行時に別ファイルから読むのではなくプログラムに埋め込みたい。 という前提があって Perl と C でそれぞれどのように実現するかという話だ。 Perl にいくつもあるクォーティングの正確な仕様、Makefile の仕様、C の言語仕様を知ってる人向けだから無理しなくてもいいよ。 >>1000 に対してじゃなかったのならごめんね。自意識過剰だったね。
1039 名前:デフォルトの名無しさん mailto:sage [2018/02/15(木) 09:02:00.83 ID:8SUVFt/S.net] > 自意識過剰だったね。 そのとおりだろうなw
1040 名前:デフォルトの名無しさん [2018/02/15(木) 23:40:07.21 .net] Perlコードでもレスでも変わらない真実 ぎっしり長文書くやつは無能
1041 名前:デフォルトの名無しさん mailto:sage [2018/02/15(木) 23:41:00.25 ID:8SUVFt/S.net] 短文なら有能!俺とか!
1042 名前:デフォルトの名無しさん [2018/02/16(金) 10:21:33.25 ID:OW1usLwi.net] 俺も俺も
1043 名前:デフォルトの名無しさん mailto:sage [2018/02/16(金) 18:54:42.22 ID:ZDCA61/e.net] die;
1044 名前:デフォルトの名無しさん [2018/02/16(金) 20:51:22.93 ID:YSXjevvC.net] ひでぶ
1045 名前:1001 [Over 1000 Thread.net] このスレッドは1000を超えました。 新しいスレッドを立ててください。 life time: 1457日 21時間 15分 0秒
1046 名前:過去ログ ★ [[過去ログ]] ■ このスレッドは過去ログ倉庫に格納されています