Perlについての質問箱 63箱目 at TECH
[2ch|▼Menu]
[前50を表示]
900:デフォルトの名無しさん
17/10/02 13:31:28.69 SGi8KvwU.net
>>870
それどころか同名のロックファイルを作れるから 面倒なバグを生むよな
初心者がほんとによく作るバグが
「ロックを解放したらロックファイルも削除する」

901:デフォルトの名無しさん
17/10/02 18:11:00.25 zZtvHqX+.net
perl6についてスレすらないけどみんな無関心なの?

902:デフォルトの名無しさん
17/10/02 19:15:38.66 7PTk8Wzs.net
違う言語だからなあ
そんなんに慣れるくらいなら別の言語やる

903:デフォルトの名無しさん
17/10/02 19:19:54.66 zZtvHqX+.net
とんくす
やっぱそういう認識なんやね

904:デフォルトの名無しさん
17/10/02 19:54:37.34 W4ke7gLE.net
使えるとこではPerl使いたいけど
いよいよとなったら次はpythonかなぁ

905:デフォルトの名無しさん
17/10/02 20:13:00.81 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:デフォルトの名無しさん
17/10/02 20:14:57.29 7PTk8Wzs.net
pythonも新バージョンへに移行したくない同じ現象になってて、
次の言語が待たれている
perlからpythonはいろいろ新しいアイディアが追加されて、
より面白い言語になったけど、
次の言語では何が追加されるんだろう

907:デフォルトの名無しさん
17/10/02 20:19:16.81 W4ke7gLE.net
>>877
個人的にpythonは3から入ったから、
早く移行完了して欲しいw

908:デフォルトの名無しさん
17/10/03 13:20:15.84 inJ+8qV1.net
>>876
それはロック解除されてない
それは、毎回新しくロックファイル作ってロックする方法なら
常にロック出来るというだけ

909:デフォルトの名無しさん
17/10/05 23:33:51.09 1JBojDVn.net
ロック状態を示すファイルを削除したら、その擬似的なロックが、解放されるのは当たり前だとおもうのだけど、結局何がしたいんだ?

910:デフォルトの名無しさん
17/10/07 08:15:23.63 6wQnopu1.net
基本的なことだったと思うのですが、忘れてしまって調べても見つけられなかったので質問させてください。
print関数のFHのようなスペースを伴わずに渡す第一引数って
* なんていう名前でしたっけ
* どうやって定義するんでしたっけ

911:デフォルトの名無しさん
17/10/07 11:13:34.60 lC4cuCCD.net
>print関数のFHのようなスペースを伴わずに渡す第一引数
???
何を指しているのかよくわからないし、定義するってどういうことだ?
print FH "hoge", "fuga";
print "hoge", "fuga";

912:デフォルトの名無しさん
17/10/07 12:02:43.75 6wQnopu1.net
>>882
自分で定義する関数にprintのFHような渡し方をする引数を定義するということです。
スロットとかいう名前だった気がしたのですが、どうも違うようで

913:デフォルトの名無しさん
17/10/07 12:05:55.88 6wQnopu1.net
あ、スペースを伴わずに、じゃない
カンマを伴わずに…

914:デフォルトの名無しさん
17/10/07 12:33:54.72 lC4cuCCD.net
間接オブジェクト構文
URLリンク(perldoc.jp)
new Hoge 'foo', 'bar';
Hoge->new('foo', 'bar');
普通にメソッドを定義すればよく、呼び出す時の書き方が違うだけ

915:デフォルトの名無しさん
17/10/07 13:02:49.57 5L99WECK.net
>>885
そうだったー!!
ありがとうございます!!!

916:デフォルトの名無しさん
17/10/09 21:30:40.03 EtpsZHXA.net
で、何をしたのかね?

917:デフォルトの名無しさん
17/10/09 21:33:56.63 EtpsZHXA.net
うう。リロード忘れ。

918:デフォルトの名無しさん
17/10/12 16:28:32.59 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:デフォルトの名無しさん
17/10/12 22:11:19.78 5bT9xlHu.net
そのモジュールのことは知らないけど、とりあえず「cpp が無い」と言ってるようだね。
make と C をインストールすればいいと思うよ。

921:デフォルトの名無しさん
17/10/12 22:58:50.94 4iOww/iD.net
makeがちゃんとした文法になる日は来るんだろうか

922:デフォルトの名無しさん
17/10/13 09:46:32.50 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
17/10/13 21:28:27.18 4p1OUNBb.net
問題は解決しましたか? Solaris のことは分からないのでこれ以上お役に立てそうにありません。
まだ解決していないのなら perlsolaris というマニュアルがあるはずですから読んでみてください。
その上で、Solaris のことをよく知っている人に聞くのがよろしいかと思います。

924:デフォルトの名無しさん
17/10/14 22:03:44.55 7hq5DvWK.net
ダメですね。。
もうちょっとネットで調べてみます。

925:デフォルトの名無しさん
17/10/20 15:42:18.30 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:デフォルトの名無しさん
17/10/20 17:53:57.14 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
17/10/21 02:31:17.21 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
17/10/21 02:40:01.52 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
17/10/21 03:03:22.99 JUnyPSe2.net
何度もすみません。できました。
$str=Encode::encode('euc-jp',$str);Encode::JP::H2Z::h2z(\$str);
$str=Encode::decode('euc-jp',$str);
でした。
> 886
encodeを使うアドバイスありがとうございました。助かりました。

931:デフォルトの名無しさん
17/10/28 14:12:24.45 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:デフォルトの名無しさん
17/10/28 14:36:19.07 yzxLOqe0.net
>>900
eval {require DBD::SQLite; }
の最後に ; が無い

933:デフォルトの名無しさん
17/10/28 15:04:21.68 86e9E3uL.net
助かりました。ありがとうございました^−^

934:デフォルトの名無しさん
17/11/01 19:40:06.83 FhCkv10M.net
^−^

935:デフォルトの名無しさん
17/11/01 21:59:57.34 uQFQAfJE.net
(^_^;

936:デフォルトの名無しさん
17/11/22 19:37:11.64 kPeZVcC+.net
(^──────^)

937:デフォルトの名無しさん
17/11/22 22:55:47.27 oTRzAO+2.net
(^________________^;

938:デフォルトの名無しさん
17/11/23 00:10:28.02 kTaFEskE.net
:-)

939:デフォルトの名無しさん
17/11/23 18:54:17.85 8ru0xFWh.net
:──────)

940:デフォルトの名無しさん
17/12/05 14:22:42.29 nNRKwkIq.net
APIアクセスでのレスポンスをDumperしたら下みたいに返ってきたんだけど
'URLリンク(hogehoge.hoge)'を取得するにはどうアクセスしたらいいです?
$VAR1 = bless( {
'url' => bless( do{\(my $o = 'URLリンク(hogehoge.hoge)')}, 'URI::https' )
}, 'Entity::Tag' );

941:デフォルトの名無しさん
17/12/07 10:28:22.13 OnTOXu6z.net
ファイルに書くときに、closeをせず明示的にフラッシュしたいんだけど
どうしたらいいの?
selectやautoflushは明示的ではないのでできれば使いたくない

942:デフォルトの名無しさん
17/12/07 10:57:31.26 ULPWPGO9.net
>>910
URLリンク(perldoc.jp)
> IO::Handle オブジェクトには flush メソッドもあります。
#!/usr/bin/perl -w
use strict;
for (1..10) {
  print '.';
  sleep 2;
  STDOUT->flush;
}
print "!\n";

943:デフォルトの名無しさん
17/12/26 21:57:47.00 PAyaH1Yv.net
=~ 正規表現で中身を置換ができる事は理解できたんですが、
中身を入れ替えたいん


944:カゃなく別の変数に入れたいときはどう書けばいいんでしょうか? 現在の自分の知識だと、例えば引数にとった文字列を置換してある変数に入れるとき $_ = $ARGV[0]; $_ =~ s/mukimuki/mukemuke/; $hoge = $_; こんな風に無駄に $_ を経由した書き方になってしまいます。 ほかの言語風に言うと $hoge = $ARGV[0].replaceWith(s/mukimuki/mukemuke/); こんな感じで書きたいのですが。



945:デフォルトの名無しさん
17/12/26 22:06:02.40 Vj82fll/.net
($hoge = $ARGV[0]) =~ s/mukimuki/mukemuke/;
こう書くのがセオリーかな

946:デフォルトの名無しさん
17/12/26 22:37:33.36 3f/g1GW0.net
>>912
Perl 5.14.0 以降なら /r も使える
URLリンク(perldoc.jp)

947:902
17/12/27 03:38:54.44 885vGvc2.net
>>913-914
的確なご回答ありがとうございます。
試してみます。

948:デフォルトの名無しさん
17/12/27 15:34:07.71 yY2jVcTO.net
perlスクリプトの稼働率は今どれくらいなんだろうか?
PHP流行から、徐々にフェードアウトしてるし
PHPオワコン説が流れだした頃から、perl6が登場したけど
存在感がないんだよなー

949:デフォルトの名無しさん
17/12/27 19:01:25.94 Rj9CQ2gH.net
DeNAとかmixiとかがPerIだけど、置き換えが進むだろうし
新規でメインスクリプトでってのはもうなかなか無いだろうね

950:デフォルトの名無しさん
17/12/27 19:28:49.86 tmtXLaBC.net
ちょっと何かするときはperl使うよ。慣れてるので何も見ずに書けるから。
phpがなぜ出てくるのかわからん。使ったことないけどあれwebアプリ用でしょ

951:デフォルトの名無しさん
17/12/27 19:55:51.39 bfruSbpL.net
ま、しかし、PerlはWebでしか使われてないわけではないからな。

952:デフォルトの名無しさん
17/12/27 19:56:46.60 bfruSbpL.net
>>918
多分Webプログラムでの事しか思い浮かばなかったのだろう。

953:デフォルトの名無しさん
17/12/27 23:26:51.61 +qI9wAl8.net
素人に毛が生えたレベルの低スキル層でも実用的なwebアプリ作れる点でPHPは凄いよ。
フレームワークの種類も情報量も多いし。
CLIも作りやすくなってる。一からCLIアプリ作るときにPHP使う優位性は無いけど
webアプリに付随するものとかなら十分。

954:デフォルトの名無しさん
17/12/28 00:19:43.19 O5Tikz8c.net
フォーマット変換とかテキスト一括処理系は、perlでなれるとどれもしっくりこないんだよなぁ。
shを補完する感じで使ってる最近は。
cとセットで使いたくなったらpython?を勉強するかもしれない。

955:ゆっきー
17/12/28 03:17:44.94 NczIEmFQ.net
10年ぐらい前の入門書で、カンマとドットを間違えて
人工衛星が明後日の方向に飛んで言ったとか何とか、小中学生ぐらいの時に読んだ記憶が有る。

956:デフォルトの名無しさん
17/12/28 09:29:38.01 wX0EFIYP.net
そういやそんなことあったなあ。

957:デフォルトの名無しさん
17/12/28 18:55:35.20 Er3In3fn.net
こんなのあったのな。知らなかったよ。
URLリンク(qiita.com)

958:デフォルトの名無しさん
17/12/28 19:24:59.40 Ur1ocpFu.net
粗太陽センサーと精太陽センサーの取得先を取り違える

959:デフォルトの名無しさん
17/12/28 20:38:10.17 9xNc6XZe.net
【IS自爆テロ】「死んだら天国へ行ける」 <九条は必要> 「死んだら靖国に祀られる」【神風特攻隊】
スレリンク(liveplus板)
【東海アマ】安倍晋三はどんな殺され方 <祖父の代りに絞首刑> 公約反故は自殺に繋がる【世界教師】
スレリンク(liveplus板)

960:デフォルトの名無しさん
17/12/31 12:51:33.73 6G2PkezB.net
>>923
それ、打ち上げ延期

961:デフォルトの名無しさん
18/01/01 05:59:15.42 4wMbPbHX.net
>>928
あ、それで済んだの?そうか、じゃあ都市伝説か。

962:デフォルトの名無しさん
18/01/01 12:14:32.50 rcsYJFXY.net
>>918
PHPが重宝されてるのはDB連携のPDOが便利すぎてハゲるから
PDO一つあれば、オラクル、ポスグレ、mysql、sqlサーバー、DB2、SQLITEなんでも
同じ記述で接続できるからな
ただ、関数定義に一貫性がない、変数スコープのグローバル化が面倒、
型変換で楽しいバグが発生するなど
素人向けと思って甘く見ると大火傷する諸刃の剣

