[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 12/06 15:43 / Filesize : 269 KB / Number-of Response : 1047
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Perlについての質問箱 63箱目



1 名前:デフォルトの名無しさん [2014/02/19(水) 23:36:23.29 .net]
CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
(WEBプログラミング板: 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箱目
toro.2ch.net/test/read.cgi/tech/1381561905/
Perlについての質問箱 62箱目
toro.2ch.net/test/read.cgi/tech/1385039352/

401 名前:デフォルトの名無しさん [2016/08/05(金) 00:01:27.27 ID:RLQt/Rjs.net]
>>393
それだとロックの間に隙間ができる

402 名前:デフォルトの名無しさん [2016/08/05(金) 00:02:57.68 ID:RLQt/Rjs.net]
実行時間が0.15秒から0.2秒のperlスクリプトは重い部類ですか?

403 名前:デフォルトの名無しさん mailto:sage [2016/08/05(金) 00:22:53.93 ID:/+BaQz+x.net]
>>393
データとは別にロック中か識別するためだけのロックファイルまたはディレクトリを用意するものなんじゃないの?>>392のように

404 名前:デフォルトの名無しさん [2016/08/05(金) 09:40:54.31 ID:rvcc+G4N.net]
1:投稿数ファイルをロック
2:投稿数ファイルを書き込み
3:投稿数ファイルをアンロック
4:投稿ファイルをロック
5:投稿ファイルを書き込み
6:投稿ファイルをアンロック

じゃだめなのかな。

405 名前:デフォルトの名無しさん mailto:sage [2016/08/05(金) 09:49:56.50 ID:iMQ1FKDS.net]
それ投稿数と投稿が連動してないやん

ロック
必要な書き込み全部
ロック解除

が普通

406 名前:デフォルトの名無しさん [2016/08/05(金) 17:58:59.50 ID:rvcc+G4N.net]
それは「普通」というより「手抜き」だね。最初はそれでいいと思うけど。

407 名前:デフォルトの名無しさん mailto:sage [2016/08/05(金) 21:06:28.92 ID:n2C4Ao5J.net]
>>401
普通じゃなくて天才だよ。
完璧な答え。

408 名前:デフォルトの名無しさん mailto:sage [2016/08/05(金) 21:06:53.73 ID:n2C4Ao5J.net]
>>399
だめ。それはバグ。

409 名前:デフォルトの名無しさん mailto:sage [2016/08/06(土) 00:52:14.83 ID:aSfsFG4F.net]
まあ質問の直後にいきなり答えが書いてある
それを分からないのが混ぜ返してるだけだ
>>391-392



410 名前:デフォルトの名無しさん [2016/08/06(土) 07:58:04.15 ID:nmoqGXlF.net]
(書き込み時)

1:まとめロックようファイルを作る
2:まとめロック用ファイルを排他ロックする
3:投稿ファイルにを投稿を書き込む
4:投稿数ファイルに投稿数を書き込む
5:まとめロックの解除

(観覧時)
1:まとめロック用ファイルを共有ロックする
2:投稿ファイルを読み込んで表示する
3;投稿数ファイルを読み込んで表示する
4:まとめロックを解除

これが正しい

411 名前:デフォルトの名無しさん mailto:sage [2016/08/09(火) 01:43:06.25 ID:s2zPwIrc.net]
>>396
何のために数字が振ってあるのか分かる?

412 名前:デフォルトの名無しさん mailto:sage [2016/08/09(火) 02:52:34.66 ID:d2ilw35z.net]
なんのため?
プロセス間の整合を取るのにプロセス内の順序は全く意味ない数字と思うけど。
うーん、なんのためだろ?教えてくれないかな?

413 名前:デフォルトの名無しさん mailto:sage [2016/08/09(火) 22:13:03.27 ID:zWs+JfAu.net]
> プロセス内の順序は全く意味ない数字と思うけど。

え? 順番を入れ替えても同じなると思ってるの?
例えば5 → 1 → 4 → 3 → 2 → 6 の順番で
実行しても同じ結果になると?

ロックの話以前に、あんたが何が言いたいのかわからない

414 名前:デフォルトの名無しさん mailto:sage [2016/08/09(火) 23:09:59.97 ID:d2ilw35z.net]
んでなんのため?

あと関係ない話しかしてないようだけど、同じになるって情報はどこから?
そしてその話になんの意味があると思い込んでますか?

415 名前:デフォルトの名無しさん mailto:sage [2016/08/09(火) 23:36:26.59 ID:zWs+JfAu.net]
> んでなんのため?

順番が重要だからだろ。

416 名前:デフォルトの名無しさん mailto:sage [2016/08/09(火) 23:38:43.66 ID:zWs+JfAu.net]
>>393が書いてあることは正しくて、
この順番通りの処理をすると不整合が起きない。

重要なのは書き込みを行う前に書き込むファイルすべてを
ロックする

417 名前:ニいうこと。最初にまとめて行う。

こうすることでロックの間に処理が割り込まれず
正しく書き込むことができる。
[]
[ここ壊れてます]

418 名前:デフォルトの名無しさん mailto:sage [2016/08/09(火) 23:45:04.85 ID:d2ilw35z.net]
ここまで正しい回答が何度も出てるのに、そのあとから間違った回答を自身満々にするのもすごいと思う
ロックは常にプロセス間の整合のみ取るべし

419 名前:デフォルトの名無しさん mailto:sage [2016/08/09(火) 23:54:26.10 ID:d2ilw35z.net]
ごめん。外部仕様としてはこの場合正しかった。
内部的にはやってはいけないお手本のような無意味なロックがされてて、それで勘違いした。すまんかった。



420 名前:デフォルトの名無しさん mailto:sage [2016/08/10(水) 08:11:51.04 ID:UJ0StgLg.net]
いいってことよ

421 名前:デフォルトの名無しさん mailto:sage [2016/08/13(土) 09:19:35.74 ID:Y2Ng1HRN.net]
確かにロックはプロセス間通信の一種で使う技術も同じか
こうゆうのはスクリプトをプログラムと思ってる人と、プログラムの基礎的な部分から学んだ人とでは差が出そうだね

422 名前:デフォルトの名無しさん mailto:sage [2016/08/22(月) 20:05:32.69 ID:2GCPiaHi.net]
windows7で文字化けファイル名を取得するとショートファイルで得られるようですが、
ロングファイルのビットの並びをそのまま得たいです。
指定して得るにはどうすれば良いでしょうか?

ちなみにDOSなどでのコマンドは知っています。

423 名前:デフォルトの名無しさん mailto:sage [2016/08/22(月) 23:45:40.07 ID:vzm1zF9k.net]
`dir /b *.*`
次スレのテンプレに追加するから

424 名前:デフォルトの名無しさん mailto:sage [2016/08/23(火) 00:01:48.07 ID:GgtizVRn.net]
コマンドじゃなくてPerlでどうにかしたいのだけど

425 名前:デフォルトの名無しさん mailto:sage [2016/08/23(火) 02:38:12.51 ID:a3VZWpnc.net]
バッククォートの意味が分からないのかな

426 名前:デフォルトの名無しさん mailto:sage [2016/08/23(火) 07:59:22.61 ID:GgtizVRn.net]
コマンドだろ

427 名前:デフォルトの名無しさん mailto:sage [2016/08/23(火) 22:48:28.92 ID:evJ0lXFt.net]
my @file = split(/\n/,`dir /b *.* 2>NUL`);
# あとは夏休みの宿題、な

428 名前:デフォルトの名無しさん mailto:sage [2016/08/24(水) 08:59:06.43 ID:hHpNATWD.net]
すまん、回答してるつもりだろうけど、頭悪い人に用はないんだ。
わざわざ何度も書いてる様だが、一番最初に(も)言った通りコマンド使うやりかたはできるから。

あと全レス会話の繋がりもなく、堂々と好き勝手なこと書く人間もしんどい。

429 名前:デフォルトの名無しさん mailto:sage [2016/08/24(水) 12:35:26.35 ID:CgBgF68oI]
search.cpan.org/~grian/Win32-FindFile/lib/Win32/FindFile.pm

などと挙げてみたものの、あまり信用できないモジュールだな、これ。



430 名前:デフォルトの名無しさん mailto:sage [2016/08/24(水) 20:30:09.76 ID:fxHMMLTZ.net]
いや、君の記述能力が頭悪いんだよ。
流行の言葉で言うとコミュ力やプレゼン力がない。
コマンド知ってますなんて言い方じゃ伝わらない。
少しは自分の不徳を省みたらどうか。

431 名前:デフォルトの名無しさん mailto:sage [2016/08/24(水) 20:38:10.41 ID:W4vM/rXO.net]
再現出来る環境無いんだけどWin32::GetLongPathNameはどうかな

432 名前:デフォルトの名無しさん mailto:sage [2016/08/24(水) 20:59:49.53 ID:jqqoh+mK.net]
これは知ってるかい?→ <*>

433 名前:デフォルトの名無しさん mailto:sage [2016/08/24(水) 23:20:14.12 ID:hHpNATWD.net]
>>426
すまないがそれでは得られる文字は同じで、文字化け文字にはショートが適用されます。
おそらくwindowsに対するアプローチを変えないとだめだと思うのです。

>>425
いけたよありがとう。
API叩いてやりくりしてたけど、暫定的にそれを使わせてもらうよありがとう。
windowsは外部的にもさっさとunicode使ってほしいと思う。


>>424
その無駄な4行必要か?なんか書きたいなら頑張って回答書けば?(俺としては書かないで頂きたいけどな)

434 名前:デフォルトの名無しさん mailto:sage [2016/08/24(水) 23:31:21.73 ID:jqqoh+mK.net]
まあとにかく特殊な環境なんだね。もう少し前提条件を書いたほうが早く欲しい回答を得られたと思うよ。
>>4

435 名前:16の書き方じゃ>>424に文句を言う筋合いはないよ。 []
[ここ壊れてます]

436 名前:デフォルトの名無しさん mailto:sage [2016/08/29(月) 17:11:38.79 ID:x3G6j3++.net]
どうでもいいけど特殊な環境じゃなくてwindows標準の仕様かと

437 名前:デフォルトの名無しさん mailto:sage [2016/08/29(月) 21:33:30.70 ID:NQxKIK4Q.net]
文字化けが問題なんだろうね

438 名前:デフォルトの名無しさん mailto:sage [2016/08/29(月) 21:40:22.45 ID:x3G6j3++.net]
なぜ化けるのか、と言う話だ
CP932とunicodeが混在してる場合はどうすりゃいいですかって話じゃね

439 名前:デフォルトの名無しさん mailto:sage [2016/09/01(木) 19:27:50.30 ID:vCLh7LOG.net]
ココ参考にして ttp://hirobanex.net/article/2015/03/1425807814
こういう呼び出ししても
$teng->sql_builder->load_plugin('InsertOnDuplicate');
$teng->sql_builder->insert_on_duplicate(略)

Can't locate object method "insert_on_duplicate" via package "Teng::QueryBuilder"
で呼べないんだけどどうしたらいい?



440 名前:デフォルトの名無しさん mailto:sage [2016/09/01(木) 19:29:20.37 ID:vCLh7LOG.net]
ちなみに
__PACKAGE__->load_plugin('+SQL::Maker::Plugin::InsertOnDuplicate');

でもダメ

441 名前:デフォルトの名無しさん mailto:sage [2016/09/01(木) 20:39:24.43 ID:0j1lNnbm.net]
ブログ記事じゃなくてPOD読めよ

442 名前:デフォルトの名無しさん mailto:sage [2016/09/01(木) 22:35:57.18 ID:vCLh7LOG.net]
PODに別パッケージから plugin生やす方法なんて書いてないでしょ

443 名前:デフォルトの名無しさん [2016/09/03(土) 20:53:36.76 ID:pSsdJ5JF.net]
マジレスするなら、
別の方法で呼べるか試してみる
何が起こっているのか調べてみる
ってところか。

444 名前:デフォルトの名無しさん mailto:sage [2016/09/09(金) 12:53:46.35 ID:JRjUoSNq.net]
何を調べたらいいのかわからんので手が付かない

445 名前:デフォルトの名無しさん mailto:sage [2016/09/09(金) 13:05:29.57 ID:JRjUoSNq.net]
はっきりしてるのはhirobanexのとおりに書いてもエラーで動かない事
それも $teng->->execute なんていうタイポレベルの話じゃなく
根本的にどこか間違ってるけど、どこだかわからんということ

$teng->sql_builder ってSQL::Makerを継承した状態でnewされてるんじゃないの?
Teng::QueryBuilder = SQL::Maker だから
これで動くんじゃないの?
$teng->sql_builder->load_plugin('InsertOnDuplicate');
$teng->sql_builder->insert_on_duplicate(略)

446 名前:デフォルトの名無しさん mailto:sage [2016/09/09(金) 16:12:29.13 ID:yxgmGddx.net]
もう直接コード読めよ

447 名前:デフォルトの名無しさん mailto:sage [2016/09/09(金) 16:58:05.37 ID:yxgmGddx.net]
$teng->sql_builderでTeng::QueryBuilderのオブジェクトが帰ってくる
これはほぼSQL::Makerを継承しただけなのでSQL::Maker::load_pluginを読むとどうやらクラスメソッドとして書かれている
実際SQL::MakerのPODにも継承したクラスでクラスメソッドとして呼び出す例が書かれている

つまり $teng->sql_builder->load_plugin('foo') という書き方はオブジェクトから呼び出してるので間違い(おそらくTeng::QueryBuilder=HASH(0x000000)みたいなところに生えてる)
Teng::QueryBuilder->load_plugin('foo') とするか ref($teng->sql_builder)->load_plugin('foo') とするか
もしくはブログの例にもある通り独自のQueryBuilderクラスを用意するか

>>433
この__PACKAGE__はどこに書いたんや?__PACKAGE__の意味わかってる?

448 名前:デフォルトの名無しさん [2016/09/09(金) 17:40:55.04 ID:iPoh5J1m.net]
もう、馬鹿過ぎて哀れだ。実際にやりたいことは

*SQL::Maker::insert_on_duplicate = \&SQL::Maker::Plugin::InsertOnDuplicate::insert_on_duplicate;

ってことでしょ? もうこれでいいでしょ。POD すら読まないんじゃ助けようがないよ。

449 名前:437 [2016/09/10(土) 11:47:34.76 ID:VYsCJTGt.net]
ごめん、言い過ぎた。とりあえず、正解が分らない段階で俺ならどうするかを書くよ。

まず、何をしているのかを POD で確認する。
POD では load_plugin についてはクラスメソッドとして使う例だけが書かれている。
ここで「おかしい」と思わなければならない。
オブジェクトメソッドとして使えないとは書かれていないのでソースコードを読む。
%INC を見ればソースコードの場所は分かる。
load_plugin は予想以上にシンプルだった。これで解決。

解決しなかった場合。
まず、SQL::Maker::Plugin::InsertOnDuplicate を明示的に use する。それで間違いなく呼べる。
SQL::Maker::Plugin::InsertOnDuplicate::insert_on_duplicate( $teng->sql_builder)
あるいは
$teng->sql_builder->SQL::Maker::Plugin::InsertOnDuplicate::insert_on_duplicate
好きな方でいい。これでうまくいくなら load_plugin で何かが間違っている。
デバッガを使うか、load_plugin を差し替えて動作を詳しく調べる。



450 名前:デフォルトの名無しさん mailto:sage [2016/09/10(土) 18:20:16.29 ID:1M4Sozo+.net]
Tengを使うのかどうか自分で選べるのなら、自分が理解していないものを使わないという選択肢がある。
他の人が選んでしかも使わなければならないという状況なら、選んだ人にどう使うのかを聞くといい。

451 名前:デフォルトの名無しさん mailto:sage [2016/09/10(土) 19:19:33.59 ID:7Wlp4jMr.net]
多分ブログ書いた人やその人に教えた人はTeng本体と混ざって勘違いしたんだろうな
Teng自体はインスタンスからもロードできるから

452 名前:デフォルトの名無しさん [2016/09/13(火) 17:44:13.57 ID:AYCTTYgO.net]
この記事、オレオレメモだって自分で書いてるからわざわざつっこむのも野暮だけどOR検索の例もちょっとひどい。
どうしてこうなった?

453 名前:デフォルトの名無しさん mailto:sage [2016/09/22(木) 14:09:25.16 ID:ULuG4eTB.net]
Windows の Strawberry Perl で、「Parallel::ForkManager」は使えますか?

----------------------------------------
use LWP::Simple;
use Parallel::ForkManager;
...
@links=(
["www.foo.bar/rulez.data","rulez_data.txt"],
["new.host/more_data.doc","more_data.doc"],
...
);
...
# 最大30プロセスで並列的にダウンロードを行います
my $pm = new Parallel::ForkManager(30);
foreach my $linkarray (@links) {
$pm->start and next; # forkさせます
my ($link,$fn) = @$linkarray;
warn "Cannot get $fn from $link"
if getstore($link,$fn) != RC_OK;
$pm->finish; # 子プロセスをexitします
}
$pm->wait_all_children;
----------------------------------------
の様なスクリプトで、数万ファイルをダウンロードしようとすると、
  child process '-*****' disappeared.
  A call to `waitpid` outside of Parallel::ForkManager might have reaped it.
のエラーを出しながら、メモリを全消費・開放を何度か繰り返した後に、
最終的には、「Out of memory!」で異常終了します。

Cygwin の Perl では、「Cannot get $fn from $link」エラーを出しまくりますが、
メモリを全消費する事はありません(異常終了もしません)。

454 名前:デフォルトの名無しさん mailto:sage [2016/09/22(木) 15:02:46.45 ID:EZPik98J.net]
windowsのForkは、表面上は同じように動作する仕様になっているが、
実際にプロセスやスレッド、CPUの動作が期待通りになってるかと言うとそれは違う。
ほとんどの場合が、unixとの互換性を保つための見せかけ。

455 名前:デフォルトの名無しさん mailto:sage [2016/09/22(木) 16:23:36.65 ID:PQbGo3UU.net]
rulezの綴りがzの辺り、悪さしてそうだな

456 名前:デフォルトの名無しさん mailto:sage [2016/09/23(金) 01:08:30.38 ID:Ay1vA5a9.net]
if($hoge=~/(\d+)$hoge3$/){$hoge2=$1}

これの意味は

$hoge3が数字のみなら$hogeに代入し、$hoge2にも代入するという意味でしょうか?

457 名前:442 mailto:sage [2016/09/23(金) 05:21:37.52 ID:CNgCRT2E.net]
>>447
「WindowsのFork」の意味は分かりませんが(Windows用PerlのFork?)、
Cygwin の perl は、
  C:\cygwin64\bin\bash --login -i -c "perl ...
等としなくても、Windows から直接起動出来るので、
あのスプリクトで直接起動しても、メモリエラーは出ませんでした。

Cygwin の perl を、Strawberry Perl の代わりに、、、と思ったら、


458 名前:ォなり chomp が、CR+LF を削除してくれなかった。


>>448
perldoc.jp からのコピペです。


>>449
if ( 文字列 =~ /パターン/ )
もし「文字列」の中に「パターン」が含まれていれば、

if ( $hoge =~ /(\d+)$hoge3$/ ) { $hoge2 = $1 }
もし「 $hoge 」の中に「 \d+$hoge3$ 」が含まれていれば、「 $hoge2 」に「 \d+ 」を代入
[]
[ここ壊れてます]

459 名前:445 mailto:sage [2016/09/23(金) 08:03:28.29 ID:Ay1vA5a9.net]
>>450
ありがとうございます。
他言語の底辺SEなので助かりました。



460 名前:デフォルトの名無しさん mailto:sage [2016/09/23(金) 14:09:14.63 ID:eBfGtRhY.net]
普段それを読む文化にない人がいきなり読めたら逆にすごいと思う
PerlってPerlが分かる人だけの言語

461 名前:デフォルトの名無しさん mailto:sage [2016/09/26(月) 17:38:36.14 ID:ak8zLIw0.net]
Perl on Bash on Ubuntu on Windows10 での、
モジュールのインストールで、無駄に苦労した。
  解決法: Config.pm の修正


Windows10 のコマンドプロンプトでも、
エスケープシーケンスが使えるらしい。
  PROMPT $E[96m$T$E[3D $E[93m$P$G$E[37m$E[1C
懐かし

462 名前:デフォルトの名無しさん mailto:sage [2016/09/28(水) 02:39:45.69 ID:sK8+jqCL.net]
ソースはサンプルコードな

463 名前:デフォルトの名無しさん mailto:sage [2016/10/03(月) 14:01:12.25 ID:OUfpKV3+.net]
C:\> prompt $e[1;36m[$d$s$t$h$h$h] $e[1;33m%USERNAME%@%COMPUTERNAME% $e[37m$p$_$g$s

464 名前:デフォルトの名無しさん [2016/10/03(月) 19:32:24.04 ID:tI+B9pP0.net]
ザメフォン元気?

465 名前:デフォルトの名無しさん mailto:sage [2016/10/06(木) 18:37:40.82 ID:fMpg74pi.net]
ビット演算を多用したいんだけど、変数のサイズを指定したい。longとか。
とりあえず、16bitと32bitと64bitの整数が欲しい。
あと数値と文字が勝手に切り替わらないようにしたい。

ビット演算してるブロックだけでいいんで。
あと環境の保証も欲しい。どのマシンでどのbitのPerlとか関係なく。
俺が32bitのビット演算って言えばそれはもう絶対32nit演算。
もちろん不当に遅くなる方法は許さない。

466 名前:デフォルトの名無しさん [2016/10/06(木) 20:14:48.16 ID:rUXrZJG3.net]
C で書け。

467 名前:デフォルトの名無しさん [2016/10/06(木) 20:56:23.24 ID:Wdgc44Vq.net]
C++でもいいぞ

468 名前:デフォルトの名無しさん mailto:sage [2016/10/06(木) 21:07:21.59 ID:ZdOAOk1u.net]
rubyで十分

469 名前:デフォルトの名無しさん mailto:sage [2016/10/06(木) 21:31:39.42 ID:fMpg74pi.net]
Cとかでもいいけどdllの使い方分からないのだ



470 名前:デフォルトの名無しさん mailto:sage [2016/10/07(金) 03:14:09.37 ID:hiGL0oI+.net]
perldoc.jp/func/pack でOK

471 名前:デフォルトの名無しさん [2016/10/07(金) 07:25:20.66 ID:codMUtxm.net]
vec かな。それでも不満なら perlfaq3 を読んで C で書け。

472 名前:デフォルトの名無しさん [2016/10/07(金) 12:43:21.52 ID:codMUtxm.net]
実際に何をして、その結果何が問題だったの? そのくらいは書いてくれないと……

473 名前:デフォルトの名無しさん mailto:sage [2016/10/08(土) 01:08:43.11 ID:hitB9rm0.net]
>>461
xsと言うのがあるが、一時的に値が複製されて良いなら標準入出力(メモリ渡し)のほうが絶対に楽だと思うのだ。
ま、perl使ってるなら複製されたメモリのほうが元のデータより圧倒的に小さいはずだが

474 名前:デフォルトの名無しさん [2016/10/08(土) 09:19:23.51 ID:ZgFPdp2t.net]
ビット演算したいなら普通にすればいいよ。
◯ビット変数がほしいといわれても、それは適切にマスクすればいいだけだし。
◯ビット変数のように振る舞うものがほしいということなら、Perl は C よりも期待に応えられると思うよ。
まずは C と同じ書き方をして速度を計ってみてよ。話はそれからだ。

475 名前:デフォルトの名無しさん mailto:sage [2016/10/08(土) 22:30:15.59 ID:KfBpvv2w.net]
はぁ?
~0 この時点で同じになりませんがな

476 名前:デフォルトの名無しさん [2016/10/09(日) 00:00:21.79 ID:ja1MeL+I.net]
>>457 に言ってるんだよ?

477 名前:デフォルトの名無しさん [2016/10/10(月) 16:43:42.37 ID:zhEtfxQ/.net]
もう連休終わっちゃうんだけど結局何をしたかったのかな。

478 名前:デフォルトの名無しさん mailto:sage [2016/10/11(火) 00:06:06.59 ID:SYi+Wrc4.net]
その日のうちに解決したんじゃね?
木曜日の相手になに言ってんだか

479 名前:デフォルトの名無しさん mailto:sage [2016/10/11(火) 00:28:33.80 ID:SYi+Wrc4.net]
しかし普通の言語やったあとにPerlやると異常なほど即座に短く書き終えるからなにか書き忘れてるんじゃないかと不安になる。
正しく動くと分かると異常なほど楽で嬉しくなるし、C++とかが馬鹿らしくなる。
そして実行速度計ると結局全部納得してため息。



480 名前:デフォルトの名無しさん [2016/10/11(火) 19:01:16.50 ID:A+TNY00d.net]
stat($file_path);でファイルを作成したtimeは
atime,mtime,ctimeのどれなの?

481 名前:デフォルトの名無しさん mailto:sage [2016/10/11(火) 19:50:08.12 ID:Mt8tOIIr.net]
>>472

perldoc.jp/func/stat
> 8 atime 紀元から、最後にアクセスされた時刻までの秒数
> 9 mtime 紀元から、最後に修正(modify)された時刻までの秒数
> 10 ctime 紀元から、inode 変更(change)された時刻までの秒数 (*)

> 明らかに、ctime のフィールドは移植性がありません。
> 特に、これから「作成時刻」を想定することは出来ません

perldoc.jp/docs/perl/perlport.pod#Files32and32Filesystems
> ファイルシステムはアクセスタイムスタンプや変更タイムスタンプに
> 対応していないかもしれません (つまり移植性のあるタイムスタンプは
> 変更タイムスタンプだけです); またタイムスタンプは 1 秒単位では
> ないかもしれません (例えば、FAT ファイルシステムは時刻の単位は
> 2 秒単位です)。

>「inode 変更タイムスタンプ」 (-C ファイルテスト) は (Unix 以外では)
> 実際には「作成タイムスタンプ」かもしれません。

482 名前:デフォルトの名無しさん mailto:sage [2016/10/12(水) 08:39:20.39 ID:9k51B2Do.net]
Perlのオブジェクト指向読んだばっかりで理解が曖昧なんだけど、
これだと、オブジェクトがオブジェクトなのか関数なのかって呼び出し側で決める事にならない?
コンストラクタもメソッドも。
ついでに、インスタンスのカプセル化どうこうも、呼び出し側の権利?

みたいに見えたのですが。

483 名前:デフォルトの名無しさん mailto:sage [2016/10/12(水) 13:04:43.13 ID:kXFNS19K.net]
>>474
そうだよ
それはC++等でも同じ

484 名前:デフォルトの名無しさん mailto:sage [2016/10/12(水) 14:33:18.63 ID:9k51B2Do.net]
>>475
ありがとう

以下みたいな感じの記述は使っても問題ない?
あと穴があった場合も教えて欲しい。
(複数回に分けて書くので途中で書けなくなるかも)



use utf8;
use strict;
use warnings;

#ただの実験
# 1: メソッドとインスタンスをカプセル化する。
# 2: クロージャを、あたかもオブジェクト指向と同じ記法で呼び出せるようにする。(クロージャとオブジェクト指向の同一視)
# 3: クロージャをクロージャのまま使いたければそうできるようにした。そもそもクロージャのほうが速いので。

485 名前:デフォルトの名無しさん mailto:sage [2016/10/12(水) 14:33:37.13 ID:9k51B2Do.net]
{
package Class;

sub new{
my $class = $_[0] eq __PACKAGE__ ? shift : undef ; #オブジェクトとして呼び出されたかどうか
my $self = {
Name => shift,
};

my $method = {
NameGet => sub{ $self->{Name} },
NameSet => sub{ $self->{Name} = shift; },
};

return $method if(!$class); # 普通の関数(クロージャ)として呼ばれた場合
return bless $method, $class; # オブジェクトとして呼ばれた場合
}

sub AUTOLOAD {
our $AUTOLOAD;
my $method = shift;
ref($method) eq __PACKAGE__ or return("error");
my @load = split '::', $AUTOLOAD;
my $load = $load[-1];

$method->{$load}->(@_);
}
}

486 名前:デフォルトの名無しさん mailto:sage [2016/10/12(水) 14:34:03.93 ID:9k51B2Do.net]
{
package test;

my $c = Class::new("Closure"); #クロージャとして呼び出すと、一般的な

487 名前:クロージャと同じように使える。
print $c->{NameGet}->() . "\n";

my $o = Class->new("Object"); #オブジェクト指向として呼び出すと、オブジェクト指向と同じように使える。(中身はクロージャ)
print $o->NameGet() . "\n";

print Class::NameGet(); #関数のように呼ぶとエラー
}

__END__

以上です
[]
[ここ壊れてます]

488 名前:デフォルトの名無しさん mailto:sage [2016/10/12(水) 16:49:58.02 ID:HdFKT2Ip.net]
オブジェクト指向=カプセル化ではないし、perl5でももう少しスマートなカプセル化のやり方もあるが筋が悪いからおすすめはしない
perl6はオブジェクト指向に関してはかなりマシだけど、そもそも速度気にするならperlは向かない

perl5じゃないとダメなら規約などで上手く付き合うしかない
ちなみにそのコードだとまともに継承できないね

489 名前:デフォルトの名無しさん mailto:sage [2016/10/12(水) 21:51:13.12 ID:9k51B2Do.net]
やりかたがあると言うのなら、提示して欲しいのだけど。(ただの俺は知ってるぞ自慢?)

事前に試しましたが、継承はできましたよー。
複数クラスを書くと長くなるので書きませんが、
まったく同じように別のクラスを書いて、ベースにしたいクラスを呼び出して更新すれば
とりあえずインスタンスもメソッドは継承されるですね。

あと穴は一つ発見しました。
これは後出しにしようかな。



490 名前:デフォルトの名無しさん mailto:sage [2016/10/13(木) 02:01:07.92 ID:Zro6GxWw.net]
こいつは何しに来たんだ?

491 名前:デフォルトの名無しさん mailto:sage [2016/10/13(木) 10:53:38.82 ID:O2Ch/Rp5.net]
perlでpcアプリケーションって作れますか?

492 名前:デフォルトの名無しさん mailto:sage [2016/10/14(金) 12:30:24.58 ID:om26oWOX.net]
>>482 作れます。

493 名前:デフォルトの名無しさん mailto:sage [2016/10/14(金) 22:56:09.64 ID:GnnBnQfG.net]
スーパーコンピューターのアプリケーションしか作ったことがないのですが、
そんな私でも作れるでしょうか?

494 名前:デフォルトの名無しさん mailto:sage [2016/10/15(土) 02:02:31.11 ID:UBpH7j9p.net]
スパコンのSIMDやMPIの方が楽だから
無理しなくていい

495 名前:デフォルトの名無しさん [2016/10/17(月) 02:26:31.41 ID:WRe7I7Bu.net]
2つのテキストファイルを比較し、一致した文字列を取り出したいんですが、教えていただけませんか

496 名前:デフォルトの名無しさん mailto:sage [2016/10/17(月) 03:43:08.25 ID:sXplblvU.net]
一致した文字列を穴なく完璧に厳格に定義して示して下さい。
そしてそれが出来ればプログラミングの8割は終了しています。

497 名前:デフォルトの名無しさん [2016/10/17(月) 09:06:26.12 ID:z3YwWHWS.net]
diff 系かなあ。CPAN で検索してみるといいよ。

498 名前:デフォルトの名無しさん mailto:sage [2016/10/17(月) 09:12:40.23 ID:9EO0+SUA.net]
Perl使うまでもないような
cat fileA fileB | sort | uniq -d

499 名前:デフォルトの名無しさん [2016/10/17(月) 09:33:07.31 ID:z3YwWHWS.net]
いやいや、一致した「行」とは言ってないから。何を望んでいるのかを確認しないと。



500 名前:デフォルトの名無しさん mailto:sage [2016/10/17(月) 20:34:47.85 ID:Denl80JP.net]
単語だと形態素解析が必要になるけどこいつにそんな課題出さないだろう






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<269KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef