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

【Perl】初心者コーナー Part19

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん03/01/11 13:52ID:???
初めに→「perl」その物のスレです。

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

1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。

あとは>>2-10にまかせた。
0077903/01/12 12:57ID:???
>>64〜

イロイロありがとうございます。
モジュールについても調べて(探して)みてます。
(英語に苦戦してますが…)

それと
>それに、おそらく標準のrand()の線形合同法(?)の周期も気になるだろうから、
これについても、testしてみましたが、そのようです。
わざわざご丁寧にありがとうございました。


日頃からほとんどモジュールを使わないのに加えて、複数調べているので理解に時間がかかりそうですが、
解決できそうな感じです。

とても勉強になりました。(イロイロな意味で)
00787103/01/12 13:01ID:tUI5W5YD
>>74
ありがとうございました。
無事取得できました。
0079nobodyさん03/01/12 13:12ID:???
>>63
> $unko >> 1 で、1さんに……じゃなくて、$unkoを右に1ビットシフト。空いたビットは0で埋め立て。
いやあのそのそれだと「ビットシフト」なのではないかと(苦笑)
01001011 RightRoll.b ===> 10100101
なんて具合になるのがあればと(苦笑)@キャリーフラグが立ってもよい(笑)

> ところで、分布に偏りができてしまうのは仕方が無い。
それをどれだけうまく誤魔化せるかが思案のしどころですヨね(^-^*)

>>77
エロエロがんばってくらさいです(^-^)
0080nobodyさん03/01/12 13:28ID:eJ8Igs3E
>>73
すみません。
マルチポストってマナー違反ってしりませんでした。
ごめんなさい。
0081nobodyさん03/01/12 13:34ID:5wjAToqi
  ∋8ノノハ.∩
   川o・-・)ノ <先生!こんなのがありました!