963:デフォルトの名無しさん
18/01/01 12:30:16.97 zAUlE2YO.net
手に馴染んだ道具として今後もperlを使うだろうな
rubyに持ち替えた方が使い勝手はいいんだけど、
そもそもrubyが無い環境が多いので使えなくては意味がない

964:デフォルトの名無しさん
18/01/01 18:55:01.09 FPPCegVg.net
perlの持ち替えならpythonがいいと思う。
特に最近のlinux系はpythonものが増加傾向だし。
でもまあ、perlあればokじゃね?というのが正直なところ

965:デフォルトの名無しさん
18/01/02 12:32:50.81 Q+9WD3Xu.net
今年の目標は、新たに言語を勉強することなんだが
Perl、Python、Rubyの違いとそれぞれのメリットを
教えてくだされ

966:デフォルトの名無しさん
18/01/02 12:41:01.44 UbsIsL+c.net
perl どこにでもある
python 人工知能に強い
ruby Railsが使える

967:デフォルトの名無しさん
18/01/02 16:34:43.56 pQ/3ped7.net
>>930
DBはPerlでもDBIと各DB用のDBIモジュールがあれば同じようにアクセスできるよ。
てか、その辺は他の言語でもだいたい同じようにできないか?みんなJavaのJDBCの影響受けて接続部分で違いを吸収してなんとかしてるように思うんだが。

968:デフォルトの名無しさん
18/01/02 16:36:32.56 pQ/3ped7.net
>>935訂正
> 各DB用のDBIモジュール
じゃなくて
各DB用のDBDモジュール

969:デフォルトの名無しさん
18/01/03 00:47:07.06 0mS9Giqv.net
>>935
なるほど、どこも似たような機能を実装してきてるわけか

970:デフォルトの名無しさん
18/01/03 01:45:39.60 mxmMGWxl.net
ORM使えば各DBのSQLの差異も気にせず使えるぜよ

971:デフォルトの名無しさん
18/01/03 20:21:48.88 vVUVg3Hi.net
Perl習得も今年の目標の一つなんだけど
Linuxの環境構築しておいた方がいい?
それともwin64でもサクサク動かせる?

972:デフォルトの名無しさん
18/01/04 11:48:53.39 vxw86c0g.net
windows環境でperlなんてまず使わないだろうし、linux環境構築したほうがいいんじゃない?shも覚えるし。。。
webページ作りたいならperlはやめとけ

973:デフォルトの名無しさん
18/01/04 18:26:44.77 Eqt08FX4.net
>>939
どうしてもっていうならWindowsでもいいとは思うがいまいち面倒かも知れない。
知っての通りファイルシステムやその他細かい点が色々違うから。
かといってわざわざ Linux 動く環境を作るのは面倒だという場合は
Windows Subsystem for Linux 使えばいい。これだと Kernel は
Linux のふりをして動く Windows になって、その他は Linux とほぼ同じだ。
Windows 内のファイルは /mnt/c/ にマウントされていて Windows 用の
コマンドも(全てではないと思うが)使える。

974:デフォルトの名無しさん
18/01/04 18:30:15.45 Eqt08FX4.net
参考
URLリンク(qiita.com)

975:デフォルトの名無しさん
18/01/04 18:51:32.73 M2GmV8ZJ.net
要はダクトテープだから
それを必要とする環境で使うのが一番
日常的にいろんな作業をlinux上でしてるなら、きっといろいろ役立つ
そうでないなら用途が見つからない

976:デフォルトの名無しさん
18/01/04 21:49:12.83 bZ/07R3T.net
ありがとう、こっちの住民は親切で助かったよ
WSLはもっと調べて導入検討するわ
>>943
仕事でかなりLinuxは使ってるよ。特にVMは仕事で必須なんで
一からセッティングしてる
どうしても起動系とかハード周りになると
Perlの知識ないときつい部分が出てきたんで

