トップページ⇒php
1001コメント304KB

Perlコーディング初心者質問スレ Part 46

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/01/18(水) 02:17:46ID:???
Perlのコーディングで困ってる人のスレです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。

1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。

最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。

過去ログやお勧めサイトは >>2-10
0382nobodyさん2006/01/31(火) 21:14:44ID:???
>>380
文字コード判定に失敗しているから
0383nobodyさん2006/01/31(火) 21:28:42ID:???
>>380
&jcode'convert(*value,'sjis');
を削除したら多分OK
0384nobodyさん2006/01/31(火) 22:12:12ID:POWreMm8
掲示板のログファイルの更新をする時、古いファイルを読みながら更新された内容を
新しいファイルlog_new.cgi書き込み、書き終わったところで古いファイルをlog_old.cgiに
rename、新しいファイルをlog.cgiにrenameとしました。

この方がメモリ使用量が少なく、書き込みの時に異常停止した場合ログ破壊が起こり
にくいと考えました。 しかしファイルのパーミッションを600にしたいのですが、open
では出来ず、sysopenでしか出来ないと知って困ってます。 パーミッションだけの
ためにファイルI/Oは全てsys*にしないとならないのでしょうか?
0385nobodyさん2006/01/31(火) 22:34:56ID:???
なんだか知らんが、権限なくてchmodができないってことかいな?
0386nobodyさん2006/01/31(火) 22:43:05ID:???
>>384
open してから書き出しはじめるまでの間に chmod すれば?
0387nobodyさん2006/01/31(火) 22:44:35ID:???
システムコールとライブラリ関数を併用したらまずいのって
バッファリングの問題なんだからsysopenだけなら他はシステムコールにしなくてもいいんでは?
実際perlfaq5で以下みたいな例文でてるし。(話題そのものは別のもの)

use Fcntl qw(:DEFAULT :flock);
sysopen(FH, "numfile", O_RDWR|O_CREAT) or die "can't open numfile: $!";
flock(FH, LOCK_EX) or die "can't flock numfile: $!";
$num = <FH> || 0;
seek(FH, 0, 0) or die "can't rewind numfile: $!";
truncate(FH, 0) or die "can't truncate numfile: $!";
(print FH $num+1, "\n") or die "can't write numfile: $!";
close FH or die "can't close numfile: $!";
03883862006/01/31(火) 22:48:57ID:???
>>387
じゃなくて、 open するときにパーミッションを指定できない、という話でないの?
0389nobodyさん2006/01/31(火) 23:06:49ID:???
>>388
がーん。そうでしたか。
sysopenだと他も全部システムコールにしなくちゃいけなくてイヤって言ってるのかと思いました。
387はスルーしてください。
0390nobodyさん2006/01/31(火) 23:21:07ID:???
>>384
sysopen とどちらが楽かは微妙だが、一時的に umask を変える。

my $orig_umask = umask 077;
blah, blah, blah...
umask $orig_umask;
0391nobodyさん2006/02/01(水) 00:00:28ID:???
>>380
結果が文字化けするなら分かるけど、
動作しないってのは分からん。

>>384
IO::FileかFileHandle使うと便利。
03923842006/02/01(水) 01:05:17ID:ngruutod
皆さんありがとうございます。 >>389さん、いやピンポンですよ。 sysopenで
openだけを入れ替えられるとは思いもしませんでした。 >>391も便利そうですね。
試してみます。
0393nobodyさん2006/02/01(水) 18:32:10ID:???
perl -W と実行すると
Use of uninitialized value in 〜
といったエラーが出てきました。
エラーが出た個所を見てみると
$in_method = $ENV{'REQUEST_METHOD'};
のように環境変数を代入してるほとんどでエラーが出ています。

環境変数から値を持ってくるときは = で代入しちゃいけないんでしょうか?
0394nobodyさん2006/02/01(水) 18:41:34ID:???
環境変数の中身が安全って信用出来ないからね。
正規表現でマッチさせて代入させればいいよ。
0395nobodyさん2006/02/01(水) 18:58:32ID:???
>>393
エラーメッセージの内容とそれが出ている行番号を確かめるんだ。
http://search.cpan.org/~nwclark/perl-5.8.8/pod/perldiag.pod#Use_of_uninitialized_value%s
http://perldoc.jp/docs/perl/5.6.1/perlfunc.pod#item_defined_EXPR

