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


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

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



1 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 19:10:40 ]
"The duct tape of the Internet" こと、Perlについての質問箱です。
"There's more than one way to do it" ということで、
Perlの奥深さについて皆で語り合い、追求してまいりましょう。

CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
( WEBプログラミング板 pc11.2ch.net/php/ )

CGIの質問は答えが Perlと全然関係ない話に帰着する場合が
多かったりするのでWEBプログラミング板に行って聞いたほうが得ですよ。
このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
スレ違いの質問にはスルーか、速やかな誘導をお願いします。

www.perl.org/get.html
● 2008/08/11 現在の最新版(安定版): 5.10.0
● 2008/08/11 現在の開発版: 5.9.5

▼ 前スレ
Perlについての質問箱 36箱目
pc11.2ch.net/test/read.cgi/tech/1215569470/

リンク集は>>2-3
Perl 日本語処理の基礎の基礎 >>4
過去スレは>>5-6 あたり

528 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 02:10:24 ]
$fhってのはファイルハンドルなの?

普通は出てくるはずの
<IN>とかの文字が見えないので不安なんですけど。

529 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 02:13:03 ]
他ファイルのmy化された変数を別ファイルで読み込んで
使うのって、結局ourでグローバル変数化しておくか、あるいは
サブルーチンに入れて、return渡しするしかないの?

サブルーチンにいれるのは、すべてのサブルーチンは
宣言すると自動的にグローバル化されるのだから、
他ファイルに渡せるのはあたりまえなんですよね。

結局ourでグローバル化してるのと本質的には同じだし。

パッケージとモジュールの勉強をしてみましたが、
それでも結局グローバル化されてる変数は読み込めましたが、
my化されてる変数は読み込めませんでした。

530 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 02:46:49 ]
自分で何回もためしてみたけど、やっぱりモジュールファイルの中で
my化してるとだめなんだ〜

他ファイルで使って欲しい変数はグローバル化してないと
だめなんだね。

531 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 02:48:43 ]
>529
相変わらず質問の意図が分かりかねるのだが、それはさておき。


>他ファイルのmy化された変数を別ファイルで読み込んで
>使うのって、結局ourでグローバル変数化しておくか、あるいは
>サブルーチンに入れて、return渡しするしかないの?

やり方が分かってるなら、そうすればいい。


>それでも結局グローバル化されてる変数は読み込めましたが、
>my化されてる変数は読み込めませんでした。

myで宣言されてる変数が他から読めたら、myの意味が無いっしょ。



例えばグローバル変数にはメリットとデメリットがある。
特に理由が無ければデメリットの少ないローカルな変数を使って、サブルーチン間を渡せばいい。
ただし、メリットとデメリットを理解している人間が、的確な場所に使う分には何も問題がない。

グローバル変数を使うのも使わないのも、両方とも正解だ。
その「的確な場所」が分からないのなら、まだ使うべきではないということだ。



532 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 02:50:26 ]
Wikipediaの「名前空間」の項目が、少しは疑問を解決してくれるかも。
ja.wikipedia.org/wiki/%E5%90%8D%E5%89%8D%E7%A9%BA%E9%96%93

533 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 02:56:37 ]
だーかーらー。

たとえば、モンスターの設定ファイルで、
スライムの体力=1とかって設定するとするでしょ。

ファイル名「a.pm」

package 1;
my $a=1;
1;

---------------

このmy $aを
他のファイルから読みたかったの。
でも無理だとわかったの。
この理解であってる?

534 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 03:03:42 ]
>>533
いい加減しつこい。とりあえず以下のドキュメント読んどけ。読み終わるまで戻ってくんな。
> perlboot - Perl OO tutorial for beginners
> perltoot - Perl OO tutorial, part 1
> perltooc - Perl OO tutorial, part 2
> perlbot - Perl OO tricks and examples


535 名前:533 mailto:sage [2008/09/03(水) 03:05:01 ]
読み終わりましたー

536 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 03:08:03 ]
だってグローバル変数絶対使うなみたいなことよく
書いてあるじゃん。

だから絶対使ったらダメなのかと思ったし。

でも外部から読み込まれることを前提に設計されてる
モジュールの場合は、外部に渡す変数はグローバル宣言なのね。

最初からそう言ってくれればいいのに。

入門書にも書いてないしー



537 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 03:50:29 ]
>>536
・Perlについてくるマニュアルに書いてある
・標準モジュールやユーティリティのソースで実例が見られる
・Webを検索すれば割とすぐに見つかる
・それについて書いてある本がいくつもある

そういうアレな質問に回答を返す病的に親切な人が出てきても、
「聞きたいのはそれじゃない」だったり、完全スルーだったり。

回答者が寄り付かないように工夫しているとしか思えないです。

あなたの好みと水準にぴったり合わせた答えを提供する義務は
誰にもありません。その点は忘れないで下さい。

538 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 03:51:14 ]
>>533
だーかーらーそれが勇者の設定ファイルなら読めるわ

539 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 03:59:50 ]
病的に親切な人と、叩こうとする=構おうとする人がなぁ。

540 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 04:00:02 ]
>533
それであってると言う主旨の回答を3回くらい見かけてるわけだが

541 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 11:02:26 ]
下でエラーが出るのは何故ですか?

--a.pl----------------
our $a = "hoge";
---------------------

--b.pl----------------
use strict;
require "a.pl";
print $a;
---------------------

C:\>perl b.pl
hoge
_____________________________________________________________________________

--a.pl----------------
our $aa = "hoge";
---------------------

--b.pl----------------
use strict;
require "a.pl";
print $aa;
---------------------

C:\>perl b.pl
Global symbol "$aa" requires explicit package name at b.pl line 3.
Execution of b.pl aborted due to compilation errors.

542 名前:デフォルトの名無しさん [2008/09/03(水) 11:02:59 ]
perl -wで動かすと、
Use of implicit split to @_ is deprecated
というものが表示されるのですが、これはどういう意味でしょうか?
-wをつけなければ表示されません

543 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 11:14:13 ]
>>542
splitをスカラーコンテキストで使うとばらした内容を@_に入れるという
仕様なんだが、サブルーチンの引数渡しに使われる@_を壊すので
よろしくないということになっている。

perldiag(1)の説明によればコンパイラに負担がかかるらしい。

Use of implicit split to @_ is deprecated
(D deprecated) It makes a lot of work for the compiler when you
clobber a subroutine's argument list, so it's better if you assign
the results of a split() explicitly to an array (or list).

古いプログラムはしょうがないが新しく書くプログラムでは避けた
方がいいと思われ。

544 名前:542 mailto:sage [2008/09/03(水) 13:01:45 ]
ありがとうございます

my $tab = split( /\t/, $_);
こう書いているのですが、どのように修正すればいいのでしょうか?


545 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 13:07:07 ]
>>544
$_ には何が入っていて、$tab には何を入れたいの?
もしかして @tab と書くべきところだったってオチか?

546 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 13:33:32 ]
ダミーの変数を用意して:

my $tab = my @dummy = split( /\t/, $_ );

が楽だし確実だな。

でも実はタブを数えたかったのなら、タブによって分割された
項目数を数えるより直接タブを数える

my $tab2 = tr/\t//;

の方が効率的なのでおぼえておくといい。

ただしsplitは(第3引数に負の数を与えなければ)末尾の空フィールドは
捨てるので、この動作を利用してなんかしている場合はtrで数える手は
使えない。



547 名前:542 mailto:sage [2008/09/03(水) 14:07:31 ]
>>545
ありがとうございます。
$_には、
foo\tbar\tbaz

\t
のような値が入っています。
$tabには配列の数を入れたかったです。(1行目なら32行目なら0

>>546
ありがとうざいます。
頂いたとおりに修正することで、-wをつけても何も表示されなくなりました。

548 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 14:58:36 ]
Perlを始めてみたのですが、 
UNIXだとファイルの最初に[ #! /usr/local/bin/perl ]などとフルパスを書くと
コマンドだけで実行できるようですが、Active PerlをWindowsで使ってる場合は、
こういうやり方は無理なのでしょうか? 

今は、ファイルを保存したディレクトリ内で、[ perl <ファイル名.pl> ]を打ち込んで実行しています。 


549 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 15:54:33 ]
>>548
ちゃんとインストーラでインストールした?
解凍してコピーしただけじゃOSの設定はされないよ。
ちゃんとインストールすれば、ほげ.pl をマウスでクリックするだけで動いてくれるよ。

#! /usr/local/bin/perl
が必要なのは、UNIXというOS固有の問題だから Windows には関係ない。
# で始まってるのでタダのコメント文として無視される。