977:デフォルトの名無しさん
18/01/05 19:25:38.46 T2NhU/kF.net
WSLは結構便利だと思うよ。何せWindows側のコマンド動くし、起動時にWindows側のPATHを /mnt/c 以下のディレクトリとして引き継いでくれるし。
前にKotlinをインストールした時はWindows側で C:\kotlinc 以下にインストールしてその下の bin に PATH 通しておいたら WSL の方でもそのままそれが使えた(JavaVMは別途インストールしたけどね)。
こんな感じで共有が当たり前のようにできる。
まあしかし今のところサーバー用のプログラムは完全には動かないだろうからサーバーとしての動きを期待するならやはり VirtuslBox とかで Linux 動かした方が良いだろうね。
または古いPC等に本当にインストールする。

978:デフォルトの名無しさん
18/01/05 22:44:53.33 2xeG2hRa.net
ファイルにロックをかけないでロックされているか調べる方法あったらやり方教えて
flockだとロックかけちゃうのでだめです

979:デフォルトの名無しさん
18/01/05 23:02:38.22 /B3nNmE2.net
アトミックが保証されてるコマンドが必要とかそんなことになるような

980:デフォルトの名無しさん
18/01/06 06:45:30.55 MH4bKWED.net
fcntl のマニュアルには、できるようなことが書かれてるけどどうか。
申し訳ないが実際に試してみるほど暇じゃないから、役に立つかどうかは自分で判断してほしい。

981:デフォルトの名無しさん
18/01/06 11:11:20.45 3YD8ke1c.net
ロックしていないのに、ロックしていることを調べるとはこれ如何に。
まぁ、一般には、pidを別ファイルに保存しておいて占有するプロセスをはっきりさせるんじゃないかな〜
ハードリンクとkill -0あたりで調べてみるとよろし??

982:デフォルトの名無しさん
18/01/06 11:27:28.32 uhIItiyd.net
セマフォの処理はてきとーに作ってもだいたい動くんだけど、
極まれにおかしくなる
完璧に作ろうと思うとなかなか大変
っていうか、OSが提供してなかったら無理

983:デフォルトの名無しさん
18/01/06 23:54:48.69 aO8vJyO+.net
>>946
ちょっとぐらいロック掛かってもいいじゃん。
F_SETLKなら他がロックしてたら待たずに即エラーになるんだし。
エラーにならずにロックできたら他にロックしてるやつは居なかったってことだよ。

984:デフォルトの名無しさん
18/01/06 23:56:53.89 aO8vJyO+.net
あ、ごめん。fcntl()でのロックのはなしじゃなかったか。じゃあfcntl()使って。
使えないOSの場合は何かテクニックがあると思うがその場合はOSを書いてくれないと誰も答えられないと思う。

985:デフォルトの名無しさん
18/01/07 02:29:51.54 6djc4wO2.net
>>946
あっ、もしも、今使っているかどうかを調べたいならfuserコマンドかな?
windowsはしらぬ

986:デフォルトの名無しさん
18/01/07 06:11:20.40 VUVSKv67.net
まあ落ち着け。まずは何のためにしたいのかということが重要だと思うよ。
ロックを試みることで他のプロセスの邪魔をしたくないというのも目的によっては理解できる。
目的によってはデータベースを使うのが最善かも。

987:デフォルトの名無しさん
18/01/07 12:06:33.05 esrWpXaw.net
>>946
> ファイルにロックをかけないでロックされているか調べる方法あったらやり方教えて
不可能だよ
なぜなら、仮にそういう関数が有ったとしても
ロックされていると判断した1ナノ秒後には
ロックが解除されてるかもしれないから
もちろんその逆もありうる
つまり関数を実行している時点では正しかったかもしれないが
関数から結果の戻り値を取得した段階では
間違った結果になってるかもしれない

988:デフォルトの名無しさん
18/01/07 13:16:21.35 9kbWRuZM.net
だから不可能では無いんだよな
その時点でそうだったことは判る
でも、その情報を元に何かをすることが出来ないので、
情報の使いみちが無い

989:デフォルトの名無しさん
18/01/07 17:39:55.82 xuWfGrV5.net
>>953
fuserはオープンしてるプロセス出すだけなのでロックしてるかどうかはわからない。
lsofだとそこまで出る。

990:デフォルトの名無しさん
18/01/07 17:43:16.42 xuWfGrV5.net
>>956
使い道は単に確認するだけならあると言えるんじゃないか?
lsofコマンドみたいな確認するだけのコマンドもあるしな。
まあでもほとんどない事は確かだな。やはり自分でロックして成功するかどうかで見た方が良い。