#!/usr/local/bin/perl -W
use strict;
my $path = $ENV{'PATH'}; # 定義済の値
my $nvar = $ENV{'NONEXISTENT_VARIABLE'}; # 未定義の値
print "PATH:$path\n";
print "NVAR:$nvar\n";
__END__

>>394
それは -W じゃなくて -T 。
0396nobodyさん2006/02/01(水) 19:11:50ID:???
>環境変数の中身が安全って信用出来ない
ここに注目して、環境変数も中身がちゃんとあるかどうかチェックしながら代入するようにしてみました。
エラーは無くなったものの、面倒くさいなぁw
0397nobodyさん2006/02/01(水) 19:15:12ID:???
変えた手順書いてなかった

エラーのあったときの記述
$in_type = $ENV{'CONTENT_TYPE'};

修正した記述
$in_type = $ENV{'CONTENT_TYPE'} ? $ENV{'CONTENT_TYPE'} : "";

CONTENT_LENGTH のときは "" じゃなくて 0 を入れるようにした。
0398nobodyさん2006/02/01(水) 19:28:22ID:???
$in_type = $ENV{'CONTENT_TYPE'} or '';
$len = $ENV{'CONTENT_LENGTH'} or 0;
でもできるよ。

ただこの場合、偽の時は常に空になっちゃうから、
空文字列、0、未定義値を見分ける必要がある場合はやめたほうがよい。
0399nobodyさん2006/02/01(水) 19:31:21ID:???
>>396
コード自体を書き換えなくとも、未定義値の警告だけを出なくすればいい。
http://search.cpan.org/~nwclark/perl-5.8.8/pod/perllexwarn.pod

#!/usr/local/bin/perl
use strict;
use warnings qw(all);
no warnings qw(uninitialized);
print my $foo, 'foo!';
__END__

まぁ defined $var ? $var : '' するのが正道なので、これを機に全部
書き換える事をお勧めするが。
0400nobodyさん2006/02/01(水) 19:36:37ID:???
>>398
> $in_type = $ENV{'CONTENT_TYPE'} or '';
これは
($in_type = $ENV{'CONTENT_TYPE'}) or '';
こういう意味になる。

書くなら、
$in_type = $ENV{'CONTENT_TYPE'} || '';
$in_type = ($ENV{'CONTENT_TYPE'} or '');
このどちらか。
0もfalse扱いされるから扱いに注意。
0401nobodyさん2006/02/01(水) 19:44:29ID:???
>>400
おっしゃるとおりです。
||を言いたかったんですが、間違えました…。
0402nobodyさん2006/02/01(水) 19:52:46ID:???
同じのをつらつら書くの面倒&きれいじゃないと思ってたんで、
$in_type = $ENV{'CONTENT_TYPE'} || '';
って書き方がいいかなと思ったんですが、
>399さんの最後の一言を考えて、
$in_type = defined($ENV{'CONTENT_TYPE'}) || '';
っていうのじゃ駄目ですか?

とか書いた瞬間に駄目と気付いたw
defined を使うなら
$in_type = defined($ENV{'CONTENT_TYPE'}) ? $ENV{'CONTENT_TYPE'} : '';
ぐらいにしからないですかね。