550 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 15:56:48 ]
ActivePerlなら、インストール時に(デフォルト設定でインストしてれば)*.plの拡張子に関連付けられてるハズだから、
.plの拡張子を持つファイルなら、コマンドプロンプトから、C:\> 〜〜.plでも実行できる。
(頭の#!〜〜はまず気にしなくてよし。#!/usr/bin/speedy とか書いてる時はエラー出るけど・・)

つうか、拡張子が関連付けられてたら、エクスプローラーからダブルクリックでも実行できる。
けど、前にもココだったか、Webprog板の方だったかにいたけど、
「コマンドプロンプトが一瞬で消えてしまい、出力が読めません。」とか言わないでね。

551 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 16:20:47 ]
自分は「Perlをはじめよう」ってソフトを使ってる。
便利。

552 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 16:22:38 ]
sleep 100;

553 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 16:26:34 ]
質問。
>>525との組み合わせなのですが、
教科書や解説ページを見ると、よく
open FH, ">filename.txt";
---------------
$FH = "filename.txt";
open FH;
------------------
open(FH,"<data.dat"); # 入力モードでオープン
--------------------
$line = <FH>; # 1行読み込み
----------------------
open(FH, $datafile);

@list = <FH>;
-------------------
foreach $data_line( @list ) {
print $data_line;
}
---------------
open(IN, $datafile);

while ( $line = <IN >) {
  print $line;
}
--------------
↑このような例がでてくるのですが、いずれもファイルハンドルとして
INとかFHとか大文字がでてくるのですが、>>525だと
そのような文字が見当たりません。
できれば我々初心者が見慣れた例で書き直した
サンプルをいただきたいのですが。

554 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 16:43:21 ]
そういう古いのは使っちゃだめ。覚え直せ

open my $fh, ">", "filename.txt";
------------------
open my $fh, "<", "data.dat";
--------------------
$line = <$fh>;
----------------------
open my $fh, "<", $datafile;
my @list = <$fh>;
-------------------
foreach my $data_line (@list) {
print $data_line;
}
---------------
opem my $in, "<", $datafile;
while (my $line = <$in>) {
print $line;
}

555 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 16:59:55 ]
>>549-550
ありがとうございました。
拡張子つけないでファイル名だけでできるかなと思ったわけです。 

>>551
それインストールしてみました。イイ情報をありがとうございました。 


556 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 17:05:56 ]
>>553
君の大嫌いなグローバルな変数(ファイルハンドル)を使っていいのかい?



557 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 19:44:37 ]
>>554,556

まじで?
また古い本を読んでしまったのかな、、、

558 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 19:45:30 ]
つまりファイルハンドルも実は変数の一つにすぎないと?

それで、プライベートなファイルハンドルと、
グローバルなファイルハンドルが存在すると??

559 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 19:59:17 ]
<IN>の実体は型グロブ*IN

560 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 20:31:44 ]
ja.wikibooks.org/wiki/Perl/変数、データ構造

561 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 20:54:24 ]
>556
たぶん別人。もしくは壮大な釣り

562 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 22:42:54 ]
>>541
> 下でエラーが出るのは何故ですか?

perldoc strict
の "strict vars" の項を読んでみてください。

# そして、上の例でなぜエラーが出ないかについては:
# perldoc -f sort

563 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 23:04:43 ]
>>562
サンクス

パッケージ名を明記しなくちゃいけないんですね。
でも、$aと$bは、自動的にパッケージ名をつけてくれると。

564 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 01:10:57 ]
ファイルハンドルを変数に格納するやり方は
「間接ファイルハンドル」
という名前がついていることはつきとめました。

マッキンゼーに2,000万払って調べてもらいました。

で、古いやり方はやめて
間接ファイルハンドルを使え、と
書いてあるWEBページはどこにあるのでしょうか?

565 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 01:48:34 ]
>564
ここのスレだってウェブサイトの1つってことでいいよね?


566 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 02:01:01 ]
スレがやけに加速してると思ったらほとんど同一人物ぽいな。
低レベルなレスでスレ汚すなよ。中学生だろ、おまえ。

ま、おれもヒトのこと以遠が。。。でも俺よりは年下だな。

ひとつだけ教えといてやろう。
パッケージ変数はサブルーチンでアクセスしろって、PBPに書いてあった。
Class::Data::Inheritableとか使ってもいいだろう。
だから、もうこの関連で書き込みすんなよ。



567 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 02:02:32 ]
あ、ちなみに俺、中学生じゃないです。その上だから。