__/ /    /   
\(_ノ ̄ ̄ ̄\
||ヽ|| ̄ ̄ ̄ ̄||
 ...|| ̄ ̄ ̄ ̄||
http://web2001.kakiko.com/koma/
00825803/01/12 13:54ID:???
>>69
まったくその通りでした。
<div><div><div></div></div></div>
<div><div><p></p></div></div>
等が正しいです。
0083nobodyさん03/01/12 14:09ID:???
>>80

わかったらもうくんな低脳
00846303/01/12 22:24ID:???
>>79
うわっ!おっしゃる通り、シフトとローテートを勘違いしてますた!(恥ずかしい…)
ビット演算子を駆使すればローテートは実現可能だけど、あんまりスマートじゃない。
Perlにもキャリーフラグがあればなあ(w
0085nobody03/01/13 11:10ID:CGEjRZ/e
初めまして。
質問させてください。

@a,@b,@cという3つの配列があり、全部の値をどの配列から渡されたかわかるように
1つの関数に渡したいのですが渡し方がわかりません。
なお、配列の要素数は場合によって変動します(0〜20程度)。

どなたか、上手い方法をご教授願えますでしょうか。
0086nobodyさん03/01/13 11:26ID:???
参照で渡せば
0087nobodyさん03/01/13 11:27ID:eXLsypXq






http://dx1.kakiko.com/sonota/335/3352/index.html




0088nobodyさん03/01/13 12:08ID:???
>>85
my @a = ('A', 'B', 'C');
my @b = ('a', 'b', 'c');
my @c = ('11', '2', '3');

&abc(C => \@c, B => \@b);

sub abc
{
    my %abc = (
        A => undef,
        B => undef,
        C => undef,
        @_
    );
    print "@{$abc{A}}\n"; # undef
    print "@{$abc{B}}\n"; # a b c
    print "${$abc{C}}[1]\n"; # 2
}
0089nobodyさん03/01/13 12:24ID:???
>>88
こっちの方が要望に近いのかな?

my @a = ('A', 'B', 'C');
my @b = ('a', 'b', 'c');
my @c = ('1', '2', '3');

&abc2('b', @b); # array=b a b c
&abc2('a', @a); # array=a A B C
&abc2('c', @c); # array=c 1 2 3

sub abc2
{
    my $ary = shift;
    my @abc = @_;

    print "array=$ary @abc\n";
}
0090nobodyさん03/01/13 12:53ID:W4AV/IuU
>>89
それは違うじゃろ。

&hoge(@a, @b, @c);とかやって、混ざってしまうから、困ったんだと思う。

じゃあもう一つ提案。凝った事をしてあるのは、-wで怒られないようにするため
sub abc3 {
my ($a, $b, $c) = @_;

my @a = (ref $a ? @$a : undef);
my @b = (ref $b ? @$b : undef);
my @c = (ref $c ? @$c : undef);
}
&abc3(\@a, \@b, undef); #アドレスをそのまま渡す。参照渡し?
&abc3([ @a ], undef, [ @b ]); #コピーを作って渡す
0091nobodyさん03/01/13 13:20ID:???
>>90
ぉぉ、なるほど!
-wオプション考慮も良いですね〜
勉強になりますm(_ _)m
0092nobodyさん03/01/13 14:26ID:???
open で失敗した時に
open(〜)||〜;
で後者には $hogehoge = 1; とかは掛けないのでしょうか?
一応自分でやった限りは dieとexit と &hogehoge 等のサブルーチン
しか使えませんでした。
0093nobodyさん03/01/13 14:41ID:???
>>92
||
じゃなく
or
をどうぞ
0094nobodyさん03/01/13 14:48ID:???
>>92
ちなみに優先順位の違いです
open(〜) || $hogehoge = 1;
は
(open(〜) || $hogehoge) = 1;
となり
orは=より優先順位が低いので
open(〜) || ($hogehoge = 1);
と同じになります。。
0095nobodyさん03/01/13 20:39ID:vdJkNLtH
質問させて下さい。
CGI_Lite.pmを使ってファイルのアップロードをさせたいのですがわからないところがあります。
$upload = new CGI_Lite;
、、、略
$filename = $upload->filter_filename(\&conv);
$upload->close_all_files;
%dat = $upload->parse_form_data;

でとりあえずファイルがアップロードされる事はわかりました。
<FORM ACTION="up.cgi" ENCTYPE="multipart/form-data" METHOD="POST">
<INPUT TYPE="text" NAME="Text">
<INPUT TYPE="file" NAME="File">
<INPUT TYPE="submit" VALUE="送信">
</FORM>
フォームの部分をこのようにしてみたのですが、この場合textに入力した文字はどのような処理がされるのですか?
一応$dat{Text}で取り出せることは確認できたのですが、Fileの方とは別の処理になるのでしょうか?
よろしくお願いします。
0096nobodyさん03/01/13 21:48ID:7xzy2NEr
   ______________
 /:\.____\
 |: ̄\(∩´∀`) \  <先生!こんなのがありました!
 |:在  |: ̄ ̄ U ̄:|
http://saitama.gasuki.com/mona/
0097nobody03/01/13 23:16ID:CGEjRZ/e
>>86,88,90
refを使えばいいのですね。

調べて使って行こうと思います。

質問の言葉が足りない中、正確に類推してくださった90さんには
格別の感謝を。
他の方々もありがとうございました。
0098貧乏パーラー03/01/13 23:31ID:???
下を解凍できますか?
----ここから
_=_
_=_ Part 001 of 001 of file testdbi.zip
_=_

begin 666 testdbi.zip
M4$L#!!0````(`."Z+"YQ\[Y:G0```-,````*````=&5S=&1B:2YP;"V.L0K"
M,!"&]T+?X2@=4C!@=2P)*H*X.KAHD9I>24#2D*94D;Z[B>EP</]]W\$_#@C'
MP[E*D[Q]:I;O+Z?K;5W'+)E'E(M>:Q2.!&,5C;)>EDU=!'=PDH4'RHU%TU@D
M$6__6'5`@D(YOE&,#@OXI@E,4KV0[&P_L4@[=$+Z^&BL;3Y1`C!6:0=9\.XZ
MJ\)M3I,Y-J2\5<-2T*/2SP]02P$"%``4````"`#@NBPN<?.^6IT```#3````
M"@`````````!`"``MH$`````=&5S=&1B:2YP;%!+!08``````0`!`#@```#%
%````````
`
end

----ここまで
0099yani ◆saNSktNEdQ 03/01/13 23:33ID:ziR7v8Q2
自分でも考えてみたんだが、
$seed = unpack "%L*", md5(join '.', gettimeofday, $$, `ps axww |gzip`);
というのはどうだろう。
実用的にはには
$seed = unpack "%L*", md5(join '.', gettimeofday);
で十分なようで、こちらのほうが相当速い。

# Time::HiRes, Digest::MD5とも perl5では標準モジュール

問題は$seedが16bit整数になることだが、、、なぜだ???
0100yani ◆saNSktNEdQ 03/01/13 23:34ID:ziR7v8Q2
× # Time::HiRes, Digest::MD5とも perl5では標準モジュール
◯ # Time::HiRes, Digest::MD5とも perl5.8では標準モジュール
01019003/01/13 23:35ID:W4AV/IuU
あ。後で思いついたけど、間違えてハッシュのリファレンスとかを
渡しちゃうとコンパイルエラーになる・・。あと三項演算子の優先順位
をちゃんと理解していなかったから、無駄な括弧が・・

修正版:
sub abc3 {
my ($a, $b, $c) = @_;

my @a = ref $a eq 'ARRAY' ? @$a : undef;
my @b = ref $b eq 'ARRAY' ? @$b : undef;
my @c = ref $c eq 'ARRAY' ? @$c : undef;
}
01029003/01/13 23:42ID:???
で、やってること自体は88と同じ。自分は拡張性が低い方法を書いてるだけ。・・
0103nobodyさん03/01/13 23:43ID:???
>>98
解凍でけたけど、できなくって困ってるのだったら
「できますか」なんてきくなよ。
0104nobodyさん03/01/14 00:21ID:uaEPu1zE
画像ファイルをアップロードしたり書き換えたりする
プログラムを書いているのですが、
初めてアップロードする場合はよいのですが、
ファイルを書き換える(上書き)時、
どうも、ブラウザのキャッシュが悪さをしているようで
ファイル上では書き変わっているのに、ブラウザ表示上では
以前の画像ファイルが表示されてしまう事があります。
(この場合何度かリロードしないと本来のファイルを表示してくれません)

これを、書き換えた後はキャッシュを利用しないようには出来ないでしょうか?
0105nobodyさん03/01/14 00:25ID:yqTa2j5Q
http://www6.ocn.ne.jp/~endou/index2.html
0106yani ◆saNSktNEdQ 03/01/14 01:29ID:HMXRNLis
>>99
事故レス
当たり前だった。
0107貧乏パーラー03/01/14 02:44ID:???
>>98.103
長いスクリプト貼り付ける時つかったらて思いますがいかがでしょう?
0108nobodyさん03/01/14 02:49ID:???
>>104
ファイル名にtimeのクエリを取り付けるとよかと。
(ただし、JavaScriptかSSIが必要)
読み込みたい画像が、
a20030114025535.jpg
だとするとき。
本来ならば、
<img src="a20030114025535.jpg" width="100" height="100" alt="img">
のところを、JavaScriptで排泄しる。
<script type="text/javascript"><!--
var T = new Date();
document.write('<img src="a20030114025535.jpg?' + T.getTime() + '" width="100" height="100" alt="img">')
// -->
</script>
など。
SSIならば、
表示させたいところに、
<img src="a20030114025535.jpg?time関数の値" width="100" height="100" alt="img">
を吐き出す .cgi を描く。

ブラウザの中には Pragma:no-cache 等を無視してくれよるのもおるから。
010910403/01/14 03:54ID:???
>>108
ほぉほぉなるほど!!
それならば、別ファイル(?)として扱われるわけですね。

HTMLのヘッダに
Pragma:no-cache
cache-control:no-cache
入れてまして、HTMLの方は非キャッシュOKだったんですけど
画像の方がどうもうまくいっておりませんでした。

今日は遅いので明日にでも試させて頂きますー。
0110NOBODYたん03/01/14 04:04ID:???
蛇足。

>>85
関数を先に宣言するのであれば、
--
sub hoge(\@\@\@)
{
...
}
hoge(@a0, @a1, @a2);
--
と書いたとき、hoge(\@a0, \@a1, \@a2); と同じ効果を得られる。

たとえば、以下のように pop 関数を再実装することが可能。
(mypop(\@array) と書く必要はない。)
--
sub mypop(\@)
{
my $ar = shift;
my $last = $ar->[-1];
$#$ar--;
return $last;
}
$x = mypop(@array);
--
0111nobodyさん03/01/14 04:58ID:/jKmOe0i
他鯖のhtmlを読むにはどうすればいいですか?
0112nobodyさん03/01/14 05:00ID:???
socketとかconnectとかreadとか。
0113NOBODYたん03/01/14 05:44ID:???
>>111

use LWP::Simple;
$html = get "http://www.perl.com/";

or

use LWP::UserAgent;
$html = wget("http://www.perl.com/");
sub wget
{
my $url = shift;
my $request = new HTTP::Request(GET => $url);
my $ua = new LWP::UserAgent;
my $response = $ua->request($request);
if ($response->is_success) {
return $response->content;
} else {
return undef
}
}

cf. http://search.cpan.org/author/GAAS/libwww-perl-5.68/
0114nobodyさん03/01/14 05:45ID:KVuhYobl
MXなどで集めた動画をみんなでココにUPしよう!
http://www6.ocn.ne.jp/~endou/ten.html
0115nobodyさん03/01/14 06:42ID:/jKmOe0i
>>113
ありがとうございます。
LWPを使って読めるようになりました。
作っているのは、よくある○○弁変換みたいな奴なんですが、
読み込むサイズによって過負荷になってしまいますよね。
サイズのチェック(一定量処理したらやめるような)は
どうすればいいのでしょうか。
Simpleのheadを使ってみたのですが
yahooさえcontent-lengthを返さないのでダメでした。
011611103/01/14 06:53ID:???
ん、UserAgentのmax_size([$bytes]) 、これでできそうですね。
0117nobodyさん03/01/14 07:19ID:ea2A6+p/
>>115
あまりに時間がかかりすぎるようなら、サーバーが500を返して勝手に止まるから、
それでいいじゃねえか
0118nobodyさん03/01/14 10:37ID:???
おいおい、過負荷で止まって「いいじゃねぇか」は
ないだろ。そういうCGIが増殖するから、あんまり
CGIがまともにつかえそうなところがなくなるんだよ。
0119nobodyさん03/01/14 10:39ID:???
>>107
とりあえず貧乏パーラは人にものを頼むときに「お願いします」って
言うってことを覚えとけ。

ほれ、

$ cat testdbi.pl
use DBI;
$dbn=$ARGV[0];
$dbh=DBI->connect($dbn,$ARGV[1],$ARGV[2]);
$sth=$dbh->prepare($ARGV[3]);
if ($sth->execute) {
while(@row=$sth->fetchrow_array) {
print "@row\n";
}
}
$dbh->disconnect;
1;

0120nobodyさん03/01/14 13:10ID:xMMJe1Uf
ハッシュのキーじゃなくて値でソートして、キーも値も出力したいんですけど
うまくいきません。

■スクリプトはこんな感じ
-------------------------------------
%hoge = ('unko' => 5,
'chinko' => 3,
'manko' =>9);

foreach my $k(sort{$hoge{$a} <=> $hoge{$b}}%hoge) {
print("$hoge{$k}" . "\t" . $k . "\n");
}
-------------------------------------

■出力結果はこんな感じ
-------------------------------------
9
3
5
3 chinko
5 unko
9 manko
-------------------------------------
いちおう値でソートしてくれてるんですが、目的の出力の前になぜか値の一覧が出てしまいます。
どうすればいいですか?( ´・∀・`)
0121 ◆PxAOHU.zVE 03/01/14 13:49ID:pln/ogcF
>120
%hogeの前にkeysをいれる。
0122nobodyさん03/01/15 00:32ID:AlO2VnQa
Image::Magick を使って画像を作っています。
せっかく文字出力ができるので、webdingsなどのフォントにある外字を
使おうと思ったのですが、文字の指定方法がわかりません。

普通の文字なら
$NEWIMG->Annotate( text=>'A', pointsize=>14, fill=>'#000000',
  x=>$posX, y=>$posY, font=>'img/ariblk.ttf' );

とやればいけるのですが、使いたい文字をアクセサリの「文字コード表」
から拾ってきても「?」になってしまいます。
文字コードはわかるからそこから指定できるのではないかと思いますが
その指定方法がわかりません。
どのように指定したらいいでしょうか?
012310403/01/15 01:59ID:???
>>108
無事非キャッシュ成功いたしました。
ありがとうございました。
0124nobodyさん03/01/15 02:08ID:ybtk15GB
この子カワイイ
http://click.dtiserv2.com/Click5/1-45-2963
0125貧乏パーラー03/01/15 05:22ID:???
>>119
ありがとうサンキューです。
それってどうやってやりましたか?
0126貧乏パーラー03/01/15 05:28ID:???
DBD::PgPP使いました。
SELECTでフィールド8個以上をクエリするとエラーなります。
DBをMySQLにしてDBD::mysqlPPにしたらフィールド33個をクエリしてもOKでした
クライアント、DB共にWinXPです。
DBD::PgPPはこういう制限があるという事でしょうか?宜しくお願いします。
0127nobodyさん03/01/15 07:39ID:???
$str = "1234";を最初の2文字"12"にしたいのですが、
どうすればよろしいでしょうか。

今は、chop $str;chop $str;でやっています。
VBAでいう、left(string,2)の様な関数?はありますか?
0128nobodyさん03/01/15 07:59ID:???
substr($target_str,0,2)
VBAは良く知らんがN88BasicのMIDの感じだな。
012912703/01/15 09:02ID:???
>>128
サンクス
0130nobodyさん03/01/15 09:56ID:2BGcsgzZ
>>126
作者日本人メール汁
0131nobodyさん03/01/15 10:22ID:wVEDeB5S
管理人(私)だけが項目を設定し、来訪者に投票してもらう
という投票・ランキングcgiを設置しようと出来合いの探したところ
項目が140あるので検索機能がついたvote.cgiを探したところ、
ttp://www.c-5.ne.jp/~hamachan/cgihtm/jiten.htm
上記↑で配布されている「簡易データーベース」というものにたどり着きました。
プログラムが古いので
require './jcode.pl';
#-----------------------------------------------------------------
↑これの次の行に↓この一行を追加しました。
open STDOUT, '>-';
jcode.plも新しいバージョンに変えて、説明書きにあったとおり
「ずっこけ物知り辞典」という表示がページに出るところまでは
うまくいったのですが、実際に登録・検索しようとすると、
「ページが見つかりません」、との表示が出ます。
ちなみに、Tripodを使っています。

FTPソフトで見ると、cgi-binフォルダの中に
jiten.cgi、jcode.pl、jiten.docが入っていますが
jiten.docのファイルサイズは0になっています。
count.docファイルは生成されていないようです。

どこをどう改善すればよいのか、ご指導よろしくお願いします。
0132nobodyさん03/01/15 10:45ID:???
>>131
データファイルを別ディレクトリにしてみたら?
TripodのCGI設置の説明をちょっと読んだけど、cgi-bin 直下に画像ファイルなどは
置けないとあるので、.cgi .pl 以外のファイルは全滅なのかもしれん。

あと、ここはPerlスレだからCGIに関する質問はできるだけ他のスレでやってな。
013313103/01/15 11:00ID:???
>>132
すみません、CGIスレに移動します。
01348503/01/15 12:12ID:lPFUjXcR
>>110,101
ありがとうございます。
参照は初級者向けじゃないみたいで、例文に参照以外の
わからない箇所が多いので地道に勉強中。

ソース丸写し以外で使えるよう頑張ります。
0135山崎渉03/01/15 13:31ID:???
(^^)
0136nobodyさん03/01/15 14:07ID:???
perlスクリプト中で
新たなPATHを追加したいと思ったんですけど
$ENV{'PATH'} .= ';c:\hogehoge';
ではうまく行きませんでした どうやればいいのでしょうか?
0137nobodyさん03/01/15 15:38ID:5j+QQZeA
ご近所さんみたいなメール転送の仕組みを作りたいんですが...
色んなアカウントに送られてきたメールを片っ端からDBに登録したいのです。
なんかいい参考書やサイトを知りませんか?

よろしくおながいしますm(_ _)m
0138vvv03/01/15 15:42ID:ZNHQB8hs
http://www6.ocn.ne.jp/~endou/index2.html
    ★YAHOOOプロフィール★
0139nobodyさん03/01/15 18:26ID:???
>>137
スレ違い
0140nobodyさん03/01/15 19:13ID:POOF/+eY
カテゴリで検索可能なサーチエンジンやリンク集などのデータファイルは、
下記の場合、どちらが効率的なのでしょう?

1.例えばデータファイルを一つにまとめ、
登録NO<>カテゴリ<>データ
などと登録する方法

2.データファイルをカテゴリ毎に、
data1.log
data2.log ・・・
等と1カテゴリで1データファイルとする。

一つのデータファイルにまとめるとファイルが大きくなってしまい、
カテゴリ毎に分ける方が良い様な気もするのですが、
実際の所はどうなのでしょうか?
サーバー付加の大小の観点からも御指導頂ければ幸いです。

0141nobodyさん03/01/15 20:20ID:mlzRLcDE
@tbl[100][100];
じゃ二次元テーブルってできないのですか?
アルゴリズムを教えてください。
0142nobodyさん03/01/15 20:23ID:???
>>141 自己レス
すいません、二次元配列で検索した直ぐに分かりました・・・
はぁ・・・容易にはできないのですね。がんばって作ります。
01435803/01/15 21:20ID:???
$tbl[100][100] = 'Hello?';
print $tbl[100][100];
0144nobodyさん03/01/15 22:04ID:???
>>141
中身的にはリファレンスの配列になるけど、単にそれだけで使うなら
普通にそうやって書くだけで二次元配列になると思うが。
014514403/01/15 23:45ID:???
さすがに書けるよな…<連書規制に引っかかってた
リストの二次元配列だから面倒だわ、忘れてくれぃ。
0146nobodyさん03/01/16 07:53ID:RDhobq0J
-$aaa=>[$bbb,$ccc]
っていうのがあるのですがこの"[]"は何をやってるのですか?
0147nobodyさん03/01/16 13:09ID:???
>>141-146
http://www.kt.rim.or.jp/~kbk/perl5.005/perlref.html
http://www.kt.rim.or.jp/~kbk/perl5.005/perllol.html
とにかく全部読め。話はそれからだ。
0148nobody03/01/16 19:36ID:6WICp0JY
$bgcolor,$backgorundなどにはbodyタグで使用される文字が入っています(文字列が入っていることは確認済み)。
そこで、それらを結合するために

$body = '<body bgcolor="'.$bgcolor.'" background="'.$background.'" text="'.$text.'" link="'.$link.' " vlink="'.$vlink.'" alink="'.$alink.'">';

と書いたのですが、なぜか$bodyが空文字になってしまいます。
超初歩だとは思いますがどなたか解決法を教えてくださらないでしょうか。
0149nobodyさん03/01/16 19:43ID:???
$body = qq(<body bgcolor="$bgcolor" background="$background" text="$text" link="$link" vlink="$vlink" alink="$alink">);

$bodyが消える理由はわからんが。
スコープ外とかいうオチじゃないかな?
0150nobodyさん03/01/16 20:00ID:???
>>148
つうかなんのスクリプトよ。
話はそこからだろ?
0151nobodyさん03/01/16 20:46ID:???
阿呆?
0152nobodyさん03/01/16 21:02ID:???
>>148
つうかなんちゅうスクリプトの描き方だよ。
149氏のように書き換えてみてから実行して美奈代
015314303/01/16 21:23ID:???
>>147
ども、読破しました。
ところで@a->[1];の書き方ってありでしょうか。
素直に$a[1];と書けばいいんでしょうけど…。
0154nobodyさん03/01/16 21:31ID:rmmrK9en
\{@a}->[1]
0155 ◆ZnBI2EKkq. 03/01/16 21:59ID:4OjEZO2W
あるプログラムのHTTPヘッダ出力の部分で
my $expires = shift;
・・・
if($expires > 0) {
グリニッジ標準時の文字列を作って
}
print "Set-Cookie: ・・・
とやっているのですが $expiresには何が入って
どういう意味で使ってるかわかりません。
教えて下さい。よろしくお願いします。
0156nobodyさん03/01/16 22:27ID:t/gkHHSA
>>155
expireの意味知ってますか?
クッキーの有効期限設定してるんだろ
expireなしなら、セッション間のみ有効なクッキー
CGIの話ね
0157nobody03/01/16 22:30ID:6WICp0JY
>>149
ありがとうございました。
それをコピペしたら普通にできました。

原因はじっくり解明したいと思います…。
0158nobodyさん03/01/16 22:45ID:Tl7JXy0h
mod_perl 用にソースを改造してんだけど、
ほとんどのサイトでは

use strict 使う
-w スイッチ使う
グローバル変数をなるべく使わないようにする
/o スイッチ使わない

くらいしか書いてない。
なのに、この通りやってもなんか銚子が悪い。

mod_perl で動かすときって何か他にやらなきゃいけないことってあるん?
例えば eval 使ってはだめとか、
オブジェクトはちゃんとDESTORYしないとだめとか。
0159nobodyさん03/01/16 22:49ID:rmmrK9en
exitを使わない。require ... で読み込んだ物に注意する。
0160nobodyさん03/01/17 00:43ID:???
ファイルをOpenして
その中にある hoge 言う文字がいくつあるかカウントしたいんですが
どうすればいいんでしょう?
open (HOGE,"hoge.txt");
?????
close(HOGE);
0161nobodyさん03/01/17 01:18ID:???
>>160
hogeがどんな風に入っているかで変わってくる。

一つの行にhogeが0か1個しか入っていないことが保証されているならば、

open(HOGE, 'hoge.txt');
@hoge = grep { /hoge/ } <IN>;
close(HOGE);
$count_hoge = scalar @hoge;

全く保証されていないならば、

open(HOGE, 'hoge.txt');
$hoge = join('', <IN>);
close(HOGE);
$count_hoge = $hoge =~ s/hoge//g;

これでいいような気がする。
0162nobodyさん03/01/17 02:19ID:???
$count += map {1} /(hoge)/g while <HOGE>;
0163nobodyさん03/01/17 02:32ID:???
>>160
Cだとものすごく簡単だけど、Perlだとそんなに難しいのか?
0164nobodyさん03/01/17 15:03ID:l3uVFji3
オブジェクト指向Perlを始めたのですが、
メソッド(サブルーチン)の引数が正しくない
(引数の数が正しくないとか、数字であるべきところが文字列だったとか)
の場合、どうすればいいのでしょうか?

エラーを表示?
エラーを返して終了?
単にreturn?
0165nobodyさん03/01/17 15:27ID:???
>>164
エラーコードを返す。
0166nobodyさん03/01/17 15:34ID:???
>>164
他人の書いたコードも見てみるといいよ。
あと、標準の Carp モジュールも調べてみたら。
0167nobodyさん03/01/17 18:46ID:95w9V4FK
煮詰まっています。画像アップ掲示板を
設置しようとしています。
とりあえず入り口は出来たのですが、肝心の出口がどうやら設定がおかしい
ようで"画像をアップできません"とエラーが出ます。
恐らく下記の設定方法を間違えているのでエラーが出るのだと思います。

# アップロードディレクトリ
# → パスの最後は / で終わること
# → フルパスだと / から記述する
$ImgDir = "?????.hp.infoseek.co.jp/clip/img/";

# アップロードディレクトリのURLパス
# → パスの最後は / で終わること
$ImgUrl = "http://?????.hp.infoseek.co.jp/clip/img/";

色々調べたのですが、ここの部分だけハッキリ答えが出せません。
どうか出口の設定方法を教えてください。
0168nobodyさん03/01/17 19:00ID:zt5lo6Y5
# に書いてあるとおりにやればいいんじゃ?
今どう設定してあってエラーでてるの?
てか何を悩んでるの?
0169nobodyさん03/01/17 19:01ID:???
1:自分はこう言う事がしたい。
2:それでこんな風にやってみたが・・・
3:それだとこんなエラーが出て上手く行かなかった。
て書いてくれ。

下げてみるテスト(鬱
0170nobodyさん03/01/17 19:10ID:mT3lwUSe
MAC OS10.2.3でFTPにアップロードするとファイルが
壊れて0バイトになってしまいます。
使用ソフトはTransmitとNetFinderです。
アップするファイルはCGIのためアスキーモードで転送しています。
でもファイルが壊れてしまいます。
9だとうまくアップできるんですが・・・
どなたか詳しい人教えて下さい
0171nobodyさん03/01/17 19:55ID:???
>>160
my $str;
my $file = 'hoge.txt';
my $hoge_count = 0;

open TXT, $file or die $!;
read TXT, $str, -s $file;
close TXT;

while($str =~ m/hoge/g){
$hoge_count++
}
print $hoge_count, "\n";
0172nobodyさん03/01/17 20:06ID:???
ログを追記式にしていたのですが
ファイルがかなり大きくなってきて
ファイルを全て読み込まず
ファイルの末尾から一行ずつ読み込みたいのですが、
どうしたらいいのでしょうか?
0173nobodyさん03/01/17 20:22ID:???
>>172
無理です。日毎、週毎などでログファイルを切っていきましょう。
0174nobodyさん03/01/17 20:26ID:???
でもtailみたいなプログラムもあるのですから可能なのではないですか?
0175nobodyさん03/01/17 20:27ID:???
>>167
# アップロードディレクトリ
# → パスの最後は / で終わること
# → フルパスだと / から記述する
$ImgDir = "/clip/img/";

# アップロードディレクトリのURLパス
# → パスの最後は / で終わること
$ImgUrl = "/clip/img/";

で、いんでないの?

>>170
丸痴君ね。
http://pc.2ch.net/test/read.cgi/mac/1042606577/267

>>172
過去ログに似たようなのがあったような記憶が・・・
0176nobodyさん03/01/17 20:30ID:???
>>174
んぢゃ tail を使う。
print `tail -n $num logfilename`;
017717303/01/17 20:31ID:???
>>174
tailを知っていたのなら、ソース読んじゃえばいいのに。
全部読み込んでいるよ。まあ、細かく言えばPerlのようには
読んではいないけど、全てを読み込まないのに最後を知る
方法はないです。
■ このスレッドは過去ログ倉庫に格納されています