CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
(WEBプログラミング板: https://medaka.5ch.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.28.1)
▼前スレ
Perlについての質問箱 61箱目
http://toro.5ch.net/test/read.cgi/tech/1381561905/
Perlについての質問箱 62箱目
http://toro.5ch.net/test/read.cgi/tech/1385039352/
Perlについての質問箱 63箱目
https://mevius.5ch.net/test/read.cgi/tech/1392820583/
Perlについての質問箱 64箱目
■ このスレッドは過去ログ倉庫に格納されています
2019/02/01(金) 09:44:37.18ID:1/Kr4Qjk
421デフォルトの名無しさん
2020/05/28(木) 13:57:57.17ID:EGYBOXys422デフォルトの名無しさん
2020/05/28(木) 14:14:16.30ID:yN32+nQR マウスオーバーで判るようなものをいちいち書かなくても
423デフォルトの名無しさん
2020/05/28(木) 19:40:22.87ID:2jhnUESo PerlでIDEは使わないわな
424デフォルトの名無しさん
2020/05/28(木) 20:04:53.96ID:EYUPTTzW んなこたーない
425デフォルトの名無しさん
2020/05/28(木) 20:14:52.80ID:2jhnUESo いやいやPerl書いてるときマウス触らんでしょ
まあ人によるんだろうが
まあ人によるんだろうが
426デフォルトの名無しさん
2020/05/28(木) 20:21:04.17ID:yN32+nQR ロジックが逆だ
perlが型が判るからマウスを触らないのではなく、
マウスを触らないで作ったからマウスなしで型が判るようになってる
MT免許だからといってATに乗ってはいけない訳ではない
perlが型が判るからマウスを触らないのではなく、
マウスを触らないで作ったからマウスなしで型が判るようになってる
MT免許だからといってATに乗ってはいけない訳ではない
427デフォルトの名無しさん
2020/05/29(金) 20:28:53.39ID:Ey9K/+fw Perl の IDE って、どんなのがある?
Eclipse とか IntelliJ IDEA のプラグインで使えたとは思ったが、拡張子を .pl にしておかないと Perl だと判別してくれなくて
ただのテキストファイルと認識されちゃって使い辛いなと思ったことはあるが、もっとまともなのある?
Eclipse とか IntelliJ IDEA のプラグインで使えたとは思ったが、拡張子を .pl にしておかないと Perl だと判別してくれなくて
ただのテキストファイルと認識されちゃって使い辛いなと思ったことはあるが、もっとまともなのある?
428デフォルトの名無しさん
2020/05/29(金) 20:32:29.66ID:uRkXoYhe vscode + Perl::LanguageServer
429デフォルトの名無しさん
2020/05/29(金) 20:34:34.78ID:Bk25Bwk1 サクラエディタで十分なんですよ(´・ω・`)
430デフォルトの名無しさん
2020/05/29(金) 21:27:39.95ID:dZOo8Hm0 拡張子を ,pl にしないメリットってなんかある?
431デフォルトの名無しさん
2020/05/29(金) 21:28:20.85ID:Bk25Bwk1 実行ファイルはpl
モジュールはpm
そんな事も知らんのか(´・ω・`)
モジュールはpm
そんな事も知らんのか(´・ω・`)
432デフォルトの名無しさん
2020/05/29(金) 21:36:34.81ID:8nIWWcW2 perlはvimで書く。
お兄さんとの約束だよ。
お兄さんとの約束だよ。
433デフォルトの名無しさん
2020/05/29(金) 21:38:26.77ID:uRkXoYhe mattnさんはパンツ履いて
434デフォルトの名無しさん
2020/05/29(金) 23:37:14.00ID:GfVaVkMA435デフォルトの名無しさん
2020/05/30(土) 00:29:42.29ID:UYDx2q8r >>434
cとかshellとか拡張子をつけるのが普通なんじゃないの?
cとかshellとか拡張子をつけるのが普通なんじゃないの?
436デフォルトの名無しさん
2020/05/30(土) 00:31:15.77ID:pcDYqVj5 ソースは付ける
実行ファイルは付けない
スクリプトはソースよりも実行ファイル寄り
実行ファイルは付けない
スクリプトはソースよりも実行ファイル寄り
437デフォルトの名無しさん
2020/05/30(土) 00:42:58.21ID:h6ZQaP0H 拡張子つければ伝わるであろう情報を削るとか
一人で管理してるサーバならいいけど
そうじゃなきゃ害悪だと思う
一人で管理してるサーバならいいけど
そうじゃなきゃ害悪だと思う
438デフォルトの名無しさん
2020/05/30(土) 01:44:27.37ID:UYDx2q8r 人間がエディトするファイルは付ける
人間がエディトしないファイルは付けないんじゃないの?
人間がエディトしないファイルは付けないんじゃないの?
439デフォルトの名無しさん
2020/05/30(土) 01:51:00.93ID:h49XlInt 運用においては、実行ファイルの実装方法なんかどうでもいい。
むしろ、実装方法を変えたら、ファイル名も変わるほうがはるかに害悪。
たとえば、シェルスクリプトをPerl スクリプトに変えただけで、そのスクリプトを使っているところをすべて変更しないといけなくなる。
むしろ、実装方法を変えたら、ファイル名も変わるほうがはるかに害悪。
たとえば、シェルスクリプトをPerl スクリプトに変えただけで、そのスクリプトを使っているところをすべて変更しないといけなくなる。
440デフォルトの名無しさん
2020/05/30(土) 03:26:43.00ID:k7WMMDxu 昔々 MS-DOS (更にそれの元になった CP/M)はファイル名に固定で3文字の拡張子があり、
それによって実行ファイルかどうかを判定していて、Windows はそれを引き継いでいるので
拡張子を使っているだけ。
UNIX系OSはそもそも拡張子という概念はなく、実行ファイルは実行パーミッションのビットが
立っているかどうかで判定していた。C言語のソースに .c を付けたりはするが、あれは拡張子
ではなく接尾辞で主に人間やそれを読むコンパイラ等がファイルの種別をファイル名から判断
するためにある。だからOSから見たら .c の部分に特別な意味はなくファイル名の一部でしかない。
Windows だと例えば .exe のファイルなら .exe を抜いた拡張子なしのファイル名を指定して
OSに実行させる事は可能だが、これはOSが拡張子部分を特別扱いしているからだ。
UNIX系OSではそのような方法では実行できずファイル名を全て指定する必要がある。xxx.pl なら
xxx.pl と指定する必要があり xxx のみでは実行できない。その代わり実行パーミッションが立って
いればファイル名がどうであろうともOSはそれを実行しようとする(実際に実行できるかどうかは
ファイルの内容による)。
それによって実行ファイルかどうかを判定していて、Windows はそれを引き継いでいるので
拡張子を使っているだけ。
UNIX系OSはそもそも拡張子という概念はなく、実行ファイルは実行パーミッションのビットが
立っているかどうかで判定していた。C言語のソースに .c を付けたりはするが、あれは拡張子
ではなく接尾辞で主に人間やそれを読むコンパイラ等がファイルの種別をファイル名から判断
するためにある。だからOSから見たら .c の部分に特別な意味はなくファイル名の一部でしかない。
Windows だと例えば .exe のファイルなら .exe を抜いた拡張子なしのファイル名を指定して
OSに実行させる事は可能だが、これはOSが拡張子部分を特別扱いしているからだ。
UNIX系OSではそのような方法では実行できずファイル名を全て指定する必要がある。xxx.pl なら
xxx.pl と指定する必要があり xxx のみでは実行できない。その代わり実行パーミッションが立って
いればファイル名がどうであろうともOSはそれを実行しようとする(実際に実行できるかどうかは
ファイルの内容による)。
441デフォルトの名無しさん
2020/05/30(土) 08:54:37.07ID:Noe/rV9t 拡張子が無くても判定できるようにすればいいんじゃないの? Emacs みたいに。
442デフォルトの名無しさん
2020/05/30(土) 12:16:10.21ID:h49XlInt >>441
つ fileコマンド
つ fileコマンド
443デフォルトの名無しさん
2020/05/30(土) 13:18:31.04ID:9sn/rA++ >>439
運用のために保守は犠牲にするんですか?
運用のために保守は犠牲にするんですか?
444デフォルトの名無しさん
2020/05/30(土) 13:58:45.71ID:h49XlInt445デフォルトの名無しさん
2020/05/30(土) 15:56:11.11ID:CwCZ2prN >>440
シェバン知らず?
シェバン知らず?
446デフォルトの名無しさん
2020/05/30(土) 18:54:59.01ID:h49XlInt447デフォルトの名無しさん
2020/05/30(土) 19:43:41.34ID:GvMJ9/EG >>432
おじいちゃん(´・ω・`)
おじいちゃん(´・ω・`)
448デフォルトの名無しさん
2020/05/31(日) 02:15:32.98ID:MeZ7svrP 言語変えて作り直すって、俺の感覚ではシステム置き換えのイメージだわ
コンパイル済みのバイナリならともかく、スクリプト言語動かすって環境づくりも入るじゃん
コンパイル済みのバイナリならともかく、スクリプト言語動かすって環境づくりも入るじゃん
450デフォルトの名無しさん
2020/05/31(日) 03:40:37.55ID:qe5b9Icc451デフォルトの名無しさん
2020/05/31(日) 04:22:23.87ID:fhA8y4ka 読解力理解力がなくて、複数から指摘されたからって、自演扱いで返すとは見苦しいぞ。
452デフォルトの名無しさん
2020/05/31(日) 05:26:43.75ID:pTVQa+4z >>450
それ何のOSでの話?
それ何のOSでの話?
453デフォルトの名無しさん
2020/06/11(木) 19:05:11.82ID:5cioSHJn 「local $| = 1;」と言う記述見たんですけど、
「$|」の局所化って意味あるのでしょうか?
ただ単に「$| = 1;」と等価であり「local」を記述しても無駄な気がするんですけど、
私の勘違いでしょうか?
「local $| = 1;」とやることで、
そのファイルの出力だけみたいな感じになるのですか?
となると、
同プロセスなのに標準出力バッファが出力毎に別個に用意されてる事になってしまいますよね?
分かるかた教えてください。
「$|」の局所化って意味あるのでしょうか?
ただ単に「$| = 1;」と等価であり「local」を記述しても無駄な気がするんですけど、
私の勘違いでしょうか?
「local $| = 1;」とやることで、
そのファイルの出力だけみたいな感じになるのですか?
となると、
同プロセスなのに標準出力バッファが出力毎に別個に用意されてる事になってしまいますよね?
分かるかた教えてください。
454デフォルトの名無しさん
2020/06/11(木) 19:32:41.35ID:zOJFiWlV >>453
スコープを抜けたときに、もとの値に戻る。
スコープを抜けたときに、もとの値に戻る。
455デフォルトの名無しさん
2020/06/11(木) 19:37:09.97ID:YKNmcAQr 横からだけど知らなかった…
毎回もとの値別変数で退避してた
毎回もとの値別変数で退避してた
456デフォルトの名無しさん
2020/06/11(木) 19:53:05.96ID:L2GhQgnz なんとなく直感的にグローバル変数だけだと思ってた
だから元の値を退避しておくという発想の方が自然
わざわざぶつけて便利に使おうという発想はいずれバグる
だから元の値を退避しておくという発想の方が自然
わざわざぶつけて便利に使おうという発想はいずれバグる
457デフォルトの名無しさん
2020/06/11(木) 20:13:03.35ID:5cioSHJn >>454
レスありがとうございます。
「もとの値に戻る」と言う事は、a.plから参照される異なるスコープのb.pmがあり、
b.pmに「local $| = 1;」の記述があった場合、
b.pmに定義されたサブルーチンが呼び出される毎に、
「$| = 1;」と同等の処理が行われ、
戻る際には元の値がセットされるのでしょうか?
それとも、スコープによって異なる「$|」を、
標準出力側でスコープ毎に切り替えてるという事でしょうか?
レスありがとうございます。
「もとの値に戻る」と言う事は、a.plから参照される異なるスコープのb.pmがあり、
b.pmに「local $| = 1;」の記述があった場合、
b.pmに定義されたサブルーチンが呼び出される毎に、
「$| = 1;」と同等の処理が行われ、
戻る際には元の値がセットされるのでしょうか?
それとも、スコープによって異なる「$|」を、
標準出力側でスコープ毎に切り替えてるという事でしょうか?
458デフォルトの名無しさん
2020/06/11(木) 20:24:12.92ID:L2GhQgnz printする度に今見えてる$|が渡ってるんだろうな
459デフォルトの名無しさん
2020/06/11(木) 21:09:21.20ID:5cioSHJn460デフォルトの名無しさん
2020/06/11(木) 22:40:57.89ID:zOJFiWlV461デフォルトの名無しさん
2020/06/12(金) 02:39:58.45ID:TN61WwYv 宜しくお願いします。
$1をクリアしたい場合は「'' =~ /()/;」等として
無駄なマッチングをして空文字列を設定しないとダメですか?
数億件のデータを捌く際とか、めちゃくちゃタイムロスになりますよね?
皆様はどうされてるのでしょう?
$1をクリアしたい場合は「'' =~ /()/;」等として
無駄なマッチングをして空文字列を設定しないとダメですか?
数億件のデータを捌く際とか、めちゃくちゃタイムロスになりますよね?
皆様はどうされてるのでしょう?
462461
2020/06/12(金) 02:41:54.90ID:TN61WwYv463540
2020/06/12(金) 02:51:00.48ID:OceO7BHX >>461
まず、scalar変数の場合
=()はできない
=''や""は明示的に空文字列を設定することになる
なので既存変数をクリア、というか不定状態に設定するには
= undef;
あるいは数値を設定するためのシンボルを値0に戻すには
= 0;
undefは値として評価されれれば0,文字列として評価割れれば空文字列''が返った
(と思う)
まず、scalar変数の場合
=()はできない
=''や""は明示的に空文字列を設定することになる
なので既存変数をクリア、というか不定状態に設定するには
= undef;
あるいは数値を設定するためのシンボルを値0に戻すには
= 0;
undefは値として評価されれれば0,文字列として評価割れれば空文字列''が返った
(と思う)
464デフォルトの名無しさん
2020/06/12(金) 03:17:40.95ID:O2sQpJVa 答えではないのだけれど、そういう場面に遭遇したことがないんだよね
簡単でいいのでどんな時に必要なのかしら?
簡単でいいのでどんな時に必要なのかしら?
465461
2020/06/12(金) 03:24:01.31ID:TN61WwYv466461
2020/06/12(金) 03:52:20.68ID:TN61WwYv >>464
計 数億件のデータがあり、
それぞれにはCのラベルのような項目名がありまして、
それに続く文字列がその項目の値になるのですが、
(例えば「name: value…\n」な感じです)
これを一時的にDBに収めるためnameをキーとしてライブラリに渡したいんです。
一般的に思いつく方法としては、
「if( $ln =~ /^(パターン)://g ){ func( $1, $ln ); … }」
とすれば良いのですが、
なにせ件数が多いので、無駄な条件文を省きたいのです。
(条件文は処理が重いので)
検証実測値では1日以上の処理速度差がでるかもなのです。
(他にも同等の処理があるのでかなり省ける感じがするんです)
func()は、キーや値が未定義値もしくは空値であれば、
なにも処理をせず抜けるので、
$1がクリアできればif文を無くすことが出来ます。
そこで思いついたのが、
>>461の「'' =~ /()/;」ですが、これでは本末転倒です。
と言うのが経緯です。
計 数億件のデータがあり、
それぞれにはCのラベルのような項目名がありまして、
それに続く文字列がその項目の値になるのですが、
(例えば「name: value…\n」な感じです)
これを一時的にDBに収めるためnameをキーとしてライブラリに渡したいんです。
一般的に思いつく方法としては、
「if( $ln =~ /^(パターン)://g ){ func( $1, $ln ); … }」
とすれば良いのですが、
なにせ件数が多いので、無駄な条件文を省きたいのです。
(条件文は処理が重いので)
検証実測値では1日以上の処理速度差がでるかもなのです。
(他にも同等の処理があるのでかなり省ける感じがするんです)
func()は、キーや値が未定義値もしくは空値であれば、
なにも処理をせず抜けるので、
$1がクリアできればif文を無くすことが出来ます。
そこで思いついたのが、
>>461の「'' =~ /()/;」ですが、これでは本末転倒です。
と言うのが経緯です。
467デフォルトの名無しさん
2020/06/12(金) 04:05:50.63ID:Cyxf//AW468デフォルトの名無しさん
2020/06/12(金) 04:13:00.69ID:Cyxf//AW あら、いきちがった。。。
そういう話であれば、気にするな、ってところやろ。w
オレの感覚では、ifで判定して関数を呼び出さないほうが速そうだと思うがなあ。
Perlの処理としては、関数からすぐ戻ると言っても、呼び出しもそこからの戻りもそんなに軽くはなかったような。
「かも」とか言ってないで、真剣ならまず計測してみろ。
そういう話であれば、気にするな、ってところやろ。w
オレの感覚では、ifで判定して関数を呼び出さないほうが速そうだと思うがなあ。
Perlの処理としては、関数からすぐ戻ると言っても、呼び出しもそこからの戻りもそんなに軽くはなかったような。
「かも」とか言ってないで、真剣ならまず計測してみろ。
469デフォルトの名無しさん
2020/06/12(金) 05:15:54.75ID:O2sQpJVa 説明してくれたけど、やっぱイマイチ分からん
$1をクリアして無条件でfunc( $1, $ln )を呼び出したい、ということかしら
その時funcは通過するだけ、と
パフォーマンスを気にするならやっぱり $1 && func( $1, $ln )とかの方がいいと思うけどな
多分、何か事情があるのでしょう。
美しくはないけど'' =~ /()/;なら誤差の範疇と思いますよ。
数値としてはベンチマークで
$1をクリアして無条件でfunc( $1, $ln )を呼び出したい、ということかしら
その時funcは通過するだけ、と
パフォーマンスを気にするならやっぱり $1 && func( $1, $ln )とかの方がいいと思うけどな
多分、何か事情があるのでしょう。
美しくはないけど'' =~ /()/;なら誤差の範疇と思いますよ。
数値としてはベンチマークで
470デフォルトの名無しさん
2020/06/12(金) 05:31:29.45ID:P559B0Rd $1をやめる選択肢は?
($label) = $ln =~ /^(パターン)://;
func($label, $ln);
($label) = $ln =~ /^(パターン)://;
func($label, $ln);
471デフォルトの名無しさん
2020/06/12(金) 05:32:22.97ID:P559B0Rd あ、/ 多い……
472デフォルトの名無しさん
2020/06/12(金) 05:38:56.76ID:O2sQpJVa 答えじゃないんだけどさ、
$x = $ln =~ /^(パターン):/ && $1
これで以降は$xを使う、とか。
$x = $ln =~ /^(パターン):/ && $1
これで以降は$xを使う、とか。
473デフォルトの名無しさん
2020/06/12(金) 05:48:44.96ID:P559B0Rd え、array使わないの?
俺としては
($label) = $ln =~ /^(パターン):/;
func($label, $ln) if $label;
を推したい
俺としては
($label) = $ln =~ /^(パターン):/;
func($label, $ln) if $label;
を推したい
474デフォルトの名無しさん
2020/06/12(金) 07:57:32.00ID:kFexpNJ3 Ruby で特殊変数などは、スレッドローカル変数だから、
マルチスレッドでも共有しないから、安全だけど
特殊変数をクリアする必要など、考えたこともない
マルチスレッドでも共有しないから、安全だけど
特殊変数をクリアする必要など、考えたこともない
475デフォルトの名無しさん
2020/06/12(金) 09:26:27.43ID:Xic6e0Vs マッチに失敗してるのに古い$1を使ってしまって、
みたいなケースはちょいちょいあるな
それはクリアしてなかったからではなくて、失敗をトラップしてないバグ
みたいなケースはちょいちょいあるな
それはクリアしてなかったからではなくて、失敗をトラップしてないバグ
476デフォルトの名無しさん
2020/06/12(金) 13:25:45.07ID:Qkj+08r5477デフォルトの名無しさん
2020/06/12(金) 13:29:01.14ID:Qkj+08r5 速くしたいなら正規表現でマッチするかどうかなんてことやることそのものが間違いだとも思える。
同じPerl使うのであってもindex関数使うとか、他にやりようがあるんじゃないか?
同じPerl使うのであってもindex関数使うとか、他にやりようがあるんじゃないか?
478デフォルトの名無しさん
2020/06/12(金) 14:03:27.64ID:Xic6e0Vs 大量のデータを効率よく扱うのは、データベース構築するのが正解
個人が扱う範囲だと、テキストで持って全検索で困らないけど、
量が増えるとそのうち破綻する
個人が扱う範囲だと、テキストで持って全検索で困らないけど、
量が増えるとそのうち破綻する
479デフォルトの名無しさん
2020/06/12(金) 14:24:52.04ID:uUh54YqY >466
$ln =~ /^(パターン):|(.*?)/
にすると、「^(パターン):」にマッチしないときに$1を空文字にできる。
$ln =~ /^(パターン):|(.*?)/
にすると、「^(パターン):」にマッチしないときに$1を空文字にできる。
480デフォルトの名無しさん
2020/06/12(金) 14:50:38.25ID:uUh54YqY ただ、(試してはいないが)if文のオーバーヘッドより、
関数呼び出しのオーバーヘッドのほうが大きいと思うけどな。
関数呼び出しのオーバーヘッドのほうが大きいと思うけどな。
481デフォルトの名無しさん
2020/06/12(金) 15:40:26.50ID:bpI5hVyH そこまで速度に気にするならC++とかで書いた方がいい気がするね
482デフォルトの名無しさん
2020/06/17(水) 18:41:04.46ID:TVwLVBUa そんなデカいデータをよくパールでやるね。
C で書け。
C で書け。
483デフォルトの名無しさん
2020/06/28(日) 09:30:04.48ID:mI+4+ud7 https://developers.srad.jp/story/20/06/26/1324207/
> Perl 7が発表される。実質的にはPerl 5系のリネーム
> ストーリー by hylom 2020年06月26日 17時08分
> 現代における素人にはオススメできない言語 部門より
現代における素人にはオススメできない言語
…なら、文字列処理をやりたい素人は何を学べばいいの?
> Perl 7が発表される。実質的にはPerl 5系のリネーム
> ストーリー by hylom 2020年06月26日 17時08分
> 現代における素人にはオススメできない言語 部門より
現代における素人にはオススメできない言語
…なら、文字列処理をやりたい素人は何を学べばいいの?
484デフォルトの名無しさん
2020/06/28(日) 11:26:26.20ID:OE2OIMMC 5の後継なら7にする必要あるの?
485デフォルトの名無しさん
2020/06/28(日) 13:29:12.55ID:3gXsrtkR486デフォルトの名無しさん
2020/06/28(日) 18:17:09.91ID:UG2zXSFM お型付けできるようになったら嬉しいな
487デフォルトの名無しさん
2020/06/28(日) 19:55:20.21ID:DGGKS5Fb ついに後方互換捨てるのか!
488デフォルトの名無しさん
2020/07/02(木) 21:44:39.67ID:wuNvV9ki デフォルトの状態が変わるだけで
適宜オプションつければ後方互換も保てるらしいよ
Perlのこういうところ好きだわ
適宜オプションつければ後方互換も保てるらしいよ
Perlのこういうところ好きだわ
489デフォルトの名無しさん
2020/07/04(土) 13:31:08.07ID:yrmljXci 今のところは、な・・・
490デフォルトの名無しさん
2020/07/04(土) 18:51:36.50ID:25OQuAeP Perl7は進化を求める
この10年で完全にオワコン言語になってしまった
この10年で完全にオワコン言語になってしまった
491デフォルトの名無しさん
2020/07/04(土) 19:41:56.61ID:+vSKr8nf 効率化して高速化しようとしても、過去に足を引っ張られる
492デフォルトの名無しさん
2020/07/04(土) 19:48:46.40ID:VctW6lO7 単純に過去を切り捨てたら、Rakuの二の舞になる。過去を切り捨てるのであれば、
Python に勝てる程度の言語仕様にしなければ、見向きもされないだろう。
しかし、それはもう既にPerlではないだろう。
Python に勝てる程度の言語仕様にしなければ、見向きもされないだろう。
しかし、それはもう既にPerlではないだろう。
493デフォルトの名無しさん
2020/07/04(土) 20:01:08.35ID:XHKaM396 Perlはこのままでいいと思う
レガシーなのがPerlの強さ
レガシーなのがPerlの強さ
494デフォルトの名無しさん
2020/07/04(土) 20:55:27.14ID:+vSKr8nf negative legacy
495デフォルトの名無しさん
2020/07/05(日) 01:06:23.02ID:BkxIDrcL496デフォルトの名無しさん
2020/07/06(月) 00:05:12.58ID:Dee8Pqdl 逆に頑張って作ったPerl6が古いみたいな感じになっちゃうな(´・ω・`)
497デフォルトの名無しさん
2020/07/06(月) 02:55:32.01ID:pEZsiPGN もうPerl6は存在しないからだいじょうぶ。
498デフォルトの名無しさん
2020/07/06(月) 03:53:08.41ID:Lg+fAiJM Perl6はさっさと開発中止すべきだったのになぜ続行したんだろう
499デフォルトの名無しさん
2020/07/06(月) 19:42:39.82ID:5vDJxItj ま、いいじゃねえか。新しい言語が一つ増えたようなもんだし。
500デフォルトの名無しさん
2020/07/06(月) 21:20:03.77ID:pEZsiPGN501デフォルトの名無しさん
2020/07/07(火) 18:34:24.36ID:e1WbjzO/ うまくいくべき
502デフォルトの名無しさん
2020/07/07(火) 18:40:58.31ID:/oL+BKEU べきであるある
503デフォルトの名無しさん
2020/07/07(火) 18:42:17.26ID:v8PkKQM3504デフォルトの名無しさん
2020/07/07(火) 19:01:21.20ID:e1WbjzO/ 俺様
505デフォルトの名無しさん
2020/07/23(木) 01:04:36.09ID:2kWEZYuR ___________________________________________
/media/xxx/DVD_HDVR/HDVR_SOB/*.SRO
というのが動画本体で、
SROファイルの構造は
000000-00007F 東芝ヘッダ
000080-007FFF (データA)
008000-00807F 東芝ヘッダ
008080-00FFFF (データB)
010000-01007F 東芝ヘッダ
010080-01FFFF (データC)
となっていて、東芝ヘッダからみたオフセット0x1C番地にある0x40値を=>0x00に書き換えるそうです。
東芝ヘッダは1つのファイルに複数ある(?)そうで、それらすべてを書き換える必要があるようです
↑
これをperlスクリプトでお願いします
/media/xxx/DVD_HDVR/HDVR_SOB/*.SRO
というのが動画本体で、
SROファイルの構造は
000000-00007F 東芝ヘッダ
000080-007FFF (データA)
008000-00807F 東芝ヘッダ
008080-00FFFF (データB)
010000-01007F 東芝ヘッダ
010080-01FFFF (データC)
となっていて、東芝ヘッダからみたオフセット0x1C番地にある0x40値を=>0x00に書き換えるそうです。
東芝ヘッダは1つのファイルに複数ある(?)そうで、それらすべてを書き換える必要があるようです
↑
これをperlスクリプトでお願いします
506デフォルトの名無しさん
2020/07/23(木) 06:45:22.79ID:6LXR6fOg binmodeで開いて、substr
507デフォルトの名無しさん
2020/07/23(木) 19:03:52.69ID:2kWEZYuR508デフォルトの名無しさん
2020/07/23(木) 19:09:07.35ID:NaEhWCW1 コードそのものを書いてくれとさ
509デフォルトの名無しさん
2020/07/23(木) 19:25:52.21ID:2kWEZYuR 同じような目的の別のスクリプトです
これに近いイメージでしょうか
(全文書くとブロックされる)
_________________________________________________________
HR_MANGR.IFOのコピー禁止フラグ解除は、
0x20 0x2C 0x23のシーケンスを0x20 0x24 0x23 に変更
perlスクリプトの例は以下のとおり。
# freeifo.pl
# HR_MANGR.IFOの変換
use strict;
use warnings;
my $infile = "HR_MANGR.IFO";
my $buf;
my $sTarget = " ,#"; # 0x20 0x2C 0x23
# ファイルのオープン
# バイナリモードに変更
binmode INFILE;
binmode OUTFILE;
my $sizIFO = -s $infile;
# IFOファイルを読み込み
# 0x20 0x2C 0x23 の並びがあれば、0x20 0x24 0x23 に置き換え
#他にあれば継続、無ければ終了
# ファイルのクローズ
close INFILE;
close OUTFILE;
これに近いイメージでしょうか
(全文書くとブロックされる)
_________________________________________________________
HR_MANGR.IFOのコピー禁止フラグ解除は、
0x20 0x2C 0x23のシーケンスを0x20 0x24 0x23 に変更
perlスクリプトの例は以下のとおり。
# freeifo.pl
# HR_MANGR.IFOの変換
use strict;
use warnings;
my $infile = "HR_MANGR.IFO";
my $buf;
my $sTarget = " ,#"; # 0x20 0x2C 0x23
# ファイルのオープン
# バイナリモードに変更
binmode INFILE;
binmode OUTFILE;
my $sizIFO = -s $infile;
# IFOファイルを読み込み
# 0x20 0x2C 0x23 の並びがあれば、0x20 0x24 0x23 に置き換え
#他にあれば継続、無ければ終了
# ファイルのクローズ
close INFILE;
close OUTFILE;
510デフォルトの名無しさん
2020/07/24(金) 04:55:58.03ID:6ZonvnML そうそう。そんな感じ。
まあ頑張って。
まあ頑張って。
511デフォルトの名無しさん
2020/07/24(金) 09:07:49.48ID:So4dssPK 書き換える番地は、N は、0 以上で、以下の法則か?
0x8000 × N + ( 0x80 + 0x1C )
つまり、ヘッダは必ず、0x8000 毎にあるのか?
0x8000 × N + ( 0x80 + 0x1C )
つまり、ヘッダは必ず、0x8000 毎にあるのか?
512デフォルトの名無しさん
2020/07/24(金) 11:24:40.72ID:JRbdBOQM >>511
レスありがとうございます
________________________________________________
SROファイルの書き換え
000000-00007F 東芝ヘッダ
000080-007FFF (データA)
008000-00807F 東芝ヘッダ
008080-00FFFF (データB)
010000-01007F 東芝ヘッダ
010080-01FFFF (データC)
というふうに、0x8000バイトで1セットとなっている。
東芝ヘッダとは、0x80バイトからなるデータブロック。途中に## Toshiba 〜という文字列を含んでいる
東芝ヘッダのコピー禁止フラグ(CPP)のあるオフセット0x1Cを 0x40 ⇒ 0x00 に修正。
レスありがとうございます
________________________________________________
SROファイルの書き換え
000000-00007F 東芝ヘッダ
000080-007FFF (データA)
008000-00807F 東芝ヘッダ
008080-00FFFF (データB)
010000-01007F 東芝ヘッダ
010080-01FFFF (データC)
というふうに、0x8000バイトで1セットとなっている。
東芝ヘッダとは、0x80バイトからなるデータブロック。途中に## Toshiba 〜という文字列を含んでいる
東芝ヘッダのコピー禁止フラグ(CPP)のあるオフセット0x1Cを 0x40 ⇒ 0x00 に修正。
513デフォルトの名無しさん
2020/07/24(金) 11:37:31.23ID:nuOKXnku オレなら、バイナリーエディタの置換機能を使うと思うが。
514デフォルトの名無しさん
2020/07/24(金) 11:40:12.29ID:61Z/1/Bp 数が多いとツール作った方が早い
手動でやってもツール作っても時間同じなら、ツール作った方がいい
仕事では、ツール作ったせいで余計に時間かかってもツール作る
手動でやってもツール作っても時間同じなら、ツール作った方がいい
仕事では、ツール作ったせいで余計に時間かかってもツール作る
515デフォルトの名無しさん
2020/07/24(金) 11:53:07.60ID:JRbdBOQM >>513
データが大きいのでLinuxのバイナリエディタでは上手く行かないのです
データが大きいのでLinuxのバイナリエディタでは上手く行かないのです
516デフォルトの名無しさん
2020/07/24(金) 12:54:55.96ID:JRbdBOQM517デフォルトの名無しさん
2020/07/24(金) 15:39:03.44ID:EkE5sKTE perl -e "binmode STDIN; binmode STDOUT; while (read STDIN, $_, 0x8000) { substr $_, 0x1c, 1, 0; print }" < IN > OUT
これが最短?
これが最短?
518デフォルトの名無しさん
2020/07/24(金) 15:58:32.23ID:JRbdBOQM519デフォルトの名無しさん
2020/07/24(金) 16:06:11.64ID:JRbdBOQM520デフォルトの名無しさん
2020/07/24(金) 16:07:20.05ID:UzZpGBU/ >>515
なるほどね。しかし、perlが扱えるデータ量にも、よく解らない限界があって、
巨大なデータを突っ込むと勝手に途中で切られたりするみたいだよ。
巨大なデータを扱うなら、seek関数みたいな低水準な手法を使う必要があるかもしれない。
なるほどね。しかし、perlが扱えるデータ量にも、よく解らない限界があって、
巨大なデータを突っ込むと勝手に途中で切られたりするみたいだよ。
巨大なデータを扱うなら、seek関数みたいな低水準な手法を使う必要があるかもしれない。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 橋下徹氏 外務省幹部の訪中受け「口だけ番長」へ痛烈指摘 「喧嘩は日本の完敗…なんとかっこ悪い日本か」 [冬月記者★]
- 【外国人問題】小野田紀美担当相「不法就労や不法滞在は許さない」 [シャチ★]
- 【野球】井端監督 大谷翔平、山本由伸らのWBCへの参加 「1日も早く返事ほしい」「待っててといっても、国内組が遅くなってしまう」★3 [冬月記者★]
- 経団連会長、日中は建設的対話を 経済3団体が高市首相と初会談も日中関係は話題に登らず… [BFU★]
- 中国で「クレしん」公開延期 対日報復、エンタメに波及 [蚤の市★]
- 東京株式市場 インバウンド関連株が下落 中国政府の渡航自粛要請で [バイト歴50年★]
- 泣ける画像
- 有識者「高市総理が発言を撤回したり、辞職するしかないと言っている人は、それで日中関係が今まで通りになると思ってる?」 [834922174]
- 戦争は無くならないし殺人は起きるし女はレイプされるし子供は餓死するし
- 女性検診なんでオナニーしてグチョグチョで行ってやる
- 日経時間外、5万円割れ 垂直落下始まる [402859164]
- ( ´・ω・` )朝ですぞー