568 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 02:04:39 ]
>>565
いまボストンコンサルティングに1、500万払って
調べてももらってますが、

「古いファイルハンドルの指定の仕方(FILEとか)でなくて、
新しいやり方、間接ファイルハンドルを使え」


と明確に書いてあるWEBページは、
なかなか見つかんないですよ。

たぶんメリットがないんじゃないですか?

569 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 02:06:19 ]
>>566-567

高校生でperlできるんだーすごいねー
偏差値68以上の学校?

570 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 02:09:48 ]
>>568
頭が悪いのにも限度があると思うんだ。


571 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 02:13:39 ]
>>569
年なんか関係ないだろ。黙って勉強しとけよ、青二才。

上では余計なこと書いた。今は反省している。

572 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 02:16:28 ]
>>571
進学校?数学得意?プログラミングをはじめたのは何才から?

573 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 06:56:17 ]
pc11.2ch.net/test/read.cgi/php/1218855685/981

PHPの連中は本当にキモイなぁ

574 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 08:46:42 ]
perlの連中もきめえよ

575 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 08:51:19 ]
五十歩ひゃっほー

576 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 10:18:13 ]
五十歩ヒャッハァーあの村の井戸を奪えー!

この場合は my $well か?



577 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 12:22:57 ]
この流れワロタ

578 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 16:00:43 ]
汚物は消毒だーっ!

579 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 16:55:06 ]
任意の数の配列 @minshu 全てをチェックし、もし obutu であれば値を kasizumi にするソースコードを書け。
ただし @minshu の中に値 kenshiro があった場合は直ちに処理を中止するものとする。

580 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 17:07:21 ]
自分で書け

581 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 17:29:48 ]
>579
keshizumi じゃないのか?

582 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 17:30:41 ]
どこの宿題だよ

583 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 17:32:56 ]
断る

584 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 17:52:46 ]
ワンライナー自重

585 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 17:56:49 ]
ActivePerl 5.10 で、Gmail に Mail::IMAPClient で接続、
メールの添付ファイルを取ってくるスクリプトを書いています。

ログインしてメールの本文などを取得することはできたのですが、
MIME::Parser で parse した時点で、破損したファイル(最後までデータが出ていない)が
出力されてしまいます(output_to_core(1)を消して試してみました)。

この場合、原因として考えられるのは何でしょうか? ここで詰まってしまってます……。



586 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 19:37:19 ]
どんなスクリプト書いたの?



587 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 19:49:08 ]
>>586
すいません、最初から書けばよかった。ちょっとはしょってますが、こんな感じです。
use strict;
use MIME::Parser;
use Mail::IMAPClient;
use IO::Socket::SSL;
my $parser = new MIME::Parser;
$parser->output_to_core(1);
my $socket = IO::Socket::SSL->new( PeerAddr => 'imap.gmail.com', PeerPort => 993 ) or die "socket(): $@";
my $client = Mail::IMAPClient->new( Socket => $socket, User => 'hogehogehoogehoge@gmail.com' ) or die "new(): $@";
if ( $client->IsAuthenticated() ){
$client->select('INBOX');
my @uid = $client->unseen;

foreach my $id (@uid) {
my $message = $client->message_string($id) or warn "Timeout!";
my $entity = $parser->parse_data($message);
my $header = $entity->head;
if ( $entity->is_multipart ){
my $parts_count = $entity->parts;
for (my $i = 1; $i < $parts_count; $i++) {
my $part_entity = $entity->parts($i);
my $filename = $part_entity->head->recommended_filename;
my $filebody = $part_entity->bodyhandle->as_string;
open(FILE, ">$filename");
print FILE $filebody;
close(FILE);
}
}
}
}

588 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 21:11:33 ]
もしかして、他ファイルに定義された変数を
別ファイルから読みたいときは、
「Perlのオブジェクト指向」
を使えばいいんじゃないかな??

あってる?ちがう?

589 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 21:59:34 ]
>588
誰にレスしてるんだ?

590 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 22:07:34 ]
オブジェクト指向を使えば、
他ファイルにかかれているmy化された
変数も読めるんじゃないか?
と質問をしてるわけです。

591 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 22:16:38 ]
今日の発見。

use feature qw( :5.10 );
say 2 ** 50;

これを実行すると
1.12589990684262e+015
とでてくるが、

use bigint;
use feature qw( :5.10 );
say 2 ** 50;

とすると
1125899906842624
と出てくる。

