CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
(WEBプログラミング板: http://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箱目
http://toro.2ch.net/test/read.cgi/tech/1381561905/
Perlについての質問箱 62箱目
http://toro.2ch.net/test/read.cgi/tech/1385039352/
探検
Perlについての質問箱 63箱目
レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん
2014/02/19(水) 23:36:23.29952デフォルトの名無しさん
2018/01/08(月) 16:46:09.77ID:QsqxlxVF そのbatファイルをタスク登録(ログオン時実行)とかにしとけば自動実行されるしね
953デフォルトの名無しさん
2018/01/08(月) 18:09:00.53ID:uJ83jHj4 perl関係ねえ
954デフォルトの名無しさん
2018/01/23(火) 09:36:50.60ID:vYqw+N7N open(ロック用ファイルハンドル,ロック用ファイル);
flock(ロック用ファイルハンドル,2);
unlink(ロック用ファイル);
close(ロック用ファイルハンドル); #ロック解除
このようにロックを解除する前にロック用ファイルを削除するのは何か問題ありますか?
ロック解除したあとにロック用ファイルを削除するとロックに隙間ができるので
flock(ロック用ファイルハンドル,2);
unlink(ロック用ファイル);
close(ロック用ファイルハンドル); #ロック解除
このようにロックを解除する前にロック用ファイルを削除するのは何か問題ありますか?
ロック解除したあとにロック用ファイルを削除するとロックに隙間ができるので
955デフォルトの名無しさん
2018/01/23(火) 10:33:50.77ID:ytLWcXDj >>954
flock使うならファイル削除しなきゃいいんだよ。そうすれば隙間はできない。
ファイル削除したいならopenの時のモードで O_EXCL | O_CREAT も指定しておいてエラーが出るかどうかで判別する。
エラーなくオープンできたら成功で、必要な処理が終わったらファイルをクローズする。
ただしこの方法はUNIX系OS以外では通用するかどうかわからないのと、NFS越しのファイルでは使えないかも知れない。
NFS越しでも使えるファイルロックは多分fcntl()のF_SETLKとかだろうと思う(しかしこれもまたOSしだいだ)。
flock使うならファイル削除しなきゃいいんだよ。そうすれば隙間はできない。
ファイル削除したいならopenの時のモードで O_EXCL | O_CREAT も指定しておいてエラーが出るかどうかで判別する。
エラーなくオープンできたら成功で、必要な処理が終わったらファイルをクローズする。
ただしこの方法はUNIX系OS以外では通用するかどうかわからないのと、NFS越しのファイルでは使えないかも知れない。
NFS越しでも使えるファイルロックは多分fcntl()のF_SETLKとかだろうと思う(しかしこれもまたOSしだいだ)。
956デフォルトの名無しさん
2018/01/23(火) 10:34:51.22ID:ytLWcXDj ごめん。訂正。
ファイルクローズするではなくて削除だ。
ファイルクローズするではなくて削除だ。
957デフォルトの名無しさん
2018/01/23(火) 12:02:42.65ID:N8Mjx+M1958デフォルトの名無しさん
2018/01/23(火) 12:28:01.19ID:f+jO8q2F >>957
感じるではなくロックとして機能しないよね?
感じるではなくロックとして機能しないよね?
959デフォルトの名無しさん
2018/01/23(火) 19:08:17.77ID:N8Mjx+M1 >>958
ファイルシステムから見ると削除して作成すると、同じファイル名でも別ファイルになる
排他処理は同じファイルを使ってるもの同士なら出来る
例えばopenしたものをずっと使い続けるプロセス同士なら、削除された後でも相互排他が出来る
ファイルシステムから見ると削除して作成すると、同じファイル名でも別ファイルになる
排他処理は同じファイルを使ってるもの同士なら出来る
例えばopenしたものをずっと使い続けるプロセス同士なら、削除された後でも相互排他が出来る
960デフォルトの名無しさん
2018/01/23(火) 20:56:31.43ID:wO1dM6nx961デフォルトの名無しさん
2018/01/23(火) 22:04:43.15ID:ZqrAOfGF あ、ずっとオープンしっぱなしならその後削除されても大丈夫ってことか。
それはそうだな。なんか危うさを感じるが。
それはそうだな。なんか危うさを感じるが。
962デフォルトの名無しさん
2018/01/30(火) 21:14:29.11ID:SNmuV+Ws ヒアドキュメントをファイルに出力する時に、
print $out <<"EOC";
ならokで、
print $out << "EOC";
だと駄目なのは何故?
print $out <<"EOC";
ならokで、
print $out << "EOC";
だと駄目なのは何故?
963デフォルトの名無しさん
2018/01/31(水) 01:11:29.08ID:ajZ2gLGd >>962
<< はビットシフト演算子でもあるので、優先順位的に
$out << "EOC" として解釈されちゃうから…?
print $out (<< "EOC"); や print << "EOC"; で通るならそうだと思う。
<< はビットシフト演算子でもあるので、優先順位的に
$out << "EOC" として解釈されちゃうから…?
print $out (<< "EOC"); や print << "EOC"; で通るならそうだと思う。
964デフォルトの名無しさん
2018/01/31(水) 01:46:30.10ID:PKL4UNme <<の直後が空白文字だと空白文字自体が識別子とみなされる
と、とある本に書いてあった
と、とある本に書いてあった
965デフォルトの名無しさん
2018/01/31(水) 03:10:45.37ID:ajZ2gLGd <<964
http://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
http://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
966デフォルトの名無しさん
2018/01/31(水) 09:25:45.73ID:H6iQ2Lk/967デフォルトの名無しさん
2018/01/31(水) 09:27:00.94ID:H6iQ2Lk/ あ、すまん。リロードせずに書いてしまった。既に回答書かれてたな。
968デフォルトの名無しさん
2018/01/31(水) 19:05:43.73ID:vCtk0IVE スペース空けるの禁止ならそれでいいんだけど、
ファイルハンドラが無いならスペースがあってもokなのが納得行かない
ファイルハンドラが無いならスペースがあってもokなのが納得行かない
969デフォルトの名無しさん
2018/02/01(木) 07:25:10.05ID:Msx4nr7P 気持ちは分からなくもないが、変数の場合はしょうがない。>>963 に書かれてるとおりだ。
970デフォルトの名無しさん
2018/02/01(木) 12:35:16.66ID:Msx4nr7P 誰もつっこまないが、
$out->print( << "EOC");
と書けばいいと思う。
bless されてない場合は昔は
use IO::Handle;
が必要だったが今では
perl -e 'STDOUT->print("abc")'
なんてこともできる。
個人的には、ファイルハンドルの後に , があるというアホな間違いをせずに済むというところで助かっている。
$out->print( << "EOC");
と書けばいいと思う。
bless されてない場合は昔は
use IO::Handle;
が必要だったが今では
perl -e 'STDOUT->print("abc")'
なんてこともできる。
個人的には、ファイルハンドルの後に , があるというアホな間違いをせずに済むというところで助かっている。
971デフォルトの名無しさん
2018/02/02(金) 07:43:01.24 ヒアドキュメントなんてプログラムを読みにくくする諸悪の根源
972愛知人
2018/02/02(金) 12:10:04.50 Wikipediaの12桁トリップの生成スクリプトで12桁以上のトリップキーの変換が5chの結果と合いません。どうすれば合いますか。
973デフォルトの名無しさん
2018/02/03(土) 08:12:51.87ID:hZgGNvq2 Archive::Rar を使って、中身のファイルサイズを取得するにはどうすれば
無理なら、代わりに何を使えばいい?
無理なら、代わりに何を使えばいい?
974デフォルトの名無しさん
2018/02/03(土) 09:38:14.14ID:nCUOym6+ rar コマンドをインストールしてないから CPAN でソースコードを見ただけだが、List を呼べば rar の出力をパースして list に入れてくれるみたいだよ。
試してないから勘違いしてるかもしれないけど、使ってるならソースコードの List, _AddToList 辺りを読めばいいかも。
試してないから勘違いしてるかもしれないけど、使ってるならソースコードの List, _AddToList 辺りを読めばいいかも。
975デフォルトの名無しさん
2018/02/03(土) 10:13:43.25ID:hZgGNvq2 Listはファイル名一覧しか渡してくれないんだよな
976デフォルトの名無しさん
2018/02/03(土) 10:20:52.21ID:hZgGNvq2 -alldata を指定すれば、->{size} で見えるのか
どうせやってるのは、rar.exe の出力を読んでテキスト解析してるだけなので、
似たようなことを自前でやった
どうせやってるのは、rar.exe の出力を読んでテキスト解析してるだけなので、
似たようなことを自前でやった
977デフォルトの名無しさん
2018/02/03(土) 14:48:15.33ID:nCUOym6+ マニュアルには書かれてなかったのか……まあ、信頼性の低い方法だしね。
978デフォルトの名無しさん
2018/02/04(日) 11:13:30.15ID:22FJuDW8 出力される表の形式に似せたファイル名とかにすると、多分騙されるんだろうな
979デフォルトの名無しさん
2018/02/09(金) 18:18:02.60ID:U+AwHosU >>971
KENT WEBの見にくさを見てから言ってくれ
KENT WEBの見にくさを見てから言ってくれ
980デフォルトの名無しさん
2018/02/09(金) 20:07:25.83ID:VqU2EMqO ヒヤー
981デフォルトの名無しさん
2018/02/09(金) 20:21:39.58ID:67QUQBJT 他言語弄るとき、まずヒアドキュメント探すつっても過言じゃ無いんだが…
982デフォルトの名無しさん
2018/02/09(金) 20:58:36.22983デフォルトの名無しさん
2018/02/09(金) 21:23:05.06ID:ukY4fsl4 here => <<~EOM
インデント
出来る
EOM
これ出来るようになって昔書いたソースが結構綺麗になった
インデント
出来る
EOM
これ出来るようになって昔書いたソースが結構綺麗になった
984デフォルトの名無しさん
2018/02/13(火) 11:06:08.61ID:b5aNFBbA ソースにhereドキュメントが多量に含まれてる時点で
キレイじゃねーよw
キレイじゃねーよw
985デフォルトの名無しさん
2018/02/13(火) 21:01:03.94 それな
986デフォルトの名無しさん
2018/02/13(火) 21:31:52.97ID:RM6vxbUw ヒアドキュメントはうまくやると配布するファイルをプログラムのファイル一つにまとめられる。
そういうのは何かのプログラムのインストーラやアップデータには良いかも知れない。
そういうのは何かのプログラムのインストーラやアップデータには良いかも知れない。
987デフォルトの名無しさん
2018/02/14(水) 01:07:32.41ID:eq6pqk6J 全てのスクリプト言語には、ファイルを一つに結合する機能と
コードを圧縮暗号化する機能が必要な気がする
JSにあるアレね
コードを圧縮暗号化する機能が必要な気がする
JSにあるアレね
988デフォルトの名無しさん
2018/02/14(水) 02:24:43.93ID:kFW7p5Uz SQL使うときだなヒアドキュメントは
ORM嫌い
ORM嫌い
989デフォルトの名無しさん
2018/02/14(水) 09:08:25.15ID:1w/9kxzB ああ。そういやSQL文に使ったなあ。
長くなるのが普通だもんなあれって。
長くなるのが普通だもんなあれって。
990デフォルトの名無しさん
2018/02/14(水) 13:42:37.08ID:eEfPvNoj $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
エスケープの必要性から解放されたい場合もあるんだよなあ。
これに相当することを C でやるには別ファイルに分けて Makefile で
str_escaped : str_raw
sed 's/\([\"\\]\)/\\\1/g ; s/^/\"/ ; s/$/\"/ ;' < str_raw > str_escaped
みたいにして C の方で
str[] =
#include "str_escaped"
とする必要がある。Perl は本当に便利だ。
EOF
991デフォルトの名無しさん
2018/02/14(水) 13:50:00.92ID:L6K2VJP2 Pealで正規表現なら、デミリタ変えるだけでいいじゃん
可読性下がるけど
$hoge =~ m!/!;!g;
みたいな
可読性下がるけど
$hoge =~ m!/!;!g;
みたいな
992デフォルトの名無しさん
2018/02/14(水) 19:56:29.61ID:JCOq4GRt 終わりを示す文字列にQEDを使う
993デフォルトの名無しさん
2018/02/14(水) 20:05:36.90ID:eq6pqk6J それが厨二病
994990
2018/02/14(水) 22:39:20.53ID:eEfPvNoj >>991
何を言いたいのかさっぱり解らないが、ひょっとして >>990 に興味持ってくれた?
そうだとしてもやっぱり何を言いたいのかさっぱり解らないのだが。
ちなみに Perl と C を比較してるのであって、sed は関係無いよ。
「これに相当すること」の「これ」とは >>990 全体を Perl コードとして実行した結果のことで、正規表現は何の関係も無い。
大筋としては
・元のテキストはエスケープなどの加工をしないでおきたい。
・エスケープが必要な場合でも目視と手作業なんて論外。自動化したい。
・実行時に別ファイルから読むのではなくプログラムに埋め込みたい。
という前提があって Perl と C でそれぞれどのように実現するかという話だ。
Perl にいくつもあるクォーティングの正確な仕様、Makefile の仕様、C の言語仕様を知ってる人向けだから無理しなくてもいいよ。
>>990 に対してじゃなかったのならごめんね。自意識過剰だったね。
何を言いたいのかさっぱり解らないが、ひょっとして >>990 に興味持ってくれた?
そうだとしてもやっぱり何を言いたいのかさっぱり解らないのだが。
ちなみに Perl と C を比較してるのであって、sed は関係無いよ。
「これに相当すること」の「これ」とは >>990 全体を Perl コードとして実行した結果のことで、正規表現は何の関係も無い。
大筋としては
・元のテキストはエスケープなどの加工をしないでおきたい。
・エスケープが必要な場合でも目視と手作業なんて論外。自動化したい。
・実行時に別ファイルから読むのではなくプログラムに埋め込みたい。
という前提があって Perl と C でそれぞれどのように実現するかという話だ。
Perl にいくつもあるクォーティングの正確な仕様、Makefile の仕様、C の言語仕様を知ってる人向けだから無理しなくてもいいよ。
>>990 に対してじゃなかったのならごめんね。自意識過剰だったね。
995デフォルトの名無しさん
2018/02/15(木) 09:02:00.83ID:8SUVFt/S > 自意識過剰だったね。
そのとおりだろうなw
そのとおりだろうなw
996デフォルトの名無しさん
2018/02/15(木) 23:40:07.21 Perlコードでもレスでも変わらない真実
ぎっしり長文書くやつは無能
ぎっしり長文書くやつは無能
997デフォルトの名無しさん
2018/02/15(木) 23:41:00.25ID:8SUVFt/S 短文なら有能!俺とか!
998デフォルトの名無しさん
2018/02/16(金) 10:21:33.25ID:OW1usLwi 俺も俺も
999デフォルトの名無しさん
2018/02/16(金) 18:54:42.22ID:ZDCA61/e die;
1000デフォルトの名無しさん
2018/02/16(金) 20:51:22.93ID:YSXjevvC ひでぶ
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 1457日 21時間 15分 0秒
新しいスレッドを立ててください。
life time: 1457日 21時間 15分 0秒
10021002
Over 1000Thread 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 習政権、高市首相への態度硬化 台湾有事発言で連日非難 中国 ★10 [ぐれ★]
- 【日本大使館】中国在留邦人は安全確保を [ぐれ★]
- 橋下徹氏 外務省幹部の訪中受け「口だけ番長」へ痛烈指摘 「喧嘩は日本の完敗…なんとかっこ悪い日本か」 [冬月記者★]
- 【外国人問題】小野田紀美担当相「不法就労や不法滞在は許さない」 [シャチ★]
- 【野球】井端監督 大谷翔平、山本由伸らのWBCへの参加 「1日も早く返事ほしい」「待っててといっても、国内組が遅くなってしまう」★3 [冬月記者★]
- 中国で「クレしん」公開延期 対日報復、エンタメに波及 [蚤の市★]
- ニートしかいない時間ってマジでつまんないよな
- 結局さ
- メスイキして快感が身体の内側に残ってる間に寝るのが気持ちいい
- ジムで筋トレするようになったらオナニーしなくなったんだが
- 🖐( -᷄ὢ)俺がこの世で最も欲するものは>>2の>>3だ……
- フードデリバリー配達員ぼく毎日他の配達員とスタートダッシュバトルしてる🥺
