CGI についての質問は板違いです。WEB プログラミング板でどうぞ。
CGI と Perl の区別がつかない人も WEB プログラミング板に行ってください。
(WEB プログラミング板: http://hibari.2ch.net/php/ )
回答する際はモダンな方法でお願いします
(例 jcode.plではなくEncodeモジュールを使った方法)
理由はもう2012年です。いい加減2000年以前の方法はやめましょう。
最新のPerlを使うほうがかっこいいです。
いつまで勉強しないつもりですか?
過去にとらわれるのはもうやめです。進歩しませんよ。
このスレでは(CGI 以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
スレ違いの質問にはスルーか、速やかな誘導をお願いします。
"The duct tape of the Internet" こと、Perl についての質問箱です。
"There's more than one way to do it" ということで、
Perl の奥深さについて皆で語り合い、追求してまいりましょう。
http://www.perl.org/get.html
● 2011/10/30 現在の最新版: 5.14.2
▼ 前スレ
Perlについての質問箱 49箱目
http://toro.2ch.net/test/read.cgi/tech/1319953460/
リンク集は >>2-3辺り
Perl 日本語処理の基礎の基礎 >>4辺り
探検
【モダン推奨】Perlについての質問箱 50箱目
レス数が1000を超えています。これ以上書き込みはできません。
2012/01/21(土) 10:56:39.03
963デフォルトの名無しさん
2021/05/01(土) 16:05:36.08ID:R5WysE71 pack, unpack は互換性重視していると思うが? 少なくともフォーマットの N 等は同じ4バイトだよ。
その辺どうしても信用できないなら自分専用の pack, unpack を作れば良いんじゃないかな。
そうすると pack, unpack と同じ形式である必要もないわけだが。
その辺どうしても信用できないなら自分専用の pack, unpack を作れば良いんじゃないかな。
そうすると pack, unpack と同じ形式である必要もないわけだが。
964デフォルトの名無しさん
2021/05/01(土) 18:01:49.35ID:/n1q7kUC そんなようなことをしてるのが現状の実装
965デフォルトの名無しさん
2021/05/02(日) 17:15:11.59ID:9gapCdI8 そういえば Perl のネイティブな整数のサイズって C のどれなのかな。
perlnumber には「perl をビルドする際に使われた C コンパイラが対応している形式」と
書かれてるけど。
ちなみに今使ってる環境では int ではなく long , long long と同じ 8 バイトのようだ。
perlnumber には「perl をビルドする際に使われた C コンパイラが対応している形式」と
書かれてるけど。
ちなみに今使ってる環境では int ではなく long , long long と同じ 8 バイトのようだ。
966デフォルトの名無しさん
2021/05/03(月) 17:40:45.60ID:UFgXt23Q Perl5のビルドはやった事ないので知らないが、多分デフォルトがCのintと同じで指定すれば変えられるって感じなのではないかな。
perl -V で実行するとそういう設定値が沢山出てくるよね。その中に intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678
のようなものが出てくる。
そういや前に整数のバイト数でハマったことあったな。 fcntl() の F_SETLKW の時に渡す flock 構造体のバイナリで
pack('s2l3', F_WRLCK, SEEK_SET, 0, 0, 0) ってやっててうまく行ってたプログラムが別の環境に持って行って動かしたら
ロックが掛かったり掛からなかったりするようになり、良く調べてみたら pack の l は64bit環境でも 32bit 固定だが
struct flock の方は l_start, l_len が32bit OS では 4 バイト、64bit 環境では 8 バイトになっていた。
そもそも pack してバイナリにしなければいけないような引数の渡し方がいけないだけだとは思うが、結局どちらの
環境でも動くプログラムにするために pack('s2l5', F_WRLCK, SEEK_SET, 0, 0, 0, 0, 0) で誤魔化した。
やっぱこういうのは本来ならモジュール作ってそこで吸収した方が良いんだろうな。
と思ったらあった。
https://metacpan.org/pod/File::FcntlLock
是非デフォルトでこういうモジュールも perl と一緒にインストールされて欲しいものだな。
perl -V で実行するとそういう設定値が沢山出てくるよね。その中に intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678
のようなものが出てくる。
そういや前に整数のバイト数でハマったことあったな。 fcntl() の F_SETLKW の時に渡す flock 構造体のバイナリで
pack('s2l3', F_WRLCK, SEEK_SET, 0, 0, 0) ってやっててうまく行ってたプログラムが別の環境に持って行って動かしたら
ロックが掛かったり掛からなかったりするようになり、良く調べてみたら pack の l は64bit環境でも 32bit 固定だが
struct flock の方は l_start, l_len が32bit OS では 4 バイト、64bit 環境では 8 バイトになっていた。
そもそも pack してバイナリにしなければいけないような引数の渡し方がいけないだけだとは思うが、結局どちらの
環境でも動くプログラムにするために pack('s2l5', F_WRLCK, SEEK_SET, 0, 0, 0, 0, 0) で誤魔化した。
やっぱこういうのは本来ならモジュール作ってそこで吸収した方が良いんだろうな。
と思ったらあった。
https://metacpan.org/pod/File::FcntlLock
是非デフォルトでこういうモジュールも perl と一緒にインストールされて欲しいものだな。
967デフォルトの名無しさん
2021/05/04(火) 07:28:36.10ID:2rafzDNd ありがとう。たまたま Perl のソースコードをダウンロードしてあるから
INSTALL を読んでみたら (いや、先に読んどけという話だが)
C コンパイラがサポートしてなくても use64bitint というオプションを使えば
整数のサイズが 64 ビットになるらしい。
Debian のパッケージでもこれを使ってるようだ。
C コンパイラの仕様は Config モジュールで得られるから
それを使って環境に合わせた処理が可能になる場合もあるが
Linux の flock 構造体はメンバの順番すら保証されてないようだから無理そう。
INSTALL を読んでみたら (いや、先に読んどけという話だが)
C コンパイラがサポートしてなくても use64bitint というオプションを使えば
整数のサイズが 64 ビットになるらしい。
Debian のパッケージでもこれを使ってるようだ。
C コンパイラの仕様は Config モジュールで得られるから
それを使って環境に合わせた処理が可能になる場合もあるが
Linux の flock 構造体はメンバの順番すら保証されてないようだから無理そう。
968デフォルトの名無しさん
2021/05/04(火) 11:47:57.60ID:2rafzDNd 間違えた。「C コンパイラが」じゃなくて「CPU が」だ。
Configure を見た限りでは、8 バイト整数の型として採用する優先順位は
int, long, long long, int64_t の順で
8 バイトの型が無ければ Configure が失敗するようだ。
あっても CPU が対応してなくてライブラリで実現してるような環境だと
速度のためにあえて使わないという選択もあるかと思うが
long が 8 バイトだと強制的に使わされるようだ。
試せる環境が無いから勘違いしてるかもしれないが。
Configure を見た限りでは、8 バイト整数の型として採用する優先順位は
int, long, long long, int64_t の順で
8 バイトの型が無ければ Configure が失敗するようだ。
あっても CPU が対応してなくてライブラリで実現してるような環境だと
速度のためにあえて使わないという選択もあるかと思うが
long が 8 バイトだと強制的に使わされるようだ。
試せる環境が無いから勘違いしてるかもしれないが。
969デフォルトの名無しさん
2021/05/04(火) 16:45:05.36ID:xGoTe+aq さいですか
970デフォルトの名無しさん
2021/05/04(火) 16:56:22.60ID:1LbVAR3E きりんです
971デフォルトの名無しさん
2021/05/04(火) 16:58:56.75ID:siU8Ev75 なんできりんなんだよ
そこはラクダだろ
そこはラクダだろ
972デフォルトの名無しさん
2021/05/04(火) 17:08:17.38ID:FheU4VJA でも象さんのほうがもっと好きです
973デフォルトの名無しさん
2021/05/05(水) 15:08:24.73ID:CxAIF4J7 テーブルがあってインデックスで取り扱いたい
でもテーブルを作る時にカウンタとか意識したくない
配列なら
push @table, $data;
で済むけど、ハッシュにしたい
$table[$i]->data1 = $data1;
あるいは
$table->[$i]->data1 = $data1;
そんなことできたっけ
でもテーブルを作る時にカウンタとか意識したくない
配列なら
push @table, $data;
で済むけど、ハッシュにしたい
$table[$i]->data1 = $data1;
あるいは
$table->[$i]->data1 = $data1;
そんなことできたっけ
974デフォルトの名無しさん
2021/05/05(水) 15:53:07.29ID:zZpLK+nt 日本語でおk
975デフォルトの名無しさん
2021/05/05(水) 16:00:54.87ID:CxAIF4J7 全部一度に判ってるなら、無名ハッシュをpushすればいいんだけど
ちょびちょび追加していきたい
ちょびちょび追加していきたい
976デフォルトの名無しさん
2021/05/06(木) 21:44:26.70ID:ajjDZVcw 君が何をしたいのかよくわからない。
977デフォルトの名無しさん
2021/05/06(木) 21:49:53.54ID:WUloT9c9 ->data1は->{data1}の間違い
978デフォルトの名無しさん
2021/05/16(日) 14:19:41.36ID:vhU8s59y pontiffがprintfに見える
979デフォルトの名無しさん
2021/05/24(月) 07:52:58.62ID:GjHEXSDD 親の方は無限ループにしておいて、適宜forkしてメインの処理をさせる
終わったら子はexitする
という作りで基本的にうまくいってるのに、たまに親が子だと思ってexitしとる
$pid = fork;
if (!$pid) {
exec($command);
exit;
}
この書き方に何か問題が?
終わったら子はexitする
という作りで基本的にうまくいってるのに、たまに親が子だと思ってexitしとる
$pid = fork;
if (!$pid) {
exec($command);
exit;
}
この書き方に何か問題が?
980デフォルトの名無しさん
2021/05/24(月) 08:16:28.74ID:INcwcLMt 親プロセスがwait $pid しないとゾンビが蓄積される。
それが続くと0ではなくundefを返すと思う。思うとしか言えないのはperldocに書かれてないから。
defined $pid でundefと0を区別する必要あり。
$!にResource temporarily unavailableのようなエラーが渡されるのでたぶんそう。
なのでちゃんと親プロセスがwait $pidすれば回避できる。
それが続くと0ではなくundefを返すと思う。思うとしか言えないのはperldocに書かれてないから。
defined $pid でundefと0を区別する必要あり。
$!にResource temporarily unavailableのようなエラーが渡されるのでたぶんそう。
なのでちゃんと親プロセスがwait $pidすれば回避できる。
981デフォルトの名無しさん
2021/05/24(月) 08:19:17.40ID:INcwcLMt 訂正。
perldoc -f forkにfork失敗時にundefを返すことが書かれてたわ
perldoc -f forkにfork失敗時にundefを返すことが書かれてたわ
982デフォルトの名無しさん
2021/05/24(月) 08:22:50.85ID:GjHEXSDD やっぱり失敗してるんだよな
リトライするように直して試してみてるとこ
どういう理由で失敗するんだ?
activeperl
リトライするように直して試してみてるとこ
どういう理由で失敗するんだ?
activeperl
983デフォルトの名無しさん
2021/05/24(月) 13:11:06.83ID:SHUy6n38 windows版のforkもどきだからじゃないの?
984デフォルトの名無しさん
2021/05/24(月) 13:35:57.27ID:INcwcLMt macOSでも起きるよ
985デフォルトの名無しさん
2021/05/24(月) 13:56:03.81ID:GjHEXSDD 今たまたま何かのリソースが全部埋まってて、一瞬待ってくれたら準備できるよ
なんだったら、リトライは隠蔽してくれて良さそうなもんなのに
IO関係はみんなそうなってる
なんだったら、リトライは隠蔽してくれて良さそうなもんなのに
IO関係はみんなそうなってる
986デフォルトの名無しさん
2021/05/24(月) 16:23:07.38ID:mQhym/iw Perlはかなりの低レイヤーでも使われることがあるからな。
そんな冗長にはできんやろ。
そもそも、ぜんぜんwaitpid()しなかったらいずれ困るんだから、早くエラーになったほうがまし。
そんな冗長にはできんやろ。
そもそも、ぜんぜんwaitpid()しなかったらいずれ困るんだから、早くエラーになったほうがまし。
987デフォルトの名無しさん
2021/05/25(火) 22:10:30.48ID:z8jztsTP activeperlで
forkで返るpidがマイナスの値なんだけど、
Win32::Process::List で GetProcesses して得られるものとは別物なの?
forkで返るpidがマイナスの値なんだけど、
Win32::Process::List で GetProcesses して得られるものとは別物なの?
988デフォルトの名無しさん
2021/05/25(火) 22:38:53.48ID:/Axm+K1V989デフォルトの名無しさん
2021/05/25(火) 22:59:31.10ID:z8jztsTP 疑似プロセスIDは、OSのプロセスIDとは別物なのか
要は、forkで分岐したプロセスがまだ生きてるかどうか親から周期的に監視したいんだけど
waitすると親が止まってしまうのでどうしたもんか
要は、forkで分岐したプロセスがまだ生きてるかどうか親から周期的に監視したいんだけど
waitすると親が止まってしまうのでどうしたもんか
990デフォルトの名無しさん
2021/05/25(火) 23:54:54.75ID:/Axm+K1V 別スレッドでsystem()ではアカンのか?
991デフォルトの名無しさん
2021/05/26(水) 07:17:11.86ID:niBt7hlg スレッド使ったことない
992デフォルトの名無しさん
2021/05/26(水) 08:32:40.50ID:VVGa10VW perlのスレッドは標準IOやパイプの取り扱いが難しい、というか動きが怪しい
993デフォルトの名無しさん
2021/05/26(水) 09:53:00.68ID:+WmbAELr シェルスクリプトではkill -0 PIDでプロセスが生きてるか調べられる!
そういう用途にはシェルスクリプトを使うべき!
そういう用途にはシェルスクリプトを使うべき!
994デフォルトの名無しさん
2021/05/26(水) 09:53:29.06ID:+WmbAELr ユーチューバーのKENTとかも言ってる!
995デフォルトの名無しさん
2021/05/26(水) 10:20:29.11ID:niBt7hlg GetProcessesでpython.exeを見つければだいたい目的は達成するんだけど、
他に使ってる人がいると間違う
他に使ってる人がいると間違う
996デフォルトの名無しさん
2021/05/26(水) 10:37:03.92ID:VVGa10VW 実行バイナリやシェルコマンドをP言語スクリプトから呼び出すソリューションが最も汎用性が高い
古事記にもそう書いてある
古事記にもそう書いてある
997デフォルトの名無しさん
2021/05/26(水) 10:40:21.49ID:+WmbAELr そこもちゃんとユーチューバーのKANTのサロンで言ってる!って
語尾に付けないと
語尾に付けないと
998デフォルトの名無しさん
2021/05/26(水) 10:48:36.67ID:VVGa10VW このスレ、消費に9年以上かかってるとか盛者必衰の理をあらわしてて草
999デフォルトの名無しさん
2021/05/26(水) 11:00:06.47ID:+WmbAELr 9年か・・・。Perlもずいぶんと長生きだね。
次スレ
【古典的モダン】Perlについての質問箱 51箱目
https://mevius.5ch.net/test/read.cgi/tech/1621994129/
次スレ
【古典的モダン】Perlについての質問箱 51箱目
https://mevius.5ch.net/test/read.cgi/tech/1621994129/
1000デフォルトの名無しさん
2021/05/26(水) 11:35:56.72ID:a7TiWa6C 質問してもええか? ええのんか?
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 3413日 0時間 39分 17秒
新しいスレッドを立ててください。
life time: 3413日 0時間 39分 17秒
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 中国国連大使「日本が中国に武力行使すると脅しをかけたのは初めて」 国連事務総長に書簡★3 [♪♪♪★]
- 台湾有事での集団的自衛権行使に「賛成」が48.8%、「反対」が44.2% ★8 [♪♪♪★]
- 【🐼】パンダ、日本で会えなくなる? 中国との関係悪化で不安の声 [ぐれ★]
- 【芸能】44歳・池脇千鶴、激変ぶりにネット衝撃 「まるで別人…」「変化が凄い!!」の声 [冬月記者★]
- なぜ立花孝志氏の言葉は信じられたのか…"異例の逮捕"が浮き彫りにした「SNSの危険な病理」 [ぐれ★]
- 竹中平蔵氏、万博は大成功だったと持論 批判していた人々にチクリ「反省の弁の一つも聞きたい」 [バイト歴50年★]
- 🏡😡
- なんでカイジって班長にだけ容赦ないの
- うんこで笑える理由は全員知ってるから
- のび太「もしもVIPにいる社会不適合者のニートブサイクハゲアトピーが全員死んだら」
- 中国「国連さん聞いて!日本が反省しないの!日本は武力介入しようとしてるよ!」
- SNSやってる大学教員ってなんでSNSやってるの