991:938
18/01/07 17:58:29.25 VUVSKv67.net
そのファイルに対して何かしたいとはどこにも書かれていないんだけどな。
彼が充分に説明しないのが悪いというなら確かにその通りだが。

992:デフォルトの名無しさん
18/01/08 02:39:29.72 3kxjIyqg.net
コマンドプロンプトを自動で開いてperl aaa.txtを自動起動させることはできませんか?
OSはwin7です
目的は複数のperlファイルを数秒で起動することです
日に何度かやるので、手間を省くために1個のperlプログラムを実行すれば10個のコマンドプロンプトが開かれてaaa1からaaa10まで全部実行、みたいにしたいです

993:デフォルトの名無しさん
18/01/08 03:02:25.00 .net
>>960
できるっちゃできるけど、その起動をPerlでやる必然性あるの?
バッチファイルでやればよくね?
perl_start.batに
start perl aaa1.txt
start perl aaa2.txt
みたいに書き連ねりゃいいだけじゃん

994:デフォルトの名無しさん
18/01/08 16:46:09.77 QsqxlxVF.net
そのbatファイルをタスク登録(ログオン時実行)とかにしとけば自動実行されるしね

995:デフォルトの名無しさん
18/01/08 18:09:00.53 uJ83jHj4.net
perl関係ねえ

996:デフォルトの名無しさん
18/01/23 09:36:50.60 vYqw+N7N.net
open(ロック用ファイルハンドル,ロック用ファイル);
flock(ロック用ファイルハンドル,2);
unlink(ロック用ファイル);
close(ロック用ファイルハンドル);  #ロック解除
このようにロックを解除する前にロック用ファイルを削除するのは何か問題ありますか?
ロック解除したあとにロック用ファイルを削除するとロックに隙間ができるので

997:デフォルトの名無しさん
18/01/23 10:33:50.77 ytLWcXDj.net
>>964
flock使うならファイル削除しなきゃいいんだよ。そうすれば隙間はできない。
ファイル削除したいならopenの時のモードで O_EXCL | O_CREAT も指定しておいてエラーが出るかどうかで判別する。
エラーなくオープンできたら成功で、必要な処理が終わったらファイルをクローズする。
ただしこの方法はUNIX系OS以外では通用するかどうかわからないのと、NFS越しのファイルでは使えないかも知れない。
NFS越しでも使えるファイルロックは多分fcntl()のF_SETLKとかだろうと思う(しかしこれもまたOSしだいだ)。

998:デフォルトの名無しさん
18/01/23 10:34:51.22 ytLWcXDj.net
ごめん。訂正。
ファイルクローズするではなくて削除だ。

999:デフォルトの名無しさん
18/01/23 12:02:42.65 N8Mjx+M1.net
>>964
flockで相互排他する場合


1000:普通はファイル削除しない 削除で隙間はできない。但し別プロセスがファイル作成するなら 隙間が生じるように感じるかもしれない



1001:デフォルトの名無しさん
18/01/23 12:28:01.19 f+jO8q2F.net
>>967
感じるではなくロックとして機能しないよね?

1002:デフォルトの名無しさん
18/01/23 19:08:17.77 N8Mjx+M1.net
>>968
ファイルシステムから見ると削除して作成すると、同じファイル名でも別ファイルになる
排他処理は同じファイルを使ってるもの同士なら出来る
例えばopenしたものをずっと使い続けるプロセス同士なら、削除された後でも相互排他が出来る

1003:デフォルトの名無しさん
18/01/23 20:56:31.43 wO1dM6nx.net
>>969
3つ以上のプロセスで必ず破綻するように思うが。
いや2つでも2回目でダメになるか。

1004:デフォルトの名無しさん
18/01/23 22:04:43.15 ZqrAOfGF.net
あ、ずっとオープンしっぱなしならその後削除されても大丈夫ってことか。
それはそうだな。なんか危うさを感じるが。

1005:デフォルトの名無しさん
18/01/30 21:14:29.11 SNmuV+Ws.net
ヒアドキュメントをファイルに出力する時に、
print $out <<"EOC";
ならokで、
print $out << "EOC";
だと駄目なのは何故?

