[過去ログ] Perlについての質問箱 63箱目 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
1
(3): 2014/02/19(水)23:36 AAS
CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
(WEBプログラミング板: 2ch板:php

このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
スレ違いの質問にはスルーか、速やかな誘導をお願いします。
荒らしはスルー推奨。

"The duct tape of the Internet" こと、Perlについての質問箱です。
省9
922: 2018/01/01(月)18:55 ID:FPPCegVg(1) AAS
perlの持ち替えならpythonがいいと思う。
特に最近のlinux系はpythonものが増加傾向だし。
でもまあ、perlあればokじゃね?というのが正直なところ
923: 2018/01/02(火)12:32 ID:Q+9WD3Xu(1) AAS
今年の目標は、新たに言語を勉強することなんだが
Perl、Python、Rubyの違いとそれぞれのメリットを
教えてくだされ
924: 2018/01/02(火)12:41 ID:UbsIsL+c(1) AAS
perl どこにでもある
python 人工知能に強い
ruby Railsが使える
925
(2): 2018/01/02(火)16:34 ID:pQ/3ped7(1/2) AAS
>>920
DBはPerlでもDBIと各DB用のDBIモジュールがあれば同じようにアクセスできるよ。
てか、その辺は他の言語でもだいたい同じようにできないか?みんなJavaのJDBCの影響受けて接続部分で違いを吸収してなんとかしてるように思うんだが。
926: 2018/01/02(火)16:36 ID:pQ/3ped7(2/2) AAS
>>925訂正

> 各DB用のDBIモジュール

じゃなくて

各DB用のDBDモジュール
927: 2018/01/03(水)00:47 ID:0mS9Giqv(1) AAS
>>925
なるほど、どこも似たような機能を実装してきてるわけか
928: 2018/01/03(水)01:45 ID:mxmMGWxl(1) AAS
ORM使えば各DBのSQLの差異も気にせず使えるぜよ
929
(1): 2018/01/03(水)20:21 ID:vVUVg3Hi(1) AAS
Perl習得も今年の目標の一つなんだけど
Linuxの環境構築しておいた方がいい?

それともwin64でもサクサク動かせる?
930: 2018/01/04(木)11:48 ID:vxw86c0g(1) AAS
windows環境でperlなんてまず使わないだろうし、linux環境構築したほうがいいんじゃない?shも覚えるし。。。

webページ作りたいならperlはやめとけ
931: 2018/01/04(木)18:26 ID:Eqt08FX4(1/2) AAS
>>929
どうしてもっていうならWindowsでもいいとは思うがいまいち面倒かも知れない。
知っての通りファイルシステムやその他細かい点が色々違うから。

かといってわざわざ Linux 動く環境を作るのは面倒だという場合は
Windows Subsystem for Linux 使えばいい。これだと Kernel は
Linux のふりをして動く Windows になって、その他は Linux とほぼ同じだ。
Windows 内のファイルは /mnt/c/ にマウントされていて Windows 用の
省1
932: 2018/01/04(木)18:30 ID:Eqt08FX4(2/2) AAS
参考
外部リンク:qiita.com
933
(1): 2018/01/04(木)18:51 ID:M2GmV8ZJ(1) AAS
要はダクトテープだから
それを必要とする環境で使うのが一番

日常的にいろんな作業をlinux上でしてるなら、きっといろいろ役立つ
そうでないなら用途が見つからない
934: 2018/01/04(木)21:49 ID:bZ/07R3T(1) AAS
ありがとう、こっちの住民は親切で助かったよ
WSLはもっと調べて導入検討するわ

>>933
仕事でかなりLinuxは使ってるよ。特にVMは仕事で必須なんで
一からセッティングしてる

どうしても起動系とかハード周りになると
Perlの知識ないときつい部分が出てきたんで
935: 2018/01/05(金)19:25 ID:T2NhU/kF(1) AAS
WSLは結構便利だと思うよ。何せWindows側のコマンド動くし、起動時にWindows側のPATHを /mnt/c 以下のディレクトリとして引き継いでくれるし。
前にKotlinをインストールした時はWindows側で C:\kotlinc 以下にインストールしてその下の bin に PATH 通しておいたら WSL の方でもそのままそれが使えた(JavaVMは別途インストールしたけどね)。
こんな感じで共有が当たり前のようにできる。

まあしかし今のところサーバー用のプログラムは完全には動かないだろうからサーバーとしての動きを期待するならやはり VirtuslBox とかで Linux 動かした方が良いだろうね。
または古いPC等に本当にインストールする。
936
(3): 2018/01/05(金)22:44 ID:2xeG2hRa(1) AAS
ファイルにロックをかけないでロックされているか調べる方法あったらやり方教えて
flockだとロックかけちゃうのでだめです
937: 2018/01/05(金)23:02 ID:/B3nNmE2(1) AAS
アトミックが保証されてるコマンドが必要とかそんなことになるような
938
(1): 2018/01/06(土)06:45 ID:MH4bKWED(1) AAS
fcntl のマニュアルには、できるようなことが書かれてるけどどうか。
申し訳ないが実際に試してみるほど暇じゃないから、役に立つかどうかは自分で判断してほしい。
939: 2018/01/06(土)11:11 ID:3YD8ke1c(1) AAS
ロックしていないのに、ロックしていることを調べるとはこれ如何に。

まぁ、一般には、pidを別ファイルに保存しておいて占有するプロセスをはっきりさせるんじゃないかな〜

ハードリンクとkill -0あたりで調べてみるとよろし??
940: 2018/01/06(土)11:27 ID:uhIItiyd(1) AAS
セマフォの処理はてきとーに作ってもだいたい動くんだけど、
極まれにおかしくなる
完璧に作ろうと思うとなかなか大変
っていうか、OSが提供してなかったら無理
941: 2018/01/06(土)23:54 ID:aO8vJyO+(1/2) AAS
>>936
ちょっとぐらいロック掛かってもいいじゃん。
F_SETLKなら他がロックしてたら待たずに即エラーになるんだし。
エラーにならずにロックできたら他にロックしてるやつは居なかったってことだよ。
942: 2018/01/06(土)23:56 ID:aO8vJyO+(2/2) AAS
あ、ごめん。fcntl()でのロックのはなしじゃなかったか。じゃあfcntl()使って。
使えないOSの場合は何かテクニックがあると思うがその場合はOSを書いてくれないと誰も答えられないと思う。
943
(1): 2018/01/07(日)02:29 ID:6djc4wO2(1) AAS
>>936
あっ、もしも、今使っているかどうかを調べたいならfuserコマンドかな?
windowsはしらぬ
944: 2018/01/07(日)06:11 ID:VUVSKv67(1/2) AAS
まあ落ち着け。まずは何のためにしたいのかということが重要だと思うよ。
ロックを試みることで他のプロセスの邪魔をしたくないというのも目的によっては理解できる。
目的によってはデータベースを使うのが最善かも。
945: 2018/01/07(日)12:06 ID:esrWpXaw(1) AAS
>>936
> ファイルにロックをかけないでロックされているか調べる方法あったらやり方教えて

不可能だよ

なぜなら、仮にそういう関数が有ったとしても
ロックされていると判断した1ナノ秒後には
ロックが解除されてるかもしれないから
もちろんその逆もありうる
省3
946
(1): 2018/01/07(日)13:16 ID:9kbWRuZM(1) AAS
だから不可能では無いんだよな
その時点でそうだったことは判る
でも、その情報を元に何かをすることが出来ないので、
情報の使いみちが無い
947: 2018/01/07(日)17:39 ID:xuWfGrV5(1/2) AAS
>>943
fuserはオープンしてるプロセス出すだけなのでロックしてるかどうかはわからない。
lsofだとそこまで出る。
948: 2018/01/07(日)17:43 ID:xuWfGrV5(2/2) AAS
>>946
使い道は単に確認するだけならあると言えるんじゃないか?
lsofコマンドみたいな確認するだけのコマンドもあるしな。

まあでもほとんどない事は確かだな。やはり自分でロックして成功するかどうかで見た方が良い。
949: 938 2018/01/07(日)17:58 ID:VUVSKv67(2/2) AAS
そのファイルに対して何かしたいとはどこにも書かれていないんだけどな。
彼が充分に説明しないのが悪いというなら確かにその通りだが。
950
(1): 2018/01/08(月)02:39 ID:3kxjIyqg(1) AAS
コマンドプロンプトを自動で開いてperl aaa.txtを自動起動させることはできませんか?
OSはwin7です
目的は複数のperlファイルを数秒で起動することです
日に何度かやるので、手間を省くために1個のperlプログラムを実行すれば10個のコマンドプロンプトが開かれてaaa1からaaa10まで全部実行、みたいにしたいです
951: 2018/01/08(月)03:02 AAS
>>950
できるっちゃできるけど、その起動をPerlでやる必然性あるの?
バッチファイルでやればよくね?
perl_start.batに
start perl aaa1.txt
start perl aaa2.txt
みたいに書き連ねりゃいいだけじゃん
952: 2018/01/08(月)16:46 ID:QsqxlxVF(1) AAS
そのbatファイルをタスク登録(ログオン時実行)とかにしとけば自動実行されるしね
953: 2018/01/08(月)18:09 ID:uJ83jHj4(1) AAS
perl関係ねえ
954
(2): 2018/01/23(火)09:36 ID:vYqw+N7N(1) AAS
open(ロック用ファイルハンドル,ロック用ファイル);
flock(ロック用ファイルハンドル,2);
unlink(ロック用ファイル);
close(ロック用ファイルハンドル);  #ロック解除

このようにロックを解除する前にロック用ファイルを削除するのは何か問題ありますか?
ロック解除したあとにロック用ファイルを削除するとロックに隙間ができるので
955: 2018/01/23(火)10:33 ID:ytLWcXDj(1/2) AAS
>>954
flock使うならファイル削除しなきゃいいんだよ。そうすれば隙間はできない。
ファイル削除したいならopenの時のモードで O_EXCL | O_CREAT も指定しておいてエラーが出るかどうかで判別する。
エラーなくオープンできたら成功で、必要な処理が終わったらファイルをクローズする。
ただしこの方法はUNIX系OS以外では通用するかどうかわからないのと、NFS越しのファイルでは使えないかも知れない。
NFS越しでも使えるファイルロックは多分fcntl()のF_SETLKとかだろうと思う(しかしこれもまたOSしだいだ)。
956: 2018/01/23(火)10:34 ID:ytLWcXDj(2/2) AAS
ごめん。訂正。

ファイルクローズするではなくて削除だ。
957
(1): 2018/01/23(火)12:02 ID:N8Mjx+M1(1/2) AAS
>>954
flockで相互排他する場合普通はファイル削除しない
削除で隙間はできない。但し別プロセスがファイル作成するなら
隙間が生じるように感じるかもしれない
958
(1): 2018/01/23(火)12:28 ID:f+jO8q2F(1) AAS
>>957
感じるではなくロックとして機能しないよね?
959
(1): 2018/01/23(火)19:08 ID:N8Mjx+M1(2/2) AAS
>>958
ファイルシステムから見ると削除して作成すると、同じファイル名でも別ファイルになる
排他処理は同じファイルを使ってるもの同士なら出来る
例えばopenしたものをずっと使い続けるプロセス同士なら、削除された後でも相互排他が出来る
960: 2018/01/23(火)20:56 ID:wO1dM6nx(1) AAS
>>959
3つ以上のプロセスで必ず破綻するように思うが。
いや2つでも2回目でダメになるか。
961: 2018/01/23(火)22:04 ID:ZqrAOfGF(1) AAS
あ、ずっとオープンしっぱなしならその後削除されても大丈夫ってことか。
それはそうだな。なんか危うさを感じるが。
962
(2): 2018/01/30(火)21:14 ID:SNmuV+Ws(1) AAS
ヒアドキュメントをファイルに出力する時に、

print $out <<"EOC";
ならokで、
print $out << "EOC";
だと駄目なのは何故?
963
(1): 2018/01/31(水)01:11 ID:ajZ2gLGd(1/2) AAS
>>962
<< はビットシフト演算子でもあるので、優先順位的に
$out << "EOC" として解釈されちゃうから…?
print $out (<< "EOC"); や print << "EOC"; で通るならそうだと思う。
964: 2018/01/31(水)01:46 ID:PKL4UNme(1) AAS
<<の直後が空白文字だと空白文字自体が識別子とみなされる
と、とある本に書いてあった
965: 2018/01/31(水)03:10 ID:ajZ2gLGd(2/2) AAS
<<964
外部リンク[pod]:perldoc.jp
> <<EOF
<略>
> 識別子がクォートされていない場合は、<< と識封ハ子の間に 空白を入れてはいけません。
> (もし空白を入れると、空識別子として扱われます; これは有効で、 最初の空行にマッチ
> するようになります。)
省18
966: 2018/01/31(水)09:25 ID:H6iQ2Lk/(1/2) AAS
>>962
<<の直後のスペースの有無?
そりゃシェルスクリプトみたいな <<EOL のような何もクオートしない形式も許している都合でシェルの文法に合わせたからではないかな。
967: 2018/01/31(水)09:27 ID:H6iQ2Lk/(2/2) AAS
あ、すまん。リロードせずに書いてしまった。既に回答書かれてたな。
968: 2018/01/31(水)19:05 ID:vCtk0IVE(1) AAS
スペース空けるの禁止ならそれでいいんだけど、
ファイルハンドラが無いならスペースがあってもokなのが納得行かない
969: 2018/02/01(木)07:25 ID:Msx4nr7P(1/2) AAS
気持ちは分からなくもないが、変数の場合はしょうがない。>>963 に書かれてるとおりだ。
970: 2018/02/01(木)12:35 ID:Msx4nr7P(2/2) AAS
誰もつっこまないが、
$out->print( << "EOC");
と書けばいいと思う。
bless されてない場合は昔は
use IO::Handle;
が必要だったが今では
perl -e 'STDOUT->print("abc")'
省2
971
(1): 2018/02/02(金)07:43 AAS
ヒアドキュメントなんてプログラムを読みにくくする諸悪の根源
972: 愛知人 2018/02/02(金)12:10 AAS
Wikipediaの12桁トリップの生成スクリプトで12桁以上のトリップキーの変換が5chの結果と合いません。どうすれば合いますか。
973: 2018/02/03(土)08:12 ID:hZgGNvq2(1/3) AAS
Archive::Rar を使って、中身のファイルサイズを取得するにはどうすれば
無理なら、代わりに何を使えばいい?
974: 2018/02/03(土)09:38 ID:nCUOym6+(1/2) AAS
rar コマンドをインストールしてないから CPAN でソースコードを見ただけだが、List を呼べば rar の出力をパースして list に入れてくれるみたいだよ。
試してないから勘違いしてるかもしれないけど、使ってるならソースコードの List, _AddToList 辺りを読めばいいかも。
975: 2018/02/03(土)10:13 ID:hZgGNvq2(2/3) AAS
Listはファイル名一覧しか渡してくれないんだよな
976: 2018/02/03(土)10:20 ID:hZgGNvq2(3/3) AAS
-alldata を指定すれば、->{size} で見えるのか

どうせやってるのは、rar.exe の出力を読んでテキスト解析してるだけなので、
似たようなことを自前でやった
977: 2018/02/03(土)14:48 ID:nCUOym6+(2/2) AAS
マニュアルには書かれてなかったのか……まあ、信頼性の低い方法だしね。
978: 2018/02/04(日)11:13 ID:22FJuDW8(1) AAS
出力される表の形式に似せたファイル名とかにすると、多分騙されるんだろうな
979
(1): 2018/02/09(金)18:18 ID:U+AwHosU(1) AAS
>>971
KENT WEBの見にくさを見てから言ってくれ
980: 2018/02/09(金)20:07 ID:VqU2EMqO(1) AAS
ヒヤー
981: 2018/02/09(金)20:21 ID:67QUQBJT(1) AAS
他言語弄るとき、まずヒアドキュメント探すつっても過言じゃ無いんだが…
982: 2018/02/09(金)20:58 AAS
>>979
printはもっと読みにくいに決まってるだろ
テンプレートしかあり得ん
983: 2018/02/09(金)21:23 ID:ukY4fsl4(1) AAS
AA省
984: 2018/02/13(火)11:06 ID:b5aNFBbA(1) AAS
ソースにhereドキュメントが多量に含まれてる時点で
キレイじゃねーよw
985: 2018/02/13(火)21:01 AAS
それな
986: 2018/02/13(火)21:31 ID:RM6vxbUw(1) AAS
ヒアドキュメントはうまくやると配布するファイルをプログラムのファイル一つにまとめられる。
そういうのは何かのプログラムのインストーラやアップデータには良いかも知れない。
987: 2018/02/14(水)01:07 ID:eq6pqk6J(1/2) AAS
全てのスクリプト言語には、ファイルを一つに結合する機能と
コードを圧縮暗号化する機能が必要な気がする
JSにあるアレね
988: 2018/02/14(水)02:24 ID:kFW7p5Uz(1) AAS
SQL使うときだなヒアドキュメントは
ORM嫌い
989: 2018/02/14(水)09:08 ID:1w/9kxzB(1) AAS
ああ。そういやSQL文に使ったなあ。
長くなるのが普通だもんなあれって。
990
(1): 2018/02/14(水)13:42 ID:eEfPvNoj(1/2) AAS
$str = <<'EOF';
エスケープの必要性から解放されたい場合もあるんだよなあ。
これに相当することを C でやるには別ファイルに分けて Makefile で

str_escaped : str_raw
sed 's/\([\"\\]\)/\\\1/g ; s/^/\"/ ; s/$/\"/ ;' < str_raw > str_escaped

みたいにして C の方で

str[] =
省3
991
(1): 2018/02/14(水)13:50 ID:L6K2VJP2(1) AAS
Pealで正規表現なら、デミリタ変えるだけでいいじゃん
可読性下がるけど

$hoge =~ m!/!;!g;

みたいな
992: 2018/02/14(水)19:56 ID:JCOq4GRt(1) AAS
終わりを示す文字列にQEDを使う
993: 2018/02/14(水)20:05 ID:eq6pqk6J(2/2) AAS
それが厨二病
994: 990 2018/02/14(水)22:39 ID:eEfPvNoj(2/2) AAS
>>991
何を言いたいのかさっぱり解らないが、ひょっとして >>990 に興味持ってくれた?
そうだとしてもやっぱり何を言いたいのかさっぱり解らないのだが。
ちなみに Perl と C を比較してるのであって、sed は関係無いよ。
「これに相当すること」の「これ」とは >>990 全体を Perl コードとして実行した結果のことで、正規表現は何の関係も無い。
大筋としては
・元のテキストはエスケープなどの加工をしないでおきたい。
省5
995: 2018/02/15(木)09:02 ID:8SUVFt/S(1/2) AAS
> 自意識過剰だったね。

そのとおりだろうなw
996: 2018/02/15(木)23:40 AAS
Perlコードでもレスでも変わらない真実

ぎっしり長文書くやつは無能
997: 2018/02/15(木)23:41 ID:8SUVFt/S(2/2) AAS
短文なら有能!俺とか!
998: 2018/02/16(金)10:21 ID:OW1usLwi(1) AAS
俺も俺も
999: 2018/02/16(金)18:54 ID:ZDCA61/e(1) AAS
die;
1000: 2018/02/16(金)20:51 ID:YSXjevvC(1) AAS
ひでぶ
1001
(1): 1001 Over 1000 Thread AAS
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 1457日 21時間 15分 0秒
1002
(1): 1002 Over 1000 Thread AAS
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。

───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
省7
1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.219s*