とりあえず
$in_type = $ENV{'CONTENT_TYPE'} || '';
が見た目的にも、自分てきには見やすいかな
0403nobodyさん2006/02/01(水) 19:55:44ID:???
この些細なこだわりも利用者にはわからないorz
0404nobodyさん2006/02/02(木) 02:58:46ID:???
$test="a\b\c";
@k=split(/\\/,$test);
$testの中身を\で分割したいんだけど↑じゃできねぇ
何かいい方法ない?
0405nobodyさん2006/02/02(木) 03:08:11ID:???
$test='a\b\c';
0406nobodyさん2006/02/02(木) 03:25:12ID:???
いつもダブル使うからだめだったのか
>>405サンクス
0407nobodyさん2006/02/02(木) 14:40:58ID:???
$test="a\\b\\c";
0408nobodyさん2006/02/02(木) 23:57:22ID:6Tw8pfAF
Spidering Hackで
#!/usr/bin/perl -w
use strict;
use LWP 5.64;
my $word = shift;
$word or die "Usage: perl altavista_post.pl [keyword]\n";
my $browser = LWP::UserAgent->new;
my $url = 'http://www.altavista.com/web/results';
my $response = $browser->post( $url,
[ 'q' => $word, # the Altavista query string
'pg' => 'q', 'avkw' => 'tgz', 'kl' => 'XX',
]
);
die "$url error: ", $response->status_line unless $response->is_success;
die "Weird content type at $url -- ", $response->content_type
unless $response->content_type eq 'text/html';
if ( $response->content =~ m{ found ([0-9,]+) results} ) { print "$word: [RETURN]
$1\n"; }
else { print "Couldn't find the match-string in the response\n"; }
↑のようなコードが出てきたんでコピペしてDosプロンプトで実行したら
C:\Perl\bin>perl altavista_post.pl tarragon
http://www.altavista.com/web/results error: 302 Found at altavista_post.pl line 13.
のようなエラーが出ました。どこが間違ってるのでしょうか?
Windowsで通るようにするにはどうすればいいのでしょうか?
0409nobodyさん2006/02/03(金) 00:03:11ID:???
>>408
斜め読みだけど、302が返ってきてるからリダイレクト指示でしょ。
んで、そのスクリプト200以外の応答は全部エラーにしてるみたい。

というわけで、$urlの値の末尾に/つければいけるんじゃない。
0410nobodyさん2006/02/03(金) 00:07:29ID:PieRIOHf
>>408
Altavistaってまだあったんだw

このコードはどこでも動かないよ。 サイトの仕様が変わってる。見てみたらいまじゃ
Yahooに投げてるだけ。
04114082006/02/03(金) 00:11:00ID:HpXFHvtB
そうなんですか。。
即レスありがとうございました。>>409-410
0412無知ですまそ2006/02/03(金) 02:46:12ID:SfkSG4GR
他のスレを汚してしまってすみません。

パスワードチェックで

if ($FORM{'pass'} ne 'aaa') { &error("パスワードが違います"); }

としたのだけど、aaaとbbb以外は違うとするにはどうすればいいのか教えてください。

0413nobodyさん2006/02/03(金) 02:55:40ID:???
$FORM{'pass'} !~ /^aaa$|^bbb$/
0414無知ですまそ2006/02/03(金) 02:58:13ID:SfkSG4GR
ありがとさ〜ん(。・ω・)ノ♪
0415無知ですまそ2006/02/03(金) 03:02:22ID:SfkSG4GR
でけたーーーーーーありがとうございました!!
0416nobodyさん2006/02/03(金) 07:47:24ID:???
>>412
if ($FORM{'pass'} ne 'aaa' || $FORM{'pass'} ne 'bbb')
0417nobodyさん2006/02/03(金) 08:59:55ID:???
>>416
をいw
0418nobodyさん2006/02/03(金) 10:40:30ID:???
my %valid_pass = ("aaa" => 1, "bbb" => 1);
unless ($valid_pass{$FORM{'pass'}}) { &error("..."); };
0419nobodyさん2006/02/03(金) 12:33:50ID:???
そういえばunlessって使うと読みづらくなるってのを見て以来
こつこつとif文しか使ってないや。
0420nobodyさん2006/02/03(金) 13:25:53ID:???
使い分けるより1つに絞った方がいい
っていうだけのことじゃなくて?
04214182006/02/03(金) 15:53:17ID:???
俺の場合、条件式に否定が含まれてるときは混乱するので unless は使わないが、
条件式が単純な場合は unless の方が「〜でない」という意図がハッキリ伝わる
ような気がするので unless を使うようにしている。

変かな?
0422nobodyさん2006/02/03(金) 16:10:15ID:???
使い分けに意図を載せることができればいいんだよ。
0423nobodyさん2006/02/03(金) 19:06:09ID:???
if ( hoge ) { unko; }
if ( not hoge ) { kuso; }

しか使わない漏れが来ましたよ。
0424nobodyさん2006/02/03(金) 19:52:16ID:???
>>421
>>418は読みやすいというか、わかりやすいからいいんでない?
0425nobodyさん2006/02/03(金) 19:55:23ID:???
>>423
別にまってねーよ。
0426nobodyさん2006/02/04(土) 14:26:20ID:???
>>421
せっかくあるんだし、そういう条件付ならいいかも。
ただ、ほとんどの場合は if + !式 の組み合わせの方が
タイプが少なくて済むんだよね。
until は while と同じだからいいんだけど。
0427nobodyさん2006/02/04(土) 14:29:47ID:???
>423は
if ( hoge ) { unko; } else { kuso; }
でいいんじゃないのか?
0428nobodyさん2006/02/04(土) 15:04:46ID:???
>472
この二つのパターンしか使ってないよ
っていう意味じゃないの?
0429nobodyさん2006/02/04(土) 23:39:17ID:???
AAA
 BBB
  CCC
  DDD
EEE

↓

├AAA
│  └BBB
│    ├CCC
│    └DDD
└EEE

階層は無限。
どういうコーディングすればよいのかちょっと分からないのでお助けを...
0430nobodyさん2006/02/05(日) 00:37:52ID:???
【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。

1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
0431nobodyさん2006/02/05(日) 01:13:47ID:???
エスパーマミ登場
たぶんインデントされたものを罫線付きで表示したい
って意味だと思うの
0432nobodyさん2006/02/05(日) 01:15:08ID:???
再起処理でディレクトリとファイル一覧を取得して、
階層数を記憶しておいて、それに見合った「│ 」やら「└」を出力すればおk
0433nobodyさん2006/02/05(日) 01:37:06ID:???
ディレクトリ階層でなくてただの文字列だと思うの
04344292006/02/05(日) 02:17:56ID:???
説明不足でゴメンナサイ。
やりたいことは、エスパー魔美タンの言う通りです。>>431 >>433

行毎に文字列が書かれている
インデント無しなら1階層目、インデント1つなら2階層目、インデント2つなら3階層目・・・∞
「│」「├」「└」を使用して全て繋がっている木構造を出力する

かなりの難問です。スミマセン。
0435nobodyさん2006/02/05(日) 02:18:04ID:???
必要なところだけ罫線を上書きする感じ。
うーん、汚い。

my @result;
my $maxdepth = 0;
while(<DATA>){
/( *)(.*)/s;
my $depth = length $1;
push @result, [(" ")x($depth+1), $2];
$maxdepth = $depth if $maxdepth < $depth;
}

for my $d ( 0 .. $maxdepth ){ # $d=注目階層
my @class = grep { 2+$d == scalar @{$result[$_]} } 0..$#result;

$result[$_][$d] = "┃" for $class[0] .. $class[-1];
$result[$_][$d] = "┣" for @class;
$result[ $class[-1] ][$d] = "┗";
}
print join '',@$_ for @result;
__DATA__
AAA
BBB
CCC
DDD
EEE
04364292006/02/05(日) 02:36:19ID:???
難問に挑んでいただき、ありがとうございます(ペコリ)
デキタ!と思ったら反例が見つかったのでご報告。スミマセン

AAA
 BBB
  CCC
  DDD
 EEE
  FFF
GGG
0437nobodyさん2006/02/05(日) 03:05:55ID:???
A
AB
ABC
ABD
ABE
ABEF
G
ループしながらスタックでこんなの作ってやれば
親が末っ子かどうかで" "か"┃"を塗り分けて
自分が末っ子かどうかで"┗"か"┣"を塗り分けられそうだ
後はパス
0438nobodyさん2006/02/05(日) 03:38:38ID:???
一気にやるんじゃなくて、再起を使えばかんたんじゃないの?
んで再起で呼ぶときに行頭のスペースの数を渡してやって、それに一致しなければ抜けるようにすればいい
と思う

明日中に解決してなければ、まぁ微妙に面白そうだしやってみようかなとか思う
0439nobodyさん2006/02/05(日) 07:20:36ID:V48VHYZU
質問です

1.$wordの文字列から6バイト目以降か7バイト目以降を削除したい
2.5バイト目が半角英数字なら6バイト目以降を削除(つまり1〜5バイト目残し)
3.5バイト目が日本語コードなら7バイト目以降を削除(つまり1〜6バイト目残し)

どうやれば一番効率がいいですか?
0440nobodyさん2006/02/05(日) 08:54:14ID:???
Perlメモ熟読して来い
0441nobodyさん2006/02/05(日) 09:45:39ID:???
>>429
my $level = -1;
my @stack;
my $base = (my $p = [['*root*', []]]);

while(<DATA>){
m/^( *)(.*)$/;
my $count = length($1);
if ($count > $level){
$count > ($level+1) and die "Illegal data.";
push(@stack, $p);
$p = @{$p}->[-1]->[1];
} elsif ($count < $level){
foreach(1..($level-$count)){
$p = pop(@stack);
}
}
$level = $count;
push(@{$p}, [$2, []]);
}
array_dump($base->[0]->[1], '');
04424412006/02/05(日) 09:48:46ID:???
sub array_dump
{
my ($p, $marker) = @_;
my $mark = ['├', '│'];
foreach(0..$#{$p}){
$_ == $#{$p} and $mark = ['└', ' '];
print $marker, $mark->[0], $p->[$_]->[0], "\n";
@{$p->[$_]->[1]} and array_dump($p->[$_]->[1], $marker. $mark->[1]);
}
}
__END__
AAA
BBB
CCC
DDD
EEE
FFF
GGG
0443nobodyさん2006/02/05(日) 10:33:20ID:V48VHYZU
>>441さん>>439にもアドバイスを・・


$word =~ s/^....[0-9]/^...../g; …?
0444nobodyさん2006/02/05(日) 10:48:12ID:???
>>443
>>440

アドバイス出てるじゃん。
0445nobodyさん2006/02/05(日) 11:27:05ID:V48VHYZU
>>444
だめぽなんです
0446nobodyさん2006/02/05(日) 11:35:15ID:V48VHYZU
>>445
あれ書きかけで送信してしまった
いちおう自分でどうにか書いたんですが\x81が
おかしくなるんですよね


$words = substr($word,0,6);

if ($words =~ m/^....[\x20-\x7f\xa0-\xdf]/)
{
$words = substr($words,0,5);
}else {
$words;
}
0447nobodyさん2006/02/05(日) 11:40:22ID:???
だから「熟読」して恋と小一時間(ry
0448nobodyさん2006/02/05(日) 11:45:31ID:V48VHYZU
>>447
”どこを”ですか?
0449nobodyさん2006/02/05(日) 11:47:52ID:???
刹那主義ですなあ
0450nobodyさん2006/02/05(日) 12:01:05ID:V48VHYZU
>>449
>>448
0451nobodyさん2006/02/05(日) 12:17:55ID:???
帰って下さい。
0452nobodyさん2006/02/05(日) 12:21:46ID:V48VHYZU
>>450
>>451

つーかおまい分からんのだろw
0453nobodyさん2006/02/05(日) 12:48:54ID:???
なんだ、釣りかよ。
0454nobodyさん2006/02/05(日) 12:51:06ID:???
どうせ切ろうとした部分がマルチバイト文字かどうかの判定もできんのだろう
正規表現を使うことすら頭に出てこないお子様なんだろうがな

おっと触っちまった、以下スルーよろ
0455nobodyさん2006/02/05(日) 13:12:20ID:EWGu37QN
>>57ってたいした知識ないんだな。
その程度の知識でいきがってるようじゃw
0456nobodyさん2006/02/05(日) 13:25:38ID:???
2週間以上&400も前のレスにレスつけてる455が居るスレはここですか?
0457nobodyさん2006/02/05(日) 13:29:19ID:???
きっとノルマがあるんだよ。なりふり構ってられないんだろう。
0458nobodyさん2006/02/05(日) 13:34:12ID:???
ID表示しながら自演とか、なかなか図太い神経してますね(>_<)
04594292006/02/05(日) 22:55:31ID:???
>>441-442
華麗なコーディングありがとうございました。
完璧です。多重配列を使いこなせる人はスゴイ。

自分もいろいろと考えてみた結果
・自分の状態("└"か"├")
・自分の全ての親の状態("│"か" ")
が分かれば木構造が作れるのに気付いたので

1. 逐次走査して全項目の状態("└"か"├")を調べて記録する
2. もう一度逐次走査して親の情報を作りながら木構造を作っていく
とすることで目的の処理ができました。(再帰と多重配列は使わず)

お世話になりましたー。
0460nobodyさん2006/02/06(月) 11:55:45ID:kZ4iy7FB
質問です
htmlのtextareaの内容を入力として、外部の実行ファイル(例えばsort等)に投げて、
htmlとして出力を得るような方法はありますか?
perlコーディングと関係ないかもしれませんがよろしくお願いします。
0461nobodyさん2006/02/06(月) 12:16:51ID:???
>>460
>>1
> 1: 自分はこういう事がしたい。
> 2: それでこんな風にやってみたが・・・
> 3: こんなエラーが出て上手く行かなかった。

■こんなCGI作ってください■ Part.2
http://pc8.2ch.net/test/read.cgi/php/1133361560/
0462nobodyさん2006/02/06(月) 18:28:41ID:???
>>459
そのコードを見てみたかったな。
考えてみたけど、こんなのしか考えつかなかった。
my @data;
my $max = -1;
while(<DATA>){
m/^( *)(.*)$/;
my $level = length($1);
push(@data, [$level, $2, '']);
($level > $max) and $max = $level;
}
foreach my $level (0..$max){
my $found = 0;
foreach(reverse(0..$#data)){
if ($data[$_]->[0] < $level){
$found = 0;
} elsif ($data[$_]->[0] == $level){
$data[$_]->[2] .= ($found ? '├' : '└');
$found = 1;
} else {
$data[$_]->[2] .= ($found ? '│' : ' ');
}
}
}
foreach(0..$#data){
print @{$data[$_]}[2, 1], "\n";
}
04634292006/02/06(月) 23:52:11ID:???
お世話になったので公開。大したモノでなくスレ汚し申し訳ない。
#勉強がてらに多重配列を使ってみました

while (<DATA>) {
    m/^( *)(.*)$/;
    $now = length $1;
    push @data, [$now, $2, 0]; # [階層の深さ, 項目名, "├"なら0、"└"なら1]
    $tmp[$now] = $.-1; # 階層毎に一番最後に出現した行の「行番号-1」を記録
    $max = $now if $now > $before;

    if ($now < $before) {
        $data[$tmp[$_]][2] = 1 for $now+1..$max;
        $max = $now;
    }
    $before = $now;
}
$data[$_][2] = 1 for @tmp;

$before = 0;
@tree = ('│', ' ', '├', '└');
for (0..$#data) {
    $now = $data[$_][0];
    if ($now > $before) { push @parent, $data[$_-1][2]; }
    elsif ($now < $before) { pop @parent for 1..$before-$now; }
    print $tree[$_] for @parent;
    print $tree[$data[$_][2]+2], $data[$_][1], "\n";
    $before = $now;
}
0464nobodyさん2006/02/07(火) 01:09:36ID:???
>>463
なるほど。
> if ($now < $before) {
> $data[$tmp[$_]][2] = 1 for $now+1..$max;
> $max = $now;
> }
この処理で、一回のループで行けるわけですね。
ありがとう。
0465nobodyさん2006/02/07(火) 06:10:53ID:wug3jbil


1: 自分はこういう事がしたい。→ 計算機
2: それでこんな風にやってみたが・・・ → やってみましたけど…
3: こんなエラーが出て上手く行かなかった。
 → 2**64 = 1.84467440737096e+019

実数ではなくてこんななっちゃいましたorz
アドバイスお願いします
0466nobodyさん2006/02/07(火) 06:19:53ID:???
bigint
0467nobodyさん2006/02/07(火) 06:28:08ID:wug3jbil
>>466
こんな時間にありがとうございます

多倍長整数なんて初めて聞きました
bigintをどうすればおkなんでしょうか?
0468nobodyさん2006/02/07(火) 06:28:57ID:???
use bigintすればOK
0469nobodyさん2006/02/07(火) 06:32:44ID:wug3jbil
>>468
#!/usr/bin/perl
use bigint

↑たったこれだけっすか?

0470nobodyさん2006/02/07(火) 06:35:16ID:???
そうだよ
";" を忘れずに
0471nobodyさん2006/02/07(火) 06:38:16ID:???
感動した。

$ perl -e "use bigint;print 2**64;"
18446744073709551616
0472nobodyさん2006/02/07(火) 06:39:39ID:wug3jbil
>>470
ん〜エラーになるんですよね…


Error 500
CGI エラー - Content-Type ヘッダが正しくありません。
CGI 出力メッセージ:

Can't locate bigint.pm in @INC (@INC contains: C:/Perl/lib C:/Perl/site/lib .)
at C:\httpd\www\tes.cgi line 3.
BEGIN failed--compilation aborted at C:\httpd\www\tes.cgi line 3.
0473nobodyさん2006/02/07(火) 06:41:39ID:???
>>472
                      ____    、ミ川川川彡
                    /:::::::::::::::::::::::::""'''-ミ       彡
                   //, -‐―、:::::::::::::::::::::三  ギ  そ  三
            ___    巛/    \::::::::::::::::三.  ャ  れ  三
        _-=三三三ミミ、.//!       l、:::::::::::::三  グ  は  三
     ==三= ̄      《|ll|ニヽ l∠三,,`\\::三  で       三
        /              |||"''》 ''"└┴‐` `ヽ三   言  ひ  三
         !             | /          三   っ  ょ  三
       |‐-、:::、∠三"`    | ヽ=     U   三.  て   っ  三
       |"''》 ''"└┴`       | ゝ―-        三  る  と  三
       | /           ヽ ""        ,. 三   の   し  三
        | ヽ=   、    U    lヽ、___,,,...-‐''"  三   か  て  三
.        | ゝ―-'′          |  |::::::::::::_,,,...-‐'"三  !?    三
          ヽ ""        ,.    | | ̄ ̄ ̄      彡      ミ
        ヽ、___,,,...-‐''"  ,,..-'''~             彡川川川ミ
          厂|  厂‐'''~      〇
        | ̄\| /
0474nobodyさん2006/02/07(火) 06:44:04ID:wug3jbil
>>473
いやマジッス!
つーかクロ高のAAワロスw


>>472はhttpdでローカルで試した結果です
0475nobodyさん2006/02/07(火) 06:52:10ID:???
Perl5.8入れてみよう
0476nobodyさん2006/02/07(火) 06:55:34ID:wug3jbil
use Math::Bigint;
もダメぽ・・

5.6…だたよママン
0477nobodyさん2006/02/07(火) 13:36:58ID:???
たまに釣られてみるのも悪くは無いかな・・・

print "content-type: text/plain; charset=Shift_JIS\n\n";
Shift_JIS のところは編集してるファイルの文字コードにあわしてね
0478nobodyさん2006/02/07(火) 13:44:22ID:???
>>477
いや、
>Can't locate bigint.pm
のところが問題なんじゃないのか?
0479nobodyさん2006/02/07(火) 14:04:11ID:???
回答者も初心者かよ
いい加減にしろよ
0480nobodyさん2006/02/07(火) 14:26:12ID:???
anhttpdはCGIの動作は怪しいからapache入れた方がいい
それかコンソールで確認するか…
0481nobodyさん2006/02/07(火) 14:33:11ID:???
アクティブパールでローカル上でcgiを走らせているんですが、
require "./jisaku.pl";
などファイルをインクルードする文を実行する命令を付け足すと、画面が真っ白になってどうにもなりません。
require命令を消して実行すると上手くいきますが、
どうしてもファイルを分割してコーディングしたいです。
どうにかなりませんか。
0482nobodyさん2006/02/07(火) 14:36:58ID:???
jisaku.plから呼び出し元の関数呼んでたり、無い関数を呼んでたりしてない?
■ このスレッドは過去ログ倉庫に格納されています