1006:デフォルトの名無しさん
18/01/31 01:11:29.08 ajZ2gLGd.net
>>972
<< はビットシフト演算子でもあるので、優先順位的に
$out << "EOC" として解釈されちゃうから…?
print $out (<< "EOC"); や print << "EOC"; で通るならそうだと思う。

1007:デフォルトの名無しさん
18/01/31 01:46:30.10 PKL4UNme.net
<<の直後が空白文字だと空白文字自体が識別子とみなされる
と、とある本に書いてあった

1008:デフォルトの名無しさん
18/01/31 03:10:45.37 ajZ2gLGd.net
<<964
URLリンク(perldoc.jp)
> <<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:デフォルトの名無しさん
18/01/31 09:25:45.73 H6iQ2Lk/.net
>>972
<<の直後のスペースの有無?
そりゃシェルスクリプトみたいな <<EOL のような何もクオートしない形式も許している都合でシェルの文法に合わせたからではないかな。

1010:デフォルトの名無しさん
18/01/31 09:27:00.94 H6iQ2Lk/.net
あ、すまん。リロードせずに書いてしまった。既に回答書かれてたな。

1011:デフォルトの名無しさん
18/01/31 19:05:43.73 vCtk0IVE.net
スペース空けるの禁止ならそれでいいんだけど、
ファイルハンドラが無いならスペースがあってもokなのが納得行かない

1012:デフォルトの名無しさん
18/02/01 07:25:10.05 Msx4nr7P.net
気持ちは分からなくもないが、変数の場合はしょうがない。>>973 に書かれてるとおりだ。

1013:デフォルトの名無しさん
18/02/01 12:35:16.66 Msx4nr7P.net
誰もつっこまないが、
$out->print( << "EOC");
と書けばいいと思う。
bless されてない場合は昔は
use IO::Handle;
が必要だったが今では
perl -e 'STDOUT->print("abc")'
なんてこともできる。
個人的には、ファイルハンドルの後に , があるというアホな間違いをせずに


1014:マむというところで助かっている。



1015:デフォルトの名無しさん
18/02/02 07:43:01.24 .net
ヒアドキュメントなんてプログラムを読みにくくする諸悪の根源

1016:愛知人
18/02/02 12:10:04.50 .net
Wikipediaの12桁トリップの生成スクリプトで12桁以上のトリップキーの変換が5chの結果と合いません。どうすれば合いますか。

1017:デフォルトの名無しさん
18/02/03 08:12:51.87 hZgGNvq2.net
Archive::Rar を使って、中身のファイルサイズを取得するにはどうすれば
無理なら、代わりに何を使えばいい?

1018:デフォルトの名無しさん
18/02/03 09:38:14.14 nCUOym6+.net
rar コマンドをインストールしてないから CPAN でソースコードを見ただけだが、List を呼べば rar の出力をパースして list に入れてくれるみたいだよ。
試してないから勘違いしてるかもしれないけど、使ってるならソースコードの List, _AddToList 辺りを読めばいいかも。

1019:デフォルトの名無しさん
18/02/03 10:13:43.25 hZgGNvq2.net
Listはファイル名一覧しか渡してくれないんだよな

1020:デフォルトの名無しさん
18/02/03 10:20:52.21 hZgGNvq2.net
-alldata を指定すれば、->{size} で見えるのか
どうせやってるのは、rar.exe の出力を読んでテキスト解析してるだけなので、
似たようなことを自前でやった

1021:デフォルトの名無しさん
18/02/03 14:48:15.33 nCUOym6+.net
マニュアルには書かれてなかったのか……まあ、信頼性の低い方法だしね。

1022:デフォルトの名無しさん
18/02/04 11:13:30.15 22FJuDW8.net
出力される表の形式に似せたファイル名とかにすると、多分騙されるんだろうな

1023:デフォルトの名無しさん
18/02/09 18:18:02.60 U+AwHosU.net
>>981
KENT WEBの見にくさを見てから言ってくれ

1024:デフォルトの名無しさん
18/02/09 20:07:25.83 VqU2EMqO.net
ヒヤー

1025:デフォルトの名無しさん
18/02/09 20:21:39.58 67QUQBJT.net
他言語弄るとき、まずヒアドキュメント探すつっても過言じゃ無いんだが…

1026:デフォルトの名無しさん
18/02/09 20:58:36.22 .net
>>989
printはもっと読みにくいに決まってるだろ
テンプレートしかあり得ん

1027:デフォルトの名無しさん
18/02/09 21:23:05.06 ukY4fsl4.net
   here => <<~EOM
   インデント
   出来る
   EOM
これ出来るようになって昔書いたソースが結構綺麗になった

1028:デフォルトの名無しさん
18/02/13 11:06:08.61 b5aNFBbA.net
ソースにhereドキュメントが多量に含まれてる時点で
キレイじゃねーよw

1029:デフォルトの名無しさん
18/02/13 21:01:03.94 .net
それな

1030:デフォルトの名無しさん
18/02/13 21:31:52.97 RM6vxbUw.net
ヒアドキュメントはうまくやると配布するファイルをプログラムのファイル一つにまとめられる。
そういうのは何かのプログラムのインストーラやアップデータには良いかも知れない。

1031:デフォルトの名無しさん
18/02/14 01:07:32.41 eq6pqk6J.net
全てのスクリプト言語には、ファイルを一つに結合する機能と
コードを圧縮暗号化する機能が必要な気がする
JSにあるアレね

1032:デフォルトの名無しさん
18/02/14 02:24:43.93 kFW7p5Uz.net
SQL使うときだなヒアドキュメントは
ORM嫌い

1033:デフォルトの名無しさん
18/02/14 09:08:25.15 1w/9kxzB.net
ああ。そういやSQL文に使ったなあ。
長くなるのが普通だもんなあれって。

1034:デフォルトの名無しさん
18/02/14 13:42:37.08 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:デフォルトの名無しさん
18/02/14 13:50:00.92 L6K2VJP2.net
Pealで正規表現なら、デミリタ変えるだけでいいじゃん
可読性下がるけど
$hoge =~ m!/!;!g;
みたいな

1036:デフォルトの名無しさん
18/02/14 19:56:29.61 JCOq4GRt.net
終わりを示す文字列にQEDを使う

1037:デフォルトの名無しさん
18/02/14 20:05:36.90 eq6pqk6J.net
それが厨二病

1038:990
18/02/14 22:39:20.53 eEfPvNoj.net
>>1001
何を言いたいのかさっぱり解らないが、ひょっとして >>1000 に興味持ってくれた?
そうだとしてもやっぱり何を言いたいのかさっぱり解らないのだが。
ちなみに Perl と C を比較してるのであって、sed は関係無いよ。
「これに相当すること」の「これ」とは >>1000 全体を Perl コードとして実行した結果のことで、正規表現は何の関係も無い。
大筋としては
・元のテキストはエスケープなどの加工をしないでおきたい。
・エスケープが必要な場合でも目視と手作業なんて論外。自動化したい。
・実行時に別ファイルから読むのではなくプログラムに埋め込みたい。
という前提があって Perl と C でそれぞれどのように実現するかという話だ。
Perl にいくつもあるクォーティングの正確な仕様、Makefile の仕様、C の言語仕様を知ってる人向けだから無理しなくてもいいよ。
>>1000 に対してじゃなかったのならごめんね。自意識過剰だったね。

1039:デフォルトの名無しさん
18/02/15 09:02:00.83 8SUVFt/S.net
> 自意識過剰だったね。
そのとおりだろうなw

1040:デフォルトの名無しさん
18/02/15 23:40:07.21 .net
Perlコードでもレスでも変わらない真実
ぎっしり長文書くやつは無能

1041:デフォルトの名無しさん
18/02/15 23:41:00.25 8SUVFt/S.net
短文なら有能!俺とか!

1042:デフォルトの名無しさん
18/02/16 10:21:33.25 OW1usLwi.net
俺も俺も

1043:デフォルトの名無しさん
18/02/16 18:54:42.22 ZDCA61/e.net
die;

1044:デフォルトの名無しさん
18/02/16 20:51:22.93 YSXjevvC.net
ひでぶ

1045:1001
Over 1000 Thread.net
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 1457日 21時間 15分 0秒

1046:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています


最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

546日前に更新/269 KB
担当:undef