いくつの桁まで表示できるか、
今からちょっと実験してみる。

592 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 22:17:32 ]
>591
質問は?

593 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 22:20:03 ]
そういえば、ちょっと前のCGIゲームで、
数値の表記が、3桁づつ、、(カンマ)で
区切られて表示されないのがあって、
これを、3桁づつカンマで区切って表示するように
改造したい、と思ったんだが、これって難しいの?


1234567円→1、234、567円

594 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 22:24:31 ]
printfって知ってるかい?


595 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 22:27:18 ]
use bigint;
system q|cls|;
use Win32::Sound;
use feature qw( :5.10 );

say 2 ** 55555;
Win32::Sound::Play("file.wav");


↑これすごいよ。
2の55555乗を計算して
画面に出力するんだけど、
DOS窓が全部数字で埋め尽くされてしまって
もはや何桁あるかなんで数え切れないよ。

CPUが計算するのに5秒もかかるし。(ウチのパソコンでは)

596 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 22:35:28 ]
>>593
1 while s/^([-+]?\d+)(\d\d\d)/$1,$2/;




597 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 22:54:46 ]
use utf8;
use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)";
use Encode;
use bigint;
use feature qw( :5.10 );
use Time::HiRes 'sleep';
system q|cls|;
$|=1;
#----------------------------------
use Win32::Sound;
use feature qw( :5.10 );
say "2を1000回、掛けてみますですよ...";
my $a=2;
say "結果が出ましたですよ...\n".&aaa."ですよ...";

say "あと、結果の出力を画面の真ん中に出すやり方をおしえてくだしあ";
sub aaa{
for (my $b=1;$b<=499;$b=$b+1){
$a=$a*2;
say "2を500回、掛けてみますですよ...";

say "今、第".$b."回目の計算中ですよ...";
say $a;
system q|cls|;
}
return $a
}
Win32::Sound::Play("file.wav");

598 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 23:02:07 ]
ファイルアップロードしようとして
同じものがあったらエラーって処理をしたいのですが

ttp://www.ss.iij4u.or.jp/~somali/web/_perl_upload.html

ここの改良版の方に

opendir(DIR , $logfiles);
@filelist = readdir(DIR)
closedir(DIR)

foreach (@filelist){
next if $file =~ /^\.{1,2}$/;
if(compare( $fh , $_){
error処理;
}
}
みたいな感じでやっているのですが
上手くいかんのです
たすけてくだしあ


599 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 23:17:18 ]
-fとかでいいだろ

600 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 23:19:54 ]
名前を変えてるのでcompareで比較がしたいのです
助けて下しア

601 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 23:21:56 ]
compareって何だよ

602 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 23:22:18 ]
>>598
webprog板池よ

603 名前:改良版ですよ1 mailto:sage [2008/09/04(木) 23:42:40 ]
use utf8;
use open IO => ":encoding(cp932)";
binmode STDIN => ":encoding(cp932)";
binmode STDOUT => ":encoding(cp932)";
binmode STDERR => ":encoding(cp932)";
use Encode;
use bigint;
use feature qw( :5.10 );
system q|cls|;
use Win32::Sound;
my $a=2,$c,$d,$f;
print "2を何乗させたいのか、数字を入力してくだしあ(例:500)>";
$f=<STDIN>;
chomp $f;
my $e=$f;$d=$e-1;
$c=&aaa;&bbb;
Win32::Sound::Play("file.wav");
sub aaa{
for (my $b=1;$b<=$d;$b=$b+1){
say "2の".$e."乗を計算してみますですよ...";
say "今、2の".$b."乗目の計算中ですよ...";
say $a; $a=$a*2;
system q|cls|;
}
return $a
}
sub bbb{
say "結果が出ましたですよ...\n";
say "2の"."$e"."乗は ".$c." ですよ...";
say "あと、結果の出力を画面の真ん中に出すやり方をおしえてくだしあ\n";
}

604 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 23:47:43 ]
これなんじゃないの?

use File::Compare;
d.hatena.ne.jp/minesouta/20070807/p1

605 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 23:49:39 ]
自分でプログラム組めるようになると
すっごい楽しいね!

606 名前:585 mailto:sage [2008/09/05(金) 00:02:52 ]
分からない! 誰か助けてください……。



607 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 00:03:52 ]
>>598
最近、知ったんだけど、下記で、"."や".."を含まない、ファイル一覧が得られる。

@filelist = <$logfiles/*.*>;

608 名前:607 mailto:sage [2008/09/05(金) 00:06:48 ]
そしたら、>>598の処理がこんなに短くなったり。。。

foreach (<$logfiles/*.*>){
if(compare( $fh , $_){
error処理;
}
}

609 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 00:21:48 ]
>606
WebProg池、と言おうと思ったが、問題はそこじゃないっぽいしなあ。


>598>607
状況次第だが、毎回ファイルの中身を全チェックだと効率悪すぎないか?

バイナリから何らかのハッシュを生成しておき(同一バイナリなら同一のハッシュ)、
そのハッシュを保存しておいて比較した方がいいと思う。

稀に別バイナリが同一ハッシュを返すこともあるが、
その時は諦めるか、バイナリを直接比較すればいい。

610 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 01:22:26 ]
>>585
現象は添付ファイルの種類を問わず発生しますか?
複数のファイルを用意し、それぞれを添付したメールを用意して試してみましょう。
添付ファイルのファイル名に日本語が含まれているか否かで変化があるか確認してください。

611 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 01:26:40 ]
>>607
本当に? 間違いない? 信じて大丈夫?

いや、誰も信じないからいいんだけどさ。

612 名前:585 mailto:sage [2008/09/05(金) 01:32:48 ]
>>610
添付ファイルの種類を問わず発生しているように見えます。試しているファイルはすべて英語名です。
binmode FILE することで、JPG は開くことができるようにはなりました。

PDF = ファイルが壊れている、と出て開けない。
JPG = 画像の下の方がブロックノイズ(最後までデータができていないっぽい)
HTM = ファイルの最後の方で途切れてしまう。
TXT = ファイル末尾に謎の文字化け。(=ェ攵モ]モスクラmエ輜オラ ←こんなのが。なんだこりゃ。)

message_to_file で書き出してみたファイルを見る限りでは、途中でデータの転送が止まっているようなこともなく、
正常に処理できているように見えます。parse_data して、print する途中でどこか変なところがあるのでしょうか。

613 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 04:05:43 ]
xorってよくわからないな。

614 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 04:14:30 ]
ヘルプに誤字発見。これってどこに通報すればいいの?

Parentheses missing around "my" list at 1.pl line 27 (#1)
(W parenthesis) You said something like

my $foo, $bar = @_;

when you meant

my ($foo, $bar) = @_;

Remember that "my", "our", "local" and "state" bind tighter than comma.

615 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 04:42:13 ]
stateって結構便利だと思うんだけど、
これってバリバリつかっていいの?

gotoみたいに、「絶対に使うな!」とかって怒られない?

616 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 07:46:59 ]
perlのゲーム作りたいなー
誰か一緒に作らない?



617 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 07:54:21 ]
>615
ちゃんとメリットとデメリットを理解して、それが適切だと思えば
別に何を使って良いんでねーの?

stateを使うならオブジェクト指向にしてもいいかなあと思ってみたが、
これは単に自分が無知なだけか。


>616
ゲ製板池

618 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 08:21:12 ]
www.geocities.jp/ky_webid/perl5/index.html
このページすごいわかりやすいね

619 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 10:55:16 ]
>>609
Webprog 板に行ってきますヽ(´Д`;)ノ

620 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 12:06:49 ]
>>618
宣伝厨うざい、マルチウザイ

>print "$str"; # ***123***\n を出力
こんな事書くアホなページの宣伝すんな
「参考書籍」でPBPやらEffectiveやら勧めてるが
読んでないのバレバレじゃねえか

621 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 12:17:37 ]
そこまで過剰に反応する意味がわからない。

622 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 12:34:15 ]
>>621
> そこまで過剰に反応する意味がわからない。

ウソが広まるのを放置しておくと何年もすべての人が被害を被り続けるからでしょう

623 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 13:45:58 ]
まぁ実際、とほほとKENTで広まりまくってるけどな

624 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 15:19:06 ]
だからこそ過剰に反応するんだろうな

625 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 16:09:32 ]
これだから原理主義者は困る

626 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 16:13:05 ]
オライリーの「プログラミングPerl」
って、読んだけど、よくわからないね、難しくて。

これって中級者以上向けだよね。



627 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 16:18:27 ]
>626
ラクダの前にリャマがいるだろ

628 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 16:29:40 ]
「はじめてのPerl」ね。
うん、そっちから読んだ方がいいみたいだね。






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

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

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