Perlコーディング初心者質問スレ Part 57at PHP
Perlコーディング初心者質問スレ Part 57 - 暇つぶし2ch116:nobodyさん
08/03/14 01:13:26
ありえる数字を列挙させて、それのチェック対象が1つの変数なら
1つの変数に対して配列で一気にチェックできた気がする

grep 使ったような使わなかったような・・・ごめん。 俺にはもう無理w

117:nobodyさん
08/03/14 01:41:34
長くて見づらいけど、処理量が多くて重くなるよりはマシかな。
そんな劇的な違いは無いとしても気分的になんとなくw

118:nobodyさん
08/03/14 01:51:12
重いと言っても何百万回も繰り返さないから、こうしちゃうなw
if($aaa =~ /^(1|5|13|17|25|34)$/)

119:nobodyさん
08/03/14 06:02:08
%tmp = map { $_ , 1 } ( 1, 5, 13, 17, 25, 34 ) ;
if ( defined $tmp{$aaa} ){
 print "俺の名を言ってみろ\n" ;
}

120:nobodyさん
08/03/14 11:41:19
>>116
grep使う方法だとこうかな?

if ( grep { $aaa == $_ } qw( 1 5 13 17 25 34  ) ) {
    # code here
}

121:nobodyさん
08/03/14 11:42:57
# no 5.10
grep { $aaa == $_ } qw/1 5 13 17 25/;

#
use List::MoreUtils qw/any/;
any { $aaa == $_ } qw/1 5 13 17 25/;

# use 5.10
$aaa ~~ [qw/1 5 13 17 25/];

122:nobodyさん
08/03/14 11:53:06
ほとんどの場合、ブロックより式の方が早いので
my %tmp = map +( $_ => 1 ), ( 1, 5, 13, 17, 25, 34 );
grep $aaa == $_ ,( 1, 5, 13, 17, 25, 34 );



123:nobodyさん
08/03/14 14:50:45
dankogaiがエントリ書いてた
URLリンク(blog.livedoor.jp)

124:nobodyさん
08/03/14 15:48:58
>>111 >>113-122
URLリンク(www.kt.rim.or.jp)

125:nobodyさん
08/03/14 22:34:42 exCIvuwa
Perl初心者です。宜しくお願いします。

ディレクトリ探索し、ディレクトリの中の「.txt」をファイルを見つけたら
その行数を出力したいのですが、「open(FH, "$_") or die;」のところで
落ちます。何がいけないのでしょうか?


---ここから
use File::Find;

my $dir = 'TestDir';

find(\&print_file, $dir);

sub print_file {
  $_ = $File::Find::name;

  if (/.+\.txt/) {
    print "$_ \t";

    open(FH, "$_") or die;
    1 for <FH>;
    print $. . "行\n";
    close(FH);
  } else {
    print "$_ \n";
  }
}

126:nobodyさん
08/03/14 22:50:02
>>125
open(FH, "$_") or die "$! [$_]";
1 while <FH>;

とでもして吐かれたエラーメッセージを読む。

127:nobodyさん
08/03/14 23:25:19
>>125
File::Find の find では pwd が変りますが、
$File::Find::name で得られるのはこの場合は $dir からのパス。

use Cwd ;
して if 文の中に
print getcwd ;
して確認してみそ。

簡単な解決方法は、$dir にゼッタイパスを突っ込め。
それから perldoc File::Find くらいしろ。

128:nobodyさん
08/03/16 19:27:01 483Ek7KZ
Commonで漢字を含むデータをPOSTしたいのですが、漢字部分が出力されません。
以下で生成されたcontentをチェックしても、漢字だけ消えています。
どの様にすれば良いでしょうか。
よろしくお願いいたします。
use encoding "shift-jis";
LWP::UserAgent;
use HTTP::Request::Common qw(POST);
my %form=('test'=>'漢字123');
my $request = POST('URLリンク(test.test)',[%form]);
my $con=$request->content;
print "test:$form{test}\n";
print "content:$con\n";

出力
test:漢字123
content:test=123

129:nobodyさん
08/03/16 22:26:04
>>128
# use encoding "shift-jis";
# LWP::UserAgent;

130:nobodyさん
08/03/16 23:03:42 eaCmNgRi
はじめましてこんにちは。
自作の掲示板を作ってまして、ある書き込みにレスが付いた場合は
そのレスの数をカウントして画面に表示させる、という事をやってます。
現状はこんな感じです。

print "($res)<br>\n" if ($res ne "");

レスがある場合は(9)とかの某かの数字、レスが付いてない場合は空白という所までは
上手く行ってるのですが、
この(9)の部分を赤で出力したいと思ってます。

出来れば上記の命令の中だけで完結させたいのですが、無理でしょうか?


131:nobodyさん
08/03/16 23:16:51
>>130
print qq|<span style="color:red;">($res)</span><br>\n| if $res;

Webサイト制作初心者用質問スレ Part 194
スレリンク(hp板)

△▲ WebProg 初心者の質問 Part17 ▼▽
スレリンク(php板)

132:nobodyさん
08/03/17 02:23:56 WVXzjYIy
>>129
ありがとうございました。
ただ、UserAgentは使うのでコメントアウトできません。
EUCでソースを書き、1行目だけコメントアウトで解決しました。


133:nobodyさん
08/03/17 11:04:17 +D1UxdpV
>>126
>>127
ありがとうございました。解決しました。

134:130
08/03/17 21:21:26 iYfDDUad
>>131
ありがとうございました、無事に解決いたしました。
これを応用して、文字のサイズを変える事もやってみましたが上手く行きました!

ところで考え方の確認を1つ。。。
admin.cgiで生成した画面から、subって画像をUPロード。
その画像を、album.cgiという別の画面上に表示させていて上手く動いてるのですが、
「その画像がUPされた日時をalbum.cgiの画面上に表示させる。」という事を考えています。

すごーく単純に考えて、
「subる直前に日時を取得して、それを変数に格納。その変数をalbum.cgiに渡して、その変数をprintすればOKかも。」
と考えてやってますが上手く行きません。(表示すらされない。)

もともとCOBOラーなもんで、この手のコーディングは激苦手なのですが四苦八苦しながら何とかやってます。
変数の初期化は?変数は共通変数なのかpg内変数なのか?受け渡しはどうやってやるのか?
などなど色々疑問は尽きませんが、そもそも上記の考え方でおかしくはないですか?



135:nobodyさん
08/03/17 22:03:37
>>134
>>1-3

△▲ WebProg 初心者の質問 Part17 ▼▽
スレリンク(php板)

CGI: Common Gateway Interface part 13
スレリンク(php板)

136:nobodyさん
08/03/18 10:37:05
>>134
CGIプログラム:バッチ
htmlフォーム:コマンドライン
と考えれば、おのずと答えが見えると思われ。

各バッチ処理間でデータをやり取りするには、
・ファイルまたはDBに格納する
・コマンドラインオプションを利用しうまく受け渡す方法を考える
のいずれかになる。

CGIプログラム間でうまくデータを受け渡すには
・セッション(ファイルまたはDB)を利用する
・htmlフォームデータとして生成しPOSTする(値を変えられたくなければHIDE要素にする)
のいずれかになる。

137:nobodyさん
08/03/18 11:07:18
小難しく考えるなよ
stat使えばいいだろ

138:nobodyさん
08/03/18 17:51:36 yz+TlyvN
お世話になっております。

----------------
sub test{
$hoge = shift;
$fuga = shift;
$hoge += $fuga;
}
----------------

のような感じのプログラムを作っていましたが
うまくいかなくてどうしてだろうかと考えた所
文字列として認識していたっぽいです。

この $fuga を 数字に明言したいのですが
どのようにやるのでしょうか?

以上 ご助力いただけますとありがたいです。


139:nobodyさん
08/03/18 18:20:21
>>138
デバッグの基本、$fugaをprintしてみる

140:nobodyさん
08/03/18 18:25:39
>>138
$hoge と $fuga に数字がきちんと入ってたら、最初に文字列として認識してようと、
+= の段階で数字として扱ってくれるだろ…。他の部分のミスじゃね?

141:nobodyさん
08/03/18 18:26:00
$hogeか$fugaに数字以外の記号(改行とか)が混じっていると予想

142:138
08/03/18 18:30:10 yz+TlyvN
RESありがとうございますっ

$hogeか$fugaに数字以外の記号が入っている場合もあり
ソノ場合は0として扱いたいのですが
数字が入っていた場合は数字として扱いたいのです、、、

num $fuga
int $fuga
などで数字と明言する方法があったような気がするのですが
私の勘違いでしょうか???

143:nobodyさん
08/03/18 18:35:55
勘違い。
っつーかデバッグして調べろよ

144:nobodyさん
08/03/18 19:26:34
内容が多いハッシュの値があって、それをデータベースに格納するのに、
そのままSQL文を書くと長いので
 my ( @n, @q, @p );
 foreach my $key ( keys %hash ) {
  push @n, $key;
  push @q, '?';
  push @p, $hash{$key};
 }
 my $sth=$dbh->prepare('INSERT INTO test('.join(',',@n).') VALUES('.join(',',@q).')');
 $sth->execute(@p);
という形でSQL文を構築してデータを格納しているのですが、
もう少しスマートな方法は無いでしょうか?

145:nobodyさん
08/03/18 19:50:13
 my $sth=$dbh->prepare('INSERT INTO test('.join(',',keys %data).') VALUES('.join(',',map{'?'}(keys %data)).')');
 $sth->execute(map{$data{$_}}(keys %data));
適当にmapで記述したら、ここまで短くなりましたが、map{'?'}(keys %data)の辺りは、
もうちょっとスマートな方法がありそう…。

146:nobodyさん
08/03/18 20:25:49
>>145
スマートな方法より可読性を選んだら?
keys %data を三回も呼ぶんだったらアレイに突っ込むだろ。
ついでに、join ',' も二回あるんだったらサブルーチンかなんかにしちまえ。<= 嘘。
sub foo { return join ',', @_ ;} ;
@arr = keys %data ;
my $sth=$dbh->prepare('INSERT INTO test('. &foo( @arr ) .') VALUES('. &foo( ('?') x @arr) ).')');
$sth->execute( @data{ @arr } );

てきとーに書いたから、' とか抜けてても勘弁。

147:nobodyさん
08/03/18 21:49:40
>>138
#!/usr/bin/perl -w
use strict;
use Scalar::Util qw(looks_like_number);
test(@ARGV);
test(map looks_like_number($_) ? $_ : 0, @ARGV);
sub test {
  my($hoge, $fuga) = @_;
  print "hoge:[$hoge] fuga:[$fuga] ";
  $hoge += $fuga;
  print "result:[$hoge]\n";
}

>>144
my $col = join ',', my @col = keys %hash;
my $phs = join ',', ('?') x @col;
my $sth = $dbh->prepare("INSERT INTO test($col) VALUES($phs)");
$sth->execute(values %hash);

148:138
08/03/19 16:21:54 uoUGbd4u
>147さん RESありがとうございます。
>143さん おっしゃるとおりでした。
すいません。デバッグしてみますと整数になっていなかった訳ではなくバグでした。
下記のようなプログラムでタブ区切りのファイル内の$filename
(フォーマットは「名前\t\t\t\t\t\t\t数\t\n」)
でハッシュデータで $hash{名前}->数
とやろうとして下記のようにプログラムを組んでみました。
----------------
open(FH,"$filename"); my @data = <FH>; close(FH);
my %hash = ();
foreach(@data){
my @splitdata= split(/\t/);
if(defined $hash{$splitdata[7]}){
print "<>$splitdata[7]no$hash{$splitdata[7]} ha mouaru<><br>";
}else{
$hash{$splitdata[7]} = 0;
print "$splitdata[7] wo sengen<br>";
}
}
my $key;
foreach $key ( keys %hash ) {
print "$key<br>";
foreach(@data){
my @splitdata= split(/\t/);
if($key eq $splitdata[7]){
print "$hash{$key} ni $splitdata[10] tumari $hash{$key} += $splitdata[10];wo tasu<br>";
$hash{$key} += $splitdata[10];
print "$hash{$key} : $hash{$splitdata[7]}<br>";
}
}
}
(続く)

149:138
08/03/19 16:23:18 uoUGbd4u
(続き)
----------------
それで出力が
print "$hash{$key} ni $splitdata[10] tumari $hash{$key} += $splitdata[10];wo tasu<br>";
$hash{$key} += $splitdata[10];
print "$hash{$key} : $hash{$splitdata[7]}<br>";
の所が
0 ni 2 tumari 0 += 2 ;wo tasu
0 : 0となっていたのですが どのようにすれば
ハッシュデータで $hash{名前}->数
とのハッシュデータを取得できますでしょうか?

以上 ご助力をいただけますとありがたいです。


150:nobodyさん
08/03/19 16:44:42
日本語で

151:nobodyさん
08/03/19 16:56:44
ひどすぎワロタwww

152:nobodyさん
08/03/19 17:13:34
$hash{名前}->数ってこれはリファレンス的な意味じゃないよね?
$hash{名前} = 数で取り出したいってこと?
$splitdata[10]てなに?空じゃないの?
$hashには$hash{$splitdata[7]} = 0; この部分でしか入れてないよね?


153:nobodyさん
08/03/19 17:20:14
> (フォーマットは「名前\t\t\t\t\t\t\t数\t\n」)

$splitdata[0] が「名前」
$splitdata[7] が「数」
に見える。

コードは
$splitdata[7] が「名前」
$splitdata[10] が「数」
っぽいことになってるし、いつのまにか $splitdata[10] に 2 が入ってるし、よくわかんない。

(exists $hash{$splitdata[0]}) かどうか調べて、なかったら用意して
$hash{$splitdata[0] += $splitdata[7] したいんじゃないのかな。

154:153
08/03/19 17:21:25
最後の行 $hash{

155:153
08/03/19 17:23:29
すみません。} を打とうとしたら shift + enter を押して鬱。
$hash{$splitdata[0]} の } が抜けてました。

156:nobodyさん
08/03/19 17:28:37
map { $hash->{$_->[0]} += $_->[7]; } map { chomp; [split(/\t/)]; } @data;

157:nobodyさん
08/03/19 23:15:18
このスレが相応しいかわかりませんが質問させてください。

perl 5.8.4
mysql 4.1.11
OS debian

上記の環境でお勉強目的で BBS を作成しています。
データ自体は utf8 で格納出来ているはずですが、 perl 取得した結果を print した
際に文字化けが発生してしまいます。何処を注意すべきでしょうか?

# やってる内容をかいつまんで記入します
use DBI;use utf8;use Encode;
binmode STDIN, ":encoding(utf8)";
binmode STDOUT, ":encoding(utf8)";
$db = DBI->connect("DBI:mysql:database:localhost:$port", "hoge", "hoge");
$db->prepare("set character set utf8");
あとはセレクトして print しているだけ

# DB の中身は dump したファイルが utf8 で出力されていたのでデータは utf8 のはずです

158:nobodyさん
08/03/19 23:41:08
>>157
OSの設定はutf-8か、日本語が表示できるシェルを使ってるか

159:nobodyさん
08/03/19 23:45:37
BBSなんだからHTML吐いてるんじゃないの?
それでメタタグの文字コード宣言が違うとか

160:157
08/03/20 12:29:10
おはようございます。
apache を使ってブラウザ上に表示させてます。
メタタグには一応 utf-8 って記入してます。

ブラウザ側の文字コードも utf-8 になってました


161:nobodyさん
08/03/20 12:38:21
BOM付いてる希ガス

162:nobodyさん
08/03/20 13:03:57
for ($i=0; $i<6; $i++) {

for ($j=0+$i*10; $j<10+$i*10; $j++) {

$box[$i][$j] = $j;

};
};

print "$box[0][0]\n";
print "$box[0][1]\n";
print "$box[0][2]\n";
print "$box[0][3]\n";
print "$box[0][4]\n";
print "$box[0][5]\n";
print "$box[0][6]\n";
print "$box[0][7]\n";
print "$box[0][8]\n";
print "$box[0][9]\n";
print "$box[1][0]\n";
print "$box[1][1]\n";
print "$box[1][2]\n";
print "$box[1][3]\n";
print "$box[1][4]\n";
print "$box[1][5]\n";
print "$box[1][6]\n";
print "$box[1][7]\n";
print "$box[1][8]\n";
print "$box[1][9]\n";

上記のプログラムを実行すると、$box[1][x]が表示されないのはなぜ?

163:nobodyさん
08/03/20 13:33:56
print "$box[1][0+$i*10]\n";だから。

164:nobodyさん
08/03/20 13:41:13
$box[$i][$j] = $j;

の行の次に

print "[$i][$j]\n";

入れて表示してみ

165:nobodyさん
08/03/20 13:42:25
$box[$i][$j] = $i * 10 + $j;
期待する動作はこれかな?

166:nobodyさん
08/03/20 13:43:46
>>163
俺には理解不能だ
もうちと、噛み砕いておしえてくれ

167:162
08/03/20 13:44:57
みなさん、レスありがと。
今、飯食ってるから
終わったら試してみる。

168:nobodyさん
08/03/20 13:54:36
>>164
意図した動きになってる。
iもjもちゃんと入れ子になって
ループしている

169:nobodyさん
08/03/20 13:56:38
>>164
あ!ごめんなさい
ちと、おかしい

170:nobodyさん
08/03/20 14:02:32
>>165
そうでした。

171:162
08/03/20 14:03:22
皆様、ありがとうございます。
解決できました。

PG久しぶりなんで、
頭が退化してたようです。

172:nobodyさん
08/03/20 14:11:42
10 x 10 の箱に連番を入れたかっただけだけど、配列のインクリメントでちとボケてただけですね
まぁ俺もたまに似たようなミスするのであまりコケにできないwww

173:nobodyさん
08/03/20 15:57:38
またお願いします。

見た目の桁数を8桁に揃えたいんです。
先頭は空白にしたいのですが、下記でうまくいきません。

$len = 8 - length($num);
$head = " " x $len;
$txt = $head.$num;

2行目を
$head = "a" x $len;
とすれば、先頭に
"a"は入って、桁が揃うんです。

それとも連続空白を表す記号みたいな物は
あるのでしょうか?

174:nobodyさん
08/03/20 16:03:28
webブラウザが半角スペースをつぶしちゃうからとかじゃなくて?

175:nobodyさん
08/03/20 16:12:49
>>174
げ!、ソースを見たらちゃんと空白が入ってました。
ブラウザで表示すると空白がなくなっちゃう。。。
これはなんでですか?

176:nobodyさん
08/03/20 16:43:28
ブラウザの仕様

177:nobodyさん
08/03/20 17:00:56
ブラウザで桁をそろえたいなら、表示する部分のフォントを
font-family: monospace;
にしたうえで空白を   にすればいいです。

178:nobodyさん
08/03/20 20:32:02 cqY9pHpE
<pre></pre>

179:162
08/03/20 22:32:36
>>178
それは、クライアントの読み込みが遅くなるので
あきらめました。
 にしました。

180:162
08/03/20 22:33:29
& n b s p ;

に、しました。

181:nobodyさん
08/03/20 23:06:14
「&amp;nbsp;にしました」と書けばok

182:nobodyさん
08/03/20 23:17:39
>>181
むぅ、また、難しいことを言うな。
明日、調べます。

183:nobodyさん
08/03/20 23:33:13
>>182
いやいや、難しい話でなく。>>181が言ってるのは
「&amp;nbsp;にしました」と入力して投稿すれば
「&nbsp;にしました」と表示されるからスペース不要ってだけの話だと思うよ。

# でも確か専ブラによって表示が違ったはず。<エンティティ方面

184:nobodyさん
08/03/21 10:02:10
nbsp;でも詰まるよ
HTMLでalign=rightのほうがいいんじゃない?

185:nobodyさん
08/03/21 10:37:17
それはプロポーショナルたからな
桁そろえるのにHTMLのブロック要素を使わなかったり
固定幅フォントを使わないのはバカだゆん

186:157
08/03/21 11:32:07
>>157 です
自己解決決しました。

SQL を実行する前に SET NAMES utf8 を実行する必要があったみたいです。
一旦 SET NAMES utf8 を実行した後で select/insert/etc... を実行しないと
化けてしまうようです。
ナゼ化けるのかは理解できていませんが・・・。
# たぶん utf-8 以外で MySQL から出力しようとして化けてしまうとは思いますが理解できていません。


187:nobodyさん
08/03/21 13:27:45
ふと>>144の解答で疑問に思ったのですが…

ハッシュ値の並び方が呼び出しのタイミング等で
一致しないのは知ってますが、keys %hash と values %hash の
並び方って必ず組み合わせが一致するのでしょうか?

188:nobodyさん
08/03/21 13:31:00
keys使ってからをvaluesを使うまでにハッシュの内容を変えなかった場合一致するよ

189:nobodyさん
08/03/21 18:55:25
どなたか、10進数を26進数(使える文字はAからZ)に変換するサブルーチンを教えてください

190:nobodyさん
08/03/21 21:10:27
>>189

my $Number10 = 1234; # 10進数

# 2進数
#my @digits = ('0','1');
# 16進数
#my @digits = ('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
# 8進数
#my @digits = ('0','1','2','3','4','5','6','7','8');
# 26進数
my @digits = ('A'..'Z');

print &to_base($Number10,\@digits);

sub to_base {
my $num = shift;
my $digits = shift;
my $dignum = @{$digits};
my $result = '';
while ($num > 0) {
substr($result,0,0) = $$digits[ $num % $dignum ];
$num = int ($num / $dignum);
}
return length $result ? $result : $$digits[0];
}

191:nobodyさん
08/03/21 21:33:13
>>189
sub conv($){
my $alpha = 'A' ;
$alpha ++ for 1 .. $_[0] ;
return $alpha ;
}
printf "%d\t%s\n", $_, conv $_ for 0 .. 200 ;

192:nobodyさん
08/03/21 21:53:29
191は取り消し

193:nobodyさん
08/03/21 23:12:27
my $alpha = q{A} ;
my %table2 = map { $_, $_ } 0..1 ;
my %table8 = map { $_, $_ } 0..7 ;
my %table16 = ( ( map {$_, $_ } 0..9 ), map{ $_, $alpha ++ } 10..15 );
$alpha = q{A} ;
my %table26 = map{ $_, $alpha ++ } 0 .. 25 ;

sub trans($$){
  my %table = %{ shift @_ } ;
  my $num = shift ;
  my $int = keys %table ;
  my $res = q{} ;
  until( $num / $int <1){
  $res = $table{ $num % $int } . $res ;
  $num = int ( $num / $int) ;
  }
  return $table{$num}. $res ;
}
for ( 0 .. 1000 ){
  print $_ . qq{\t}
  . ( trans \%table26, $_ ) . qq{\t}
  . ( trans \%table2, $_ ) . qq{\t}
  . ( sprintf "%b", $_ ) . qq{\t}
  . ( trans \%table8, $_ ) . qq{\t}
  . ( sprintf "%o", $_ ) . qq{\t}
  . ( trans \%table16, $_ ) . qq{\t}
  . ( sprintf "%x", $_ ) . qq{\n}
  ;
}

194:nobodyさん
08/03/22 07:21:59
>>190-193

ありがとうございます。
さっぱり分かりませんが、
使ってみます。


195:nobodyさん
08/03/22 07:40:27
>>190
教えて頂いて申し訳ないですが、
Zの次がBAになってしまいます。
Zの次はAAにしたいのです。

196:nobodyさん
08/03/22 08:02:49
>>195
それだったら191使えば?

197:nobodyさん
08/03/22 08:39:40
>>196

>>191は取り消しって書いてあるから、
試してなかったんだけど、
試したら、うまくいってると思う。
なんで、取り消したんだろう???

198:nobodyさん
08/03/22 08:46:28
>>197
Excel式の26進数もどきだから。

199:nobodyさん
08/03/22 08:53:15
>>198
よく分からんが、ありがと。
しかし、>>191の処理速度は遅いね。

200:nobodyさん
08/03/22 09:14:56
>>193
は、なんかエラーが出て動かないorz

201:nobodyさん
08/03/22 09:21:39
>>190をなんとか改造できないだろうか。
ちと、考えてみる。
でも、自分には無理な気がする。

202:nobodyさん
08/03/22 09:22:10
>>191は、26進数じゃない。使うな。
10進数676は、26進数では、
676/26 = 26 余り0
26/26 = 1 余り0
で、1 0 0(BAAが正しい)が、
>>191だとZAになる。

>>200
インデントの為の全角スペースを除け。



203:nobodyさん
08/03/22 09:38:25
>>202

ありがと。
>>191は、遅い理由も含めて、使用しないことにする。
>>191さん、申し訳ない。

204:nobodyさん
08/03/22 09:44:17
>>193

zの次がbaになるorz

205:nobodyさん
08/03/22 09:45:28
>>203
202=191=193=俺なので気にするな。

206:nobodyさん
08/03/22 10:17:00
Math::BaseCalcモジュールでも使えば良いんでないか?

207:nobodyさん
08/03/22 10:39:29
>>206
まず、インストールのいかたが分からないので、
そこから、調べてみる

208:nobodyさん
08/03/22 10:39:45
インストールのしかた

209:nobodyさん
08/03/22 10:54:33
ppm install Math-BaseCalc

210:nobodyさん
08/03/22 10:57:42
インストールできました。

$calc = new Math::BaseCalc(digits => ['a'..'z']);
$ans = $calc->to_base($number);

これもzの次にbaが出るorz


211:nobodyさん
08/03/22 11:22:42
当り前だろ、A=0 B=0扱いなんだから
おまいがやりたい事は26進とは言わない

212:nobodyさん
08/03/22 11:23:35
B=1だ orz

213:nobodyさん
08/03/22 11:32:56
うぅーん、そうなると
私が意図したものは
どう書けばいいのだろうか???

214:nobodyさん
08/03/22 12:54:31
出来た!実に単純だった。

my @digits = ('A'..'Z');

print &to_base($Number10,\@digits);

sub to_base {
my $num = shift;
my $digits = shift;
my $dignum = @{$digits};
my $result = '';
while ($num > 0) {
substr($result,0,0) = $$digits[ $num % $dignum ];
$num = int ($num / $dignum) - 1;
}
return length $result ? $result : $$digits[0];
}

215:nobodyさん
08/03/22 13:06:15
間違えた、こうだ。

my @digits = ('A'..'Z');

print &to_base($Number10,\@digits);

sub to_base {
my $num = shift;
my $digits = shift;
my $dignum = @{$digits};
my $result = '';
while ($num >= 0) {
substr($result,0,0) = $$digits[ $num % $dignum ];
$num = int ($num / $dignum) - 1;
}
return length $result ? $result : $$digits[0];
}

216:nobodyさん
08/03/22 14:55:10
ブルートフォースアタックに使えそうなコードだなw


217:138
08/03/24 22:18:54 wHKnZ0l2
お世話になっております。
スイマセン。色々試しましたがヤハリ分からないのでコチラに書き込みをさせていただきます。
「名前\t数\t」というデータ(@arrangeData)から
$hash{名前}=合計数とのhashデータを作成したいのです。
# データを宣言
foreach(@arrangeData){
my @splitdata = split(/\t/);
if(defined $hash{$splitdata[0]}){
}else{
$hash{$splitdata[0]} = 0;
}
}
my $key;
print "取得した数を数える。<br>";
# 取得した数を合計する。
foreach(@arrangeData){
my @splitdata= split(/\t/);
foreach $key ( keys %hash ) {
if($key eq $splitdata[0]){
print "$hash{ $key } ni $splitdata[1] tumari $hash{$key} += $splitdata[1];wo tasu<br>";
$hash{$key} += $splitdata[1];
print "$key : $hash{$key}<br>";
}
}
}
とのプログラムでは何故か
$hash{$key} += $splitdata[1];
print "$key : $hash{$key}<br>";
が0で数値が入りません。
どうしてでしょうか?


218:nobodyさん
08/03/24 22:49:38
レスあっただろ

219:nobodyさん
08/03/24 22:52:29
>>138
#!/usr/bin/perl -w
use strict;

# use Scalar::Util qw(looks_like_number);
sub looks_like_number { $_[0] =~ /([0-9]+)/ ? $1 : 0 }

my @arrangeData = (
  "name1\t1\t", "name2\t2\t", "name3\t\t", "name4\t4\t",
  "name1\t10\t", "name2\t20\t", "name3\t\t", "name4\t40\t",
);

my %hash;
for (@arrangeData) {
  my($name, $num) = split /\t/;
  $hash{$name} += looks_like_number($num) ? $num : 0;
}

print "key:[$_] value:[$hash{$_}]\n" for sort keys %hash;

220:nobodyさん
08/03/24 23:29:25
>>219
その @arrangeData を >>217 のコードに食わせても
 name1 : 11
 name2 : 22
 name3 : 0
 name4 : 44
になるんよね。"name3\tぱ\t" にしたりしても。

データのフォーマットが本人の説明と違うように思う。
という指摘が前回もあったような。

221:nobodyさん
08/03/26 00:57:12
質問です。ある文字列の集合を集計して出現頻度の高い順に取り出すため、
対象の集合をそのままハッシュのキーにして値を++したんですが、
ハッシュはソートできませんよね。配列を使うしかないでしょうか。


222:nobodyさん
08/03/26 01:00:59
sort { $hash{$b} <=> $hash{$a} } keys %hash;

223:nobodyさん
08/03/26 01:01:47
>>221
質問が漠然とし過ぎてるんで、この辺一通り読んでから来て。
URLリンク(www.kt.rim.or.jp)
URLリンク(perldoc.jp)

224:nobodyさん
08/03/26 01:05:19
>>222さんのでわかりました!
>>223さんのも読んでおきます!
どうもでした!!

225:nobodyさん
08/03/26 09:29:51 LilkylgS
CGI.pmを使ってアップロードされたファイルの途中まで読んで
そこで終わりにしたい場合はどうしたらいいでしょうか?

どうも全部読むか、失敗かの選択しかないみたいなんですが。。

226:nobodyさん
08/03/26 14:32:04
そんな需要は稀なんだろ
一旦保存してから読み直せば?

227:nobodyさん
08/03/26 14:47:06
>>225
httpd が受け取る/受け取らないという話でなく、
プログラム中の処理の流れでという意味なら
URLリンク(perldoc.jp)
の「ファイル・アップロード・フィールドの作成」の項

228:nobodyさん
08/03/26 22:35:17 OE9DSfjk
しつもん

定数なんかを別ファイルに置いてそこから取得したい。

---const.pl---
my $x="あいうえお";
1;

---main.cgi---(ヘッダとかは略)
use strict;
require "./const.pl";
print $x;


とするとGlobal symbol "$x" requires explicit package nameという
$xが定義されていませんエラーになります。
use strict外すと$xは空白です。

URLリンク(q.hatena.ne.jp)
とかを見るとどう見てもこれで正しいようにしか思えないのですが何故?


他にこんなところで迷ってる人居ないから環境の問題なんだろうか?
CoLinux,perl5.8.6

229:nobodyさん
08/03/26 22:45:43
同じ変数でも名前空間が異なれば別物

230:nobodyさん
08/03/26 22:57:38
>>228
<q cite="URLリンク(perldoc.jp)">
my はリストアップされた変数を、囲っているブロック、ファイル、eval の中で
ローカルな (レキシカルな) ものにします。
</q>

URLリンク(www.kt.rim.or.jp)

231:nobodyさん
08/03/26 23:12:52
my と use strict を取っ払ってみると print されたり。
変数の局所化とか strict とは無縁になるけど。

はてなでやり取りしてる人らはそうしてるんじゃないかな。

232:nobodyさん
08/03/27 01:07:20
local

233:nobodyさん
08/03/27 01:23:34 R/qLdwoI
>>228
hoge.pm

package hoge;
sub kaze_hiita{
"hayaku neru"
}
our $x = 1;
1;

foo.pl
use hoge;
print hoge::kaze_hiita; -> 早く寝る
print $hoge::x; -> 1
$hoge::x = 10;
print $hoge::x; -> 10

関数のときのみ::じゃなくて->が使えるんだぜ。
あと関数の尻尾には();って書いてあると俺はうれしい。
ハッシュで渡すとさらにうれしい。

あと、そゆのがコンフィグを一杯つかうなら
普通に Auto-Config使うべし。
URLリンク(memo.majide.com)

当然だがファイル間は文字コードは統一しとけよ
それでしんだひとをみたことがあります。>俺自身

234:nobodyさん
08/03/27 10:30:16
>>233
説明で「 -> 1」とかを使ったら混乱するだろjk

235:nobodyさん
08/03/27 12:35:04
正直すまんかった
234が責任を持って書き換えます。おながい。

236:nobodyさん
08/03/27 12:36:10
>>228
こうするのさ。

---const.pl---
$x="あいうえお";
1;

---main.cgi---
use strict;
our $x;
require "./const.pl";
print $x;

237:nobodyさん
08/03/27 16:59:46
our wwwwwwwwwwwwwwwwwwwwwwwwww

238:nobodyさん
08/03/27 19:04:51
○|_|| ̄ wwwwwwwwwwwwwww

239:nobodyさん
08/03/27 22:17:48
oL/

240:228
08/03/27 23:49:16 OO8NUyXN
>>229-236
さっぱりわからんがサンクス。調べてみる
iniファイルやPHPみたいに簡単に取得できる方法はないのかのう・・・

241:nobodyさん
08/03/27 23:56:27
>iniファイルやPHPみたいに簡単に取得できる方法
だからモジュール紹介されてるやんけwww

242:nobodyさん
08/03/28 00:17:56
ワロタ

243:233
08/03/28 00:26:56
>>240
感想でいいからくれ
何がさっぱりわからんと思ったか書いてくれれば分かりやすくもういっかい書くよ。

1. リンクを開いたと思うんだが、何が意味不明だと思った(全部ってのはなしで)
2. 何を作っててプログラム暦何年か教えてくれ。

スレ汚しならすまん。ちょっと個人的に技法よりも心理障壁に興味がある。

244:nobodyさん
08/03/28 10:02:51
新人教育かw

245:nobodyさん
08/03/28 15:01:30 jpsDmJfA
ログに保存されている日付を以下のように整形するにはどうしたらいいんでしょう?

2008/03/28(金) 09:30:08

08/3/28 9:30


246:nobodyさん
08/03/28 15:33:52
>>245
sub reduce_date {
  my @date = split /\D+/, $_[0];
  $date[0] -= 2000;
  sprintf '%02d/%d/%d %d:%d', @date[0..4];
}

print reduce_date('2008/03/28(金) 09:30:08');

247:nobodyさん
08/03/28 15:36:13
use strict;

my $orgdate = '2008/03/28(金) 09:30:08';
my @splitdata = $orgdate =~ /(\d{2})+/g;

printf("%02d/%02d/%02d %02d:%02d:%02d", @splitdata);


248:nobodyさん
08/03/28 15:46:09
s{\d\d(\d\d/\d+/\d+)[^ ]+( \d+:\d+):\d+}{$1$2};

249:nobodyさん
08/03/28 15:48:45
指定がないけど %02d/%d/%d %d:%02d を期待されてそうな気がする

250:nobodyさん
08/03/28 15:57:20
なるほど。

s{\d\d(\d\d)/0?(\d+)/0?(\d+)[^ ]+ 0?(\d+):(\d+):\d+}{$1/$2/$3 $4:$5};

251:nobodyさん
08/03/28 16:45:45
my @splitdata = $orgdate =~ /(\d{1,2})+/g;
my $datetime = sprintf("%02d/%d/%d %d:%d:%d", @splitdata);


252:nobodyさん
08/03/28 16:49:23
間違えた

my @splitdata = $orgdate =~ /(\d{1,2})+/g;
my $datetime = sprintf("%02d/%d/%d %d:%d", @splitdata);
print $datetime;

253:nobodyさん
08/03/28 16:59:35
2008/03/28(金) 09:30:08から08/3/28(Fri) 9:30にするにはどうする?



254:nobodyさん
08/03/28 17:35:24
>>247-252
もはや、知らない奴が見たら暗号でしかないなw



255:nobodyさん
08/03/28 19:09:17
javascriptのプログラムをPerlに移植しようとしていて、複合代入演算子の挙動が違うのでとまどっています。
例えばjavascriptで
var c=1;alert(c=c+(c*=10)+(c*=100));
は1011
Perlで
my $c=1;print($c=$c+($c*=10)+($c*=100));
は1020
になります。
そこで、この問題について載っているサイトがあれば教えてください。


256:nobodyさん
08/03/28 20:04:35
式の途中で値を変えるやり方がまずいとは思うけどね

257:nobodyさん
08/03/28 23:58:05
加算の評価順は定義されてないという事を知らずに
> var c=1;alert(c=c+(c*=10)+(c*=100));
こう書くのはクズグラマー。

258:nobodyさん
08/03/29 03:54:49
>>255
URLリンク(www.st.rim.or.jp)

259:nobodyさん
08/03/29 04:33:29
>>253
年を二桁にしたら100年後に困るぞ!

260:nobodyさん
08/03/29 08:45:59
>>253
s/^\d\d//;
s/^(\d\d\/)0/$1/;
s/金/Fri/;
s/:\d\d$//;

261:nobodyさん
08/03/29 14:59:25
>>259
19xxから20xxに変わったが、2桁で困ってないので100年後も同様に困らない。

262:nobodyさん
08/03/29 17:09:47
>>259
百年後なんて俺等死んでるから気にする必要ないw

263:nobodyさん
08/03/29 17:56:41
そういう屑のせいで困る人たちもいるわけだ

264:nobodyさん
08/03/29 19:27:22
>>262
医学の進歩は目覚しいから、お前のような底辺奴隷はむしろ死ねないかもしれない。

265:259
08/03/30 22:02:27
ジョークを真に受ける馬鹿がこんなに多いとは・・・

266:nobodyさん
08/03/30 23:27:37
>>265
更にジョークを真に受けた馬鹿の登場ですか?

267:nobodyさん
08/03/30 23:58:51
>>266
言っとくけど俺をあまりナメないほうがいいよ
vipでコテハンやってるしこのスレ潰すくらいの影響力は持ってるから
くだらないことで刺激して後悔しないようにね

268:nobodyさん
08/03/31 01:08:05
>>267
そのコピペには、もう飽きた\(^o^)/

269:259
08/03/31 07:25:32
>>266
後出しジャソケソカコワルイ

270:nobodyさん
08/03/31 10:11:33
どっちが後出しだよw

271:nobodyさん
08/03/31 12:02:54
中出しの方が気持ちいいぞ。

272:nobodyさん
08/04/01 21:14:09
HTML::Templateっていうモジュールを使おうとしたら
鯖管理してる人が入れたくないです。っていうので
HTML::Templateの代わりになるような標準モジュールって何かありますかね?
個人的にはHTML::Templateの<TMPL_IF>みたいなのが使えれば大満足なんだけども

自分で作っちゃったほうが早いかな?

273:nobodyさん
08/04/02 01:00:40
普通にディレクトリでも作って放り込んで、useで使うのは駄目なん?

274:nobodyさん
08/04/02 10:50:31
HTML::TemplateはPurePerlだからディレクトリ作ってほうりこめばおk

275:nobodyさん
08/04/02 14:04:47
昨日からperlに興味持っています
perlには大きくわけて2つあると聞きました

1:恐らくActivePerlの為に書かれたであろうソースをcygwinで動かしたい
(書いた方はどちらのperlと言うこともなく消えちゃいました。他の方が「それperlだよ」と教えてくれました)

2:1行目に書かれていた 「 #!/perl/bin/perl 」 を 「 #!/cygwin/bin/perl 」 に書き換えた
  2行目にあった 「 # /usr/bin/perl はないはず 」 を削除した
 読み込ませるファイルをcgi-binフォルダーに置いた

3: Internet Explorer ではこのページは表示できません

cygwinとActiveperlは書き換える箇所があるのですか?
基本は同じと聞いたのですが細かく言うと変更すべきところもあるんでしょうか?

どなたかよろしくお願い致します


276:nobodyさん
08/04/02 14:28:33
>>275
>perlには大きくわけて2つある
ファイルを置けば動くPurePerlと、installが必要なバイナリの2種類かな?

>恐らくActivePerlの為に書かれたであろうソースをcygwinで
プログラムファイル自体にその差は無い
よって
>cygwinとActiveperlは書き換える箇所があるのですか?
書き換える箇所は無い
ただしActivePerlでは動かないものもあるかもしれない

cygwinはUNIXエミュレータ(みたいなもの)
ActivePerlはWindows版のPerlインタプリタ
同列に並べるのはおかしい

> Internet Explorer ではこのページは表示できません
このエラーが出るってことはおそらくパーミッション

277:nobodyさん
08/04/02 15:21:24
>>275
書いた人です。「それは Perl だ」と言ったのも自分。

あれはCGIではなくてCLIスクリプト(=コンソールアプリ)なので、
Perl実行環境さえあればWebサーバだの何だのは要りません。
# 「標準出力に何も吐かない」ブツはCGIではない。

あなたのしたいことは、Web制作板ともWebProg板とも関係のないことです。

ブツ自体はActivePerl だろうが cygwin 上の Perl だろうが動きます。
プロンプトから perl hoge.pl するだけ。以上。

ただ、glob() に2万ファイル食わせるのはやめといたほうがいいと思うな。

278:nobodyさん
08/04/02 15:33:03
直接やれwww

279:nobodyさん
08/04/02 15:40:45
元ネタはここか
スレリンク(hp板:100番)

ほんとか?

280:nobodyさん
08/04/02 15:52:10
>>275です
>>276
詳しくありがとうございます
勉強になります

>>277
手取り足取りスレでお世話になりました
>>277さんのお陰で目標までの道が見えたような気がします
本当に感謝しております
HTMLとTXTそれぞれ3枚づつ置いてテストしてみようとしたのですが
上記の通り読み込めませんでした
hello.plで試したところ読み込みはできているようなので
書き込み用のファイルを用意しておくべきなのかわからないです
サーバなしで動くのでしたか私はサーバを通して操作するものかと勘違いしてましたすいません
perlでできると教えてくれて本当にありがとうございます

板違いになるのかーショボーン
どこに行けばいいのか・・・
みなさんありがとうございました

281:277
08/04/02 16:00:03
スレ汚しまくりで、本当にごめんなさい。 > all
とりあえず、物凄い勢いで板違い。>>275さんには、教えてgoo辺りがお勧め。
当分消えよう。

>>278
間接でも偏頭痛がしたので勘弁してください。
放置するとめんどくさい流れになりそうだったので出てきました。すみません。

>>279
そこで正解です…。

282:nobodyさん
08/04/02 17:09:09
winならActivePerlでいいやん。

283:nobodyさん
08/04/02 21:09:16
おまえらstrawberryperl知らんのか

284:nobodyさん
08/04/03 00:13:59
知らないかダメダメだから話題に出ない
それぐらい察してくれるとありがたい

285:nobodyさん
08/04/03 03:38:43 x8vlzbgB
colinuxでいいじゃん

286:nobodyさん
08/04/03 10:28:20
いろいろ出すと混乱しちゃうぉw

287:nobodyさん
08/04/03 13:05:14
colinuxとクリネックスて似てるね

288:nobodyさん
08/04/03 14:21:42
初心者ならActivePerl、中級者以降ならStrawberry Perlだな。

289:nobodyさん
08/04/03 16:36:19
超上級者ですが ActivePerl 使ってます

290:nobodyさん
08/04/03 18:06:58
perl開発者ですがperl使ってません

291:nobodyさん
08/04/03 19:03:25
自分はStrawberryPerlが有り難すぎるのだけど、前はActivePerl使ってた。
StrawberryPerlと比べてActivePerlはどういうメリットがあるのかな。
PPMが便利なこともあるけど、CPANが使いやすいStrawberryPerlの方が自分は便利。
ActivePerlの方を推す方の意見を聞きたいです。

292:nobodyさん
08/04/03 19:56:47
ActivePerl に一致する日本語のページ 約 560,000 件中 1 - 50 件目 (0.04 秒)
Strawberry Perl に一致する日本語のページ 約 13,000 件中 1 - 50 件目 (0.37 秒)

ActivePerl入れっぱなしだから特に探さなかった

293:nobodyさん
08/04/03 20:05:15
じゃ、今のActivePerl使ってみな。

294:nobodyさん
08/04/03 20:05:58
>>293>>291

295:nobodyさん
08/04/03 22:08:39
おーこんなんあったのか
存在すらしらなかった

296:nobodyさん
08/04/03 22:33:14
ActivePerlにはppmがあるし、最近は日本人がやってるppmリポジトリ(tcool)があるから
何かあっても日本語で済ませられるからなぁ。あそこだとCatalyst+DBIC+TT2もJiftyもPlaggerもそろってるし。

297:nobodyさん
08/04/04 04:20:23
winでweb開発するならvmwareとかcolinuxとかいれるだろ情交

298:nobodyさん
08/04/04 10:07:57
>>297
たしかにそれはもっともなんだが、クライアントの要望でWinで動かなきゃだめ、ってのでも
対応できて助かる。ほんと。

299:nobodyさん
08/04/04 14:10:52
vmwareとかcolinuxって何に必要なんだ?
特殊なことをするのでなければ、cronとSpeedyCGIぐらいしか思いつかない。

300:nobodyさん
08/04/04 16:49:23
サーバ機のOSにwin使うの?それならば何も言わんけど

301:nobodyさん
08/04/04 17:29:46
話がどんどんズレてるぞおまいら。

302:nobodyさん
08/04/05 00:28:43
PerlからDBI::ODBCでMS Accessに接続しようと思います。
SQLに日本語が混じっているときSJISだとうまくいくのですが
UTF8だと文字化けしてエラーになってしまいます。
Unicodeでも文字化けしない方法はないでしょうか?

303:nobodyさん
08/04/05 03:41:48
DB 側に文字コードを指定できたはず

304:nobodyさん
08/04/07 18:30:35 /Zogy0zf
もの凄く抽象的な質問ですがご容赦ください。


現在、mod_perl下で動いているプログラムがあります。
必要があり、これを修正してみたところ、何が悪かったのかそのままサーバダウン。

サーバダウン直前の挙動、エラーメッセージ、mod_perlの特性などから検証した結果、
プログラムの必要メモリ量が極端に増え、それに伴いメモリ不足で落ちたのではないかという結論に至りました。


さて、ここからが質問なんですが、
mod_perlのプログラムを書くにあたり、メモリ使用量などに関して、
コーディングのコツ、書くときの注意、メモリ使用量を見る方法などがありましたら教えてください。

参考になるサイトや書籍などでも構いません。
英語でも頑張って読んでみようとは思いますが、理解できるかどうかは甚だ怪しいです。


305:nobodyさん
08/04/07 19:21:31
プロを雇いなさい。

306:nobodyさん
08/04/07 19:50:42
修正前は全く問題なかったのなら修正部分見るだけで簡単に解かるから楽ジャン

307:nobodyさん
08/04/07 21:42:21 TcHrwP/2
元に戻す

308:nobodyさん
08/04/07 23:10:26
svn revert -R

309:nobodyさん
08/04/07 23:27:22
ちゃんと初期化、解放したったらえーんとちゃうのん?

310:nobodyさん
08/04/08 03:52:16
一定回数の呼び出しでリブートするしかなかったっけか。

311:nobodyさん
08/04/08 06:53:24 O35wAre8
あるオブジェクトが属するクラス名(パッケージ名)はどこに入っているのでしょうか。
特定のオブジェクトを外部から判定したいとしたときなど、
文字列(ClassName=HASHxxxなど)を見て判断できるとも思いますが、
文字列変換が値の出力にオーバーライドされていたりするとダメですし・・

例えば、あるサブルーチンの引数をClassNameオブジェクトに限る、といったときに判定したいのです。
よろしくお願いします。

312:311
08/04/08 07:27:45
すみません見つかりました。判定に関しては
if ($obj->isa('ClassName')) {・・・}
この辺から探っていけそうでしたので、311の質問は一旦取り下げますm(_ _)m

313:nobodyさん
08/04/08 09:05:59
>309
してます。
今回の場合に限りますが、解放されてないリソースが溜まり続けると言うより、1回の必要量が大きすぎた模様。

>305
いや、そんなこと言われても。

>306-309
質問文は後半だ。


314:nobodyさん
08/04/08 09:13:08
>>313
>>1
【激速】mod_perl SpeedyCGI FastCGI【激速】
スレリンク(php板)

315:nobodyさん
08/04/08 12:45:16
>>304
mod_perlかcgiかに関係なく
strictを付ける
サイズの予想できないデータは一括取り込みしない
ってのは当たり前だと思うんだが・・・

mod_perlで問題になりそうなのは
循環参照と意図しないクロージャくらいかな?



316:nobodyさん
08/04/08 18:50:34
>314
ありがとうございます。
宗教戦争が勃発してる魔境にしか見えないのが辛いところですが。

>315
ちょっとだけ内部の挙動を変えたらメモリ容量が4倍に膨れ上がってしまいまして…。



こういうのを、topコマンドでリアルタイムに監視する以外の方法があれば教えてください。

317:nobodyさん
08/04/08 19:19:20
4倍で落ちるってどんだけだよ

318:nobodyさん
08/04/08 19:20:40
Devel::Sizeでどの変数がメモリ食ってるか調べてみれば?

319:nobodyさん
08/04/08 19:26:09
URLリンク(search.cpan.org)
URLリンク(perl.apache.org)

参考リンク

320:nobodyさん
08/04/08 20:31:28
>317
単純計算ですが、総計にしてメモリ1GBほど増加です。

>318
ありがとうございます

>319
ちょうど英語にひぃひぃ言いながら読んでたところです。

321:nobodyさん
08/04/08 20:55:45
メモリ量が4倍になったならMaxClientsを1/4にすりゃいいじゃん。


とりあえずこのへんも参考にするといい
URLリンク(iandeth.dyndns.org)
URLリンク(www.typemiss.net)

322:nobodyさん
08/04/08 22:02:45
>>313
数100MBのデータを気軽に読み込んじゃうのは素人なんだってば。
だからプロを雇えと。

323:nobodyさん
08/04/08 23:49:56 ng1N9SG/
与えられた文字列がutf8として正しいかどうか判断するのに
utf8::decode($str);
if ($str =~ /\P{IsASCII}/ and not (utf8::is_utf8($str))) {
### エラー
}
ってやってみましたが、あってますか?

324:nobodyさん
08/04/11 10:40:16
モジュールがPurePerlかどうかはどうやって判断すれば良いでしょうか?

325:nobodyさん
08/04/11 11:53:06
それは機械的に?
それとも手動で?

326:nobodyさん
08/04/14 15:21:25
URLリンク(watalog.jugem.jp)
↑の人と同じ悩みなんですが、jugem.jpのRSSをLWP::Simple::mirrorでミラーリングしようとすると、
RSSの内容ではなく、HTMLの内容が帰ってくるのは、どうしてですか?

RSSは以下のURLなのですが、引数を渡しているURLは、LWP::Simpleでは対応できないってでしょうか?
URLリンク(watalog.jugem.jp)

327:訂正
08/04/14 15:22:02
URLリンク(watalog.jugem.jp)
↑の人と同じ悩みなんですが、jugem.jpのRSSをLWP::Simple::mirrorでミラーリングしようとすると、
RSSの内容ではなく、HTMLの内容が帰ってくるのは、どうしてですか?

RSSは以下のURLなのですが、引数を渡しているURLは、LWP::Simpleでは対応できないってことでしょうか?
URLリンク(watalog.jugem.jp)


328:nobodyさん
08/04/14 16:19:57
>>327
UAで判定してる模様。
$ua = LWP::UserAgent->new(agent=>'IEみたいなUA');
でやってみ。

329:nobodyさん
08/04/14 16:25:16
>>328
ありがとうございます。いやらしいことしますね…
LWP::Simple::mirrorを使っているので、全部書き直すか、例外処理を作るしかなさそうですねorz

330:nobodyさん
08/04/14 16:33:55 BE:212256083-DIA(100004)
LWP::Simple は $ua を Export 出来る

331:nobodyさん
08/04/14 16:52:36
>>328の一行を追加すればいけるということでしょうか。
オブジェクト指向的な話(->とか)が全くわからないので、そういうところを避けながらコーディングしてきたのですが厳しいですね。


332:327
08/04/14 19:32:33
結局、LWP::UserAgentでUA偽装して、ミラーリングさせました。
今後はSimpleではなくて、こっちを使おう…

333:nobodyさん
08/04/14 21:28:37 vhVZb6UQ
CGI::Application を使ってみようかと考えてるPerl初心者です。
Web上でいろいろサンプルコードを見ていたんですが、
使いたいモジュールがある場合は
CGI::Application::Plugin として利用するのがお決まりのように見えます。
実際、それが推奨スタイルなんでしょうか?
Log::Handler が使いたかったのですが、
単純に use Log::Handler; して使うと何か不都合があるのでしょうか?

334:nobodyさん
08/04/15 07:46:19 m7oSRbUq
再利用しやすいようにPluginにぶら下げてるだけなんじゃないの?
好きにしたらいいと思うよ

335:nobodyさん
08/04/15 11:53:04 7+9bkjp8
ありがとうございます!

336:いしはら
08/04/15 18:41:44 y4DgL3Q4
------------------------------------------------
☆簡易CTIサービス(1万5千円)
URLリンク(s1s.jp)


☆自動クリックサービス
URLリンク(s1s.jp)


☆ブログ自動更新 記事投稿 コメント書き込みアプリ
URLリンク(s1s.jp)

------------------------------------------------
 ヽ('A`)ノ
  (  )  大金星!!
  ノω|

337:nobodyさん
08/04/16 14:37:06
二項分布で確率1/AをB回の試行でちょうどC回引く確率を計算したいのですが、
これらをperlかPHPで計算する方法が分かる方いましたらアドバイス頂けないでしょうか。
式は見ても理解できないのでサンプルソースを頂けると助かります。

338:nobodyさん
08/04/16 15:16:19
式を見ても理解できないとコーディングなんてできないだろw

339:nobodyさん
08/04/16 16:03:06
「二項分布 perl」でぐぐれ

340:nobodyさん
08/04/16 17:57:49
最初の方に出て来るJUG7のソースいじりましたが、
サイコロ10000回投げて1が1666回出る確率とかだそうとする際に
数値が大きすぎるのかバグります…。
以前調べた時のソースも、数値が小さければ問題無いものの、
規模を大きくすると1.#INFというエラーが返ったり。


341:nobodyさん
08/04/16 21:19:23 WbXSl+I/
お願いします。
与えられた文字列が大小文字同一視でハッシュのキーとして存在するかどうか、
調べる方法はないでしょうか。ハッシュキーは膨大な数あるので、配列にコピーとかは
したくないです。よろしくお願いし明日。

342:nobodyさん
08/04/16 21:28:03
1 hashを作るときに小文字(あるいは大文字)に変換して作る。
2 tieで1と同じ事を行う。
好きなほうをどうぞ。

343:nobodyさん
08/04/16 21:32:57
>>341
大小文字の区別はされるけどexistsって関数がある

344:nobodyさん
08/04/16 21:39:38
なるほど、ありがとうございます。
実は、元の正しい表記を後で取り出したいんですが、
ハッシュのvalueは空いてるので、そこに元の表記を入れておいて
キーを大文字統一にしてみようと思います。
コピーするのと変わらないかもしれませんが。

345:nobodyさん
08/04/17 04:13:49 CjUpsUhE
お世話になります。
All UTF-8 でやってます。
さらに USE CGI しないURLデコードをやってみたところ、マルチバイト文字が文字化けするようになりました。
全部□になります。
?#!c:/user/local/bin/perl510/bin/perl.exe
use utf8;
use encoding "utf8";
# ↓UTF8でPOSTされた情報を想定
my $str = '%E8%8C%B6%E6%B1%B2%E5%85%BC%E9%9B%91%E7%94%A8%E4%BF%82';
# ↓URLデコード(今回$strに+はないのでそのへんは省略)
$str =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("H2", $1)/eg;
# ↓出力
print "Content-type: text/html; charset=UTF-8\n\n";
print "テスト // START // $str<br>\n";
これでHTML全体としては正しく表示されているんですが、$str部分のみが文字化けします。
ウェブで原因を調べること丸1日、これについてどこにも情報がありませんでした……

346:nobodyさん
08/04/17 07:21:16
use utf8;
use encoding "utf8";
# ↓UTF8でPOSTされた情報を想定(内部ではワイドキャラクタとして格納されてます)
my $str = '%E8%8C%B6%E6%B1%B2%E5%85%BC%E9%9B%91%E7%94%A8%E4%BF%82';
utf8::encode($str); # 一旦UTF-8フラグを落として
# ↓URLデコード(今回$strに+はないのでそのへんは省略)
$str =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("H2", $1)/eg;
utf8::decode($str); # UTF-8フラグを付け直す

347:nobodyさん
08/04/17 09:58:36
>>345,>>346
> # ↓UTF8でPOSTされた情報を想定(内部ではワイドキャラクタとして格納されてます) 
> my $str = '%E8%8C%B6%E6%B1%B2%E5%85%BC%E9%9B%91%E7%94%A8%E4%BF%82'; 
それデコードしたら、バイナリ(utf8フラグoff)のUTF-8文字列。

とりあえず、use utf8;とuse encoding "utf8"を外して、そのままprintしてみ。

ちゅうか、use utf8 とuse encoding "utf8"両方してる意味がわからん。

348:nobodyさん
08/04/17 14:34:42 FD3bsXbG
>>345です
解決しました。情報に感謝します。
>>346の内容を、Encode::~でやりました。
こういうのって結構な落とし穴ですね。フラグのことはわかっているつもりでしたが……

349:nobodyさん
08/04/17 20:17:29 2zzFnXWL
教えて君でスマンが、分かる人がいたら助けて。

CGI::Applicationパッケージを使っているんだけど、
param() 関数で、数字だけの長い「文字列」を受け取ると
数値リテラルとして、しかも丸められた値が返されちゃうんだけど、
文字リテラルとしてそのまま受け取れるよい方法ないかな?

350:349
08/04/17 22:21:21
自己レスです。
CGI.pmにまでさかのぼって調べた結果、
query()->param()は文字リテラルで返してました。
自分が書いた、表示する際の処理のバグでした。orz

351:nobodyさん
08/04/18 00:03:02 qXgVgrBZ
いつもすみません。
自分で作ったhash refの配列がデリファレンスできません。
$array[0]->{key}
$array[0]{key}
${$array[0]}->{key}
とか書いてみましたが様々なエラーが出ました。どう書いたらいいですか?

352:nobodyさん
08/04/18 00:07:12
すみません。問題を取り違えていました。デリファレンスはできてました。
ソートをしようと思い、下記のように書いたらhash refを配列扱いするなと言われます。
my @sorted = sort {$array[$b]->{score} <=> $array[$a]->{score}} @array;
よろしくお願いします。

353:nobodyさん
08/04/18 00:20:08
ものすごく勘違いしてました。こういうことでした。
my @sorted = sort {$b->{score} <=> $a->{score}} @array;


354:nobodyさん
08/04/18 10:01:49
そういうときもあるよ

355:nobodyさん
08/04/18 18:42:42 J/rLxrZJ
前に2項分布について質問した者ですが、
これだけでも教えてくれると助かります…。
1.#INF の意味はなんですか?インフィニティ?
検索しても#は検索対象にならないらしく、
*.INFの設定ファイルや関係無いものが出て来るばかりで…。

356:nobodyさん
08/04/18 19:06:45
知らんがな

357:nobodyさん
08/04/19 09:40:11
インフォメーションじゃね?
それかインフォーラム
もしくはインフェルノ

358:nobodyさん
08/04/19 12:48:02 n4AN2xdT
URLリンク(www.semblog.org) で配布されている、
RNAというアンテナソフトを使っています。
すでに動作してるのですが、summary部分のhtmlタグを除去したいと思います。

URLリンク(www-kasm.nii.ac.jp)
のようにRSSを取得してくるCGIなのですが、
summary部分にhtmlタグが残ってしまいます。

ATOMやRSS2.0などでしょうか、
Yahoo!やexcite等RSSにhtmlタグが入ってるサイトを巡回すると
htmlタグが入ってしまいます。

template/recent_template には
<div class="summary">
<$RNAItemDescription$>
</div>
となっており、そのあたりを作ってると思われる
lib/RNA/AntennaTree.pmの1029行目、

my $encoded_descript = encode($item->{channel}->{description});

の後に

my $encoded_descript =~ s/<.*?>//g;
を追加してみたところ、サマリー部分がなくなってしまいました。

開発がストップしてるCGIなので、なんとか改造して使い続けたいと思っています。
どうかご教示願います。

359:nobodyさん
08/04/20 00:00:52
いくら何でも冷たすぎじゃないかお前ら。

>>355
備長炭 自殺方法 でぐぐれ。それでダメなら二項分布 オーバーフローとか。

360:nobodyさん
08/04/20 01:46:25
>>358
現物ソース確認したわけじゃないけど
URLリンク(naoya.dyndns.org)
の下の方にある remove_html を試してみたらどうかな。

361:nobodyさん
08/04/20 02:10:18
>>358
そのモジュールについては詳しくはわからないけど、もともとのソースをいぢるんじゃなくて、
それが吐き出したものを、自前で書き換えればいいんじゃね?

362:nobodyさん
08/04/20 02:30:50
元のコード見なくても

> my $encoded_descript = encode($item->{channel}->{description});
> の後に
> my $encoded_descript =~ s/<.*?>//g;
> を追加

って書いてるんだから

my $str = "<strong>大切な</strong>文書";
my $str =~ s/(.)/$1/g; # 行頭の何かが余計
print length($str);

こういうことじゃないの。

363:nobodyさん
08/04/20 16:44:58
ヒアドキュメント内でハッシュリファレンスを使う場合はどのようにすればよいのでしょうか?

$text =<<EOL;
name = $h->{'name'}
mail = $h->{'mail'}
EOL

とやっても変数が展開されません。
仕方ないのでハッシュにデリファンスしてますが、
方法があったら教えてください。

364:nobodyさん
08/04/20 17:36:03
本当はシングルクォートで括ってね?

365:nobodyさん
08/04/20 20:52:48 tHisgd6U
オリジナルの携帯サイトアクセスランキングを作っています。

OUTをカウントするためなんすけど、アンカーから自前のCGIページを通過させてリンク先を表示させるにはどうすればいいですか?


366:nobodyさん
08/04/21 00:00:18
自前のCGIページを通過させるアンカーを出力すればよいと思います。

367:nobodyさん
08/04/21 18:56:21
>>363
my $h = {name=>'john', mail=>'john@example.net'};
my $text =<<EOL;
name = $h->{'name'}
mail = $h->{'mail'}
EOL
print $text;

こんな感じ。

368:358
08/04/23 09:11:49
>>360, >>361, >>362

ありがとうございます。
remove_html、使いたいのですが使い方がわかりません...

# URLリンク(naoya.dyndns.org)
sub remove_html {
my ($str) = @_;
my $ret;
if (defined $str) {
my $p = HTML::TokeParser->new( \$str ) or die "$!";
do {
my $plain = $p->get_text;
$ret .= $plain;
} while (my $token = $p->get_tag);
}
$ret;
}

を lib/RNA/AntennaTree.pm の最下部に追記して、
my $encoded_descript = encode($item->{channel}->{description});
の後に見よう見まねで
my $encodec_descript = &remove_html();
としてみましたが変わらずでした。

369:nobodyさん
08/04/23 12:47:07
m_unit.plというライブラリがほしいんですがググっても出てきません
どこで手に入れる事ができるでしょうか?

370:nobodyさん
08/04/23 13:05:00
>>369
ググっって出てくる奴とは違う物?

371:↑
08/04/23 13:08:34
ごめんなさい間違えました(><)

372:nobodyさん
08/04/24 18:43:40
ABCXXXDEF
という文字列から
ABCとDEFを削除してXXXのみを表示させたい場合はどうすればよいのでしょうか?

$moji = ABCXXXDEF;
$ans = $moji からABCとDEFを削除;

print "$ansです\n"

という具合でいいんでしょうか?
このABCとDEFを消す処理の部分がわかりません。

373:nobodyさん
08/04/24 18:47:46
$moji =~ tr/ABCDEF//d;
print $moji;

374:nobodyさん
08/04/24 18:48:17
>>372
$moji =~ s/ABC|DEF//g;
$ans = $moji

375:nobodyさん
08/04/24 18:50:21
>>373>>374
ありがとうございました。
助かります。

376:nobodyさん
08/04/26 13:15:07 flUVuiqJ
basenameでファイル名を取り出したいのですが、ブラウザが動いているOSの種類によって、
区切りが/であったり\であったりとまちまちです。
perlはLinux上で動いているので、デフォルトでは、/で区切られている場合しか、ファイル名を取り出せません。
\で区切られている場合でも、取り出せるようにするにはどのようにしたらよいのでしょうか?
fileparse_set_fstypeでMSWin32を指定してしまうと今度は、Unixからアクセスしてきた場合にうまくいきません。


377:nobodyさん
08/04/26 13:19:19
んなもんアクセスしてきたOSの種類で使いわけりゃいい話だろボケ
こんなもん中学生でも分かるぞカス死ね

378:nobodyさん
08/04/26 16:13:45 flUVuiqJ
もしブラウザがOSに関する情報を送ってこなかったらどうすればよいのでしょうか?

379:nobodyさん
08/04/26 16:23:13
>>378
ファイルの有無を判断して、
どっちのデリミタで切るか、
判断したら?

380:nobodyさん
08/04/26 17:01:10
アクセスしてきたOSは関係ない。
Perlが動いているサーバーのOSが関係する。
そして、basenameは動いているOSによって区切りを/か\か自動的に
判断してくれるので便利に使える。
サーバーがWindowsでもLinuxでもbasenameは正しく動いてファイル名を取り出せる。
取り出せない場合は、何か別の原因。

381:nobodyさん
08/04/26 19:45:43
type=fileで送られてくるファイル名の話じゃないのか?

382:nobodyさん
08/04/26 21:48:20 vQRq4Omz
だいたいみなさんの、perl普通にコード書き込みできるまでに要した
時間と日数おしえてもらえませんか?時間とか1日何時間くらいしてます?

383:nobodyさん
08/04/26 22:09:54
意味が。

384:nobodyさん
08/04/26 22:14:17
>>382
もっと、日本語を勉強した方がいいよ

385:nobodyさん
08/04/26 22:49:57
>>382
皆さんは「週何日、1日当たり何時間」なんていう時間割みたいな方式で
取り組んできたわけじゃないので、そういうのはよくわかんないのです。
そりゃ、そんな方式で堅苦しく取り組んできた人もいるかもしれないけど。

あなたが今までにちんちんを何ストロークしてきたかが不明なのと似てます。

386:nobodyさん
08/04/27 00:52:54 G3KB/HmG
mod_rewriteでURLを書き換えた時に%2Fがあると404エラーになってしまうので
スラッシュをURLエンコードさせたくないのですが、可能でしょうか?どなたか助けてください・・
p://example.net/dir/index.cgi?name=<em>hoge</em>
このように、どうしてもタグが含まれてしまうURLなので困ってます。

見るからに初心者ですが、どうかよろしくお願いします。

387:nobodyさん
08/04/27 01:20:29
>>386
不可能。

388:386
08/04/27 02:55:07 G3KB/HmG
>>387
そうですか・・
諦めて他に方法がないか試行錯誤してみます
ありがとうございました。

389:nobodyさん
08/04/27 23:26:09
>>382
10時間ぐらいかな。
もっとも、Perl以前にawk, sed, C
などの下地があったわけだが。

390:nobodyさん
08/04/27 23:35:33
普通がどの程度か全く分からないけど、とりあえず動く掲示板を作るのに1日1~2時間ほど
コード書いて1週間かかった気がする

そんな自分は C (すっかり書けないけど、ポインタで躓くまでは書いてた)、VB (アプリをいくつか作ってた) の経験ありです。

391:nobodyさん
08/04/27 23:39:03
Perlでバッチ処理を書くのはすぐ出来るけど、
Webアプリ(cgi)は時間がかかると思う。

392:nobodyさん
08/04/27 23:44:48
そんな貴方にCGI.pmですよ

393:nobodyさん
08/04/30 17:01:56 9OxUbc+M
あの、乱数についてなのですが、100~150までの間でランダムな数をスカラー変数に格納するにはどうすればいいでしょうか?

394:nobodyさん
08/04/30 17:13:24
my $rndnum = rand(51) + 100

rand(51)
0 ~ 51 未満を生成 (未満は 51 を含まないので 50 以下の数字が現れる)

+100
下限値である 100 を加えてやる


以上

395:nobodyさん
08/04/30 17:14:49
int

396:nobodyさん
08/04/30 17:19:40
my $rndnum = int(rand(51)) + 100;

397:nobodyさん
08/04/30 17:19:49
忘れてたw
>>395
thx

my $rndnum = int(rand(51) + 100);


398:nobodyさん
08/04/30 18:11:00
>>393の質問ではintなしの>>394が正解とすべきなんじゃないか?
質問者の質問が悪いところまでフォローして手取り足取りするのが役目?

399:>>393
08/04/30 18:26:54 9OxUbc+M
皆さんどうもありがとうございます。
確かに>>398さんの言うとおりです。わざわざフォローして下さった親切なお二方に感謝します。

400:nobodyさん
08/04/30 18:38:47
すいません。
どうも下記例のforeachのループの中で、さらにwhileのループを
回せないのですが、たぶん簡単な理由だとは思うのですが、
お助け下さい。

他にもこのようなforeachのループの中で、foreachのループも回せないと
思います。

foreach $number(@number){


while (<F2>) {
print "$number\n";
if (/$number/)
{
print "マッチしました\n";
print F3;
}
}
}

401:nobodyさん
08/04/30 19:09:01
>>400
<F2>で同じ行数を複数回とりだしたい感じ?
だとしたらヒント:seek

402:nobodyさん
08/04/30 19:10:23
>>400
1回目のforeachが終わったときに<F2>が空になる

403:nobodyさん
08/04/30 19:48:00
whileに入る前に開きなおすのも手だな

404:nobodyさん
08/04/30 20:17:59 GavbPT5W
一回目のループで開いてるファイルのファイル位置が終端にあるため
2周目はファイルを読み込むループが発生しません

解決法は2つ
・While の直前でファイルを開くようにする
・While の直前で seek を使ってファイル位置を先頭に戻す
です。
負荷は後者の方が幾分か軽いです

405:nobodyさん
08/04/30 20:28:06
my @lines = <F2>;

場合によってはこれもありかなと思った。無駄にメモリ食うけど。

406:nobodyさん
08/04/30 20:47:41
whileの中でforeachじゃ駄目なん?

407:400
08/04/30 23:43:57
すいません。seekというのは初めて知りました。
1回目のforeachが終わったときに<F2>が空になる ってマジですか。
例のループにseekを追加して、動くようにしていただけませんか?
お願いします。

408:nobodyさん
08/05/01 01:39:53
>>400
初めてのPerlと続・初めてのPerl買えばいいよ。

409:nobodyさん
08/05/01 12:48:54
コストの高い I/O をメインにループさせたほうがいいっすね

open(F2, "hoge.txt");
while (<F2>) {
  foreach $number(@number){
    ~
  }
}

close(F2);


410:nobodyさん
08/05/01 13:18:21
>>407
自分でやれ。
できないなら金払って業者つかえ。
代行するところじゃなく、自分で作るためのヒントを与えるところだ。
ここまでヒントがそろったらあとは調べながらできる。

411:nobodyさん
08/05/01 13:51:56
あとね、初心者なんだから記述を略すな
ちゃんと意味がわかってから略すように汁

412:400
08/05/01 23:38:01
>409 Thx 明日試してみます。seek(F2, 0, 0)では動かなかった。
>410 GW中くらい、自宅警備を止めてみたら?
>411 省略ハァ? 汁?

413:409,411
08/05/01 23:46:36
そういう口調ならてめぇで解決しろよ能無しチンカス糞野郎

414:nobodyさん
08/05/02 00:07:00
> 省略ハァ? 汁?
ワロタ

415:nobodyさん
08/05/02 05:46:04
まあ、なんだ
「ものを学ぶ姿勢」ってやつを身に着けないと成長できないよね

416:nobodyさん
08/05/02 08:12:32
きっとこの人はこれからさきの人生も困ったら自分の力で解決しようとせず人を頼りにして生きていくんだろうな。
これ10代だったら笑って流せるけど、20代以上で本気で言ってたら深刻ww

417:nobodyさん
08/05/02 10:22:44
定期的に沸くから慣れろwww

418:nobodyさん
08/05/02 10:32:20
自分の書いてるのが略記だって事すらも気がついてないんだろうな

あと、これはおそらくは宿題だなw

419:nobodyさん
08/05/02 11:18:57
延々と質問者を叩く・・・キモッ
とっくに質問者は消えてることに気づけよ禿げ

420:nobodyさん
08/05/02 12:28:02
>>419
僕の予想が確かなら、質問者なら君のパソコンのモニタの前に居るよ。

421:nobodyさん
08/05/02 12:37:17
>>420
はぁ?俺か?
ちゃうっちゅーねん
あほか

422:nobodyさん
08/05/02 13:12:28
ノリが一緒でわろたwww

423:nobodyさん
08/05/02 13:34:20
お前の粘着っぷりのほうがおもろい
医者いったほうがええんちゃうかw
リアルでアレかw

424:nobodyさん
08/05/02 13:43:58
日本語が変でござるよ

425:nobodyさん
08/05/02 14:15:25
ネット上での似非関西弁って餓鬼が凄む時に巻き舌になるのに似てる

426:nobodyさん
08/05/02 14:47:41
それは言わないのが優しさだったのに・・・

427:nobodyさん
08/05/02 15:08:52
質問者以外が必死になる理由が見つからない

428:nobodyさん
08/05/02 18:44:35
ぼくが一番、perlをうまく操れるんだ!

429:nobodyさん
08/05/02 23:07:56
>>427
思い込み激しいとか言われへん?
回りに迷惑かけても気づかないタイプだな
回答もしないのに罵倒するのはお前だけやろ
頭変すぎてわからんかw

430:nobodyさん
08/05/02 23:28:43
>>429
そんならお前が回答してやれよ。 出来るもんなら。www

431:nobodyさん
08/05/02 23:45:27
>>429
なんでそんなに必死なん?

432:nobodyさん
08/05/02 23:59:11
GWで暇なんだろ

433:nobodyさん
08/05/03 02:50:47
GW、通勤とか会社の中とか人が少なくていいよね。

434:nobodyさん
08/05/03 03:07:39
いいですよね。客からの電話も鳴りませんし。

435:nobodyさん
08/05/03 10:04:09
泣いてませんか?

436:nobodyさん
08/05/03 18:44:15
内線もならないよね。

437:nobodyさん
08/05/03 19:02:10
でもトイレに花子さん居るよね。

438:フー子
08/05/04 19:36:48 798fbSDd
Perl の CGI::Base とか CGI::Request モジュールって、
何のためにあるの?どうやって使うの?

439:nobodyさん
08/05/04 19:50:31
>>398
初心者質問スレで何言ってるんだ。

440: ◆TWARamEjuA
08/05/04 20:01:51 BE:3267465-2BP(7082)
>>438
君かわいいね。

・・・ぶつ森のスレかとオモタorz...

URLリンク(search.cpan.org)
URLリンク(search.cpan.org)
を眺めてみればよろしいかと。

例文を眺めればだいたい何がしたいのかが見えてくるかと。
英文は無理に読まなくてもよろしいかと。

441:nobodyさん
08/05/04 20:22:15
pmという拡張子、ガクブル

442:nobodyさん
08/05/05 14:08:42 GD7pTJpy
CGI掲示板を自作していますが、書き込み送信メールのSendmailによる送信処理でつまづきました。

以下のように記述すると、管理人である自分には登録メールが送られますが、
管理人以外に、書き込みした人にも登録確認メールが送られるようにしたいんです。

#Sendmailによる送信処理
if (open(MAIL,"| $sendmail -t")){
print MAIL "X-Mailer:legend2\n";
print MAIL "To: $administrator\n";
print MAIL "Errors-To: $administrator\n";
print MAIL "From: $administrator\n";
print MAIL "Subject: $subject\n";
print MAIL "MIME-Version: 1.0\n";
print MAIL "Content-type: text/plain; charset=ISO-2022-JP\n";
print MAIL "Content-Transfer-Encoding: 7bit\n";
print MAIL "$mail_comment\n";
print MAIL "\n";
close(MAIL);
}
}

以下のどれかを使うのでしょうか?

print SENDMAIL "From: $sender <$from>\n";
print SENDMAIL "To: $to\n";
print SENDMAIL "Cc: $cc\n";
print SENDMAIL "Bcc: $bcc\n";


どうすれば良いか御教授下さい。宜しくお願いします。



443:nobodyさん
08/05/05 14:20:17
>>442
# CGIは板違いだが、この処理自体はCGIと関係がないので。
if文のブロックを、Toヘッダだけ「書き込みした人」のアドレスにしてもう一度処理するか、
Toを「書き込みした人」のアドレス、CcまたはBccを「管理人」のアドレスにするか。

Errors-Toヘッダはobsoluteだった気がします。
envelopeアドレスを指定するべし。sendmailに-fオプションに続けてアドレスを指定する。
URLリンク(sonic64.com)

444:nobodyさん
08/05/05 16:36:56
つーか、今時、open(MAIL,"| $sendmail -t")やErrors-To:とか前世紀に
書かれた古文書を元にCGI作るな。めーわくだ。

445:nobodyさん
08/05/05 18:19:44
批判だけならゾウリムシにもできる
例文または参考 URL ぐらい提示すればいいじゃない

446:nobodyさん
08/05/05 19:20:18
ただでは断る。

447:nobodyさん
08/05/05 20:15:30
>>446
しね

448:nobodyさん
08/05/05 21:17:57
役立たずなテキストに騙される処を指摘してやったのに随分な言い草だな。

449:BEET
08/05/05 21:36:20
URLリンク(z-z.jp) ここのスクリプト抜きたいんですけど、どうしたらいいのですか?

450:nobodyさん
08/05/05 21:39:44
>>449
むり

451:nobodyさん
08/05/05 21:57:12
>>449
ハッキングすればできるかもしれない。

452:nobodyさん
08/05/05 22:16:06
スクリプト抜くってどういう意味なんですか?

453:nobodyさん
08/05/05 22:44:54
ハァハァするんじゃないかな。

454:nobodyさん
08/05/05 23:21:45 V/xhfGfA
ftpで接続しないとスクリプトは抜けないでしょう

455:BEET
08/05/06 00:42:09
回答ありがとう。 ハッキングって.. 簡単なのかな? ソフトはできるだけ使いたくないな

456:BEET
08/05/06 00:45:09
追記なんですけど
このレンタル掲示板の管理パスをクラックされて、改竄されたんだけど、どうやってクラックしてるのかな?


457:nobodyさん
08/05/06 00:49:33 fJq/GBDg
(`・ω・´)??

458:nobodyさん
08/05/06 00:50:15
>>455-456
>>1を100回声を出して読め。
読み終わったら610と三ポールのミックスカクテル飲め。

459:nobodyさん
08/05/06 00:51:09 fJq/GBDg
(`・ω・´)ソフト使ってるだろww

460:nobodyさん
08/05/06 09:09:26
Windowsローカルに入れたActivePerlで
cpan > install XML::ATOM::Feed
したのに、それを500エラーになってしまいます
(useしてるところをコメントアウトすると通る)
moduschで見たら「存在しないか、ロード出来ない」っぽい
なぜでしょうか…?

461:nobodyさん
08/05/06 16:59:23
>>442
BCCで目的は達成できると思うけど、
自分のメールアドレスを、スパムを送りたい先などにされると
簡単にスパムの踏み台になるから気をつけてね。

462:nobodyさん
08/05/06 22:50:17 wGWcI8Lv
AUTOLOADってのを初めて使ってみたんです。
未定義の関数を読んだら無事AUTOLOADが呼ばれたんですが、
変数$AUTOLOADを参照するとGlobal symbol~っていうエラーが出てしまいます。
AUTOLOADを使う場合はno strictしていいものでしょうか。

463:nobodyさん
08/05/07 00:05:35
use strict;
use warnings;

sub AUTOLOAD {
  our $AUTOLOAD;
  print $AUTOLOAD;
}

foo();


464:nobodyさん
08/05/10 23:18:32
URL転送なんだけど今こうしてます↓

#!/usr/bin/perl
print "Location: URLリンク(*****\n\n)";

これに転送するまでHTMLの<meta content="x">みたいに
一定時間ウェイトかける事って出来るのでしょうか?

465:nobodyさん
08/05/10 23:19:01
いいえ

466: ◆TWARamEjuA
08/05/11 01:16:36
転送するまでひと寝入りする。

467:nobodyさん
08/05/11 02:11:14
>>464
いい事いうじゃねえか。
出来るんだな?
今すぐ頼むぞ。

468:nobodyさん
08/05/11 13:18:10 yMOlxpUv
print qq{あいうえお @{[1+1]} かきくけこ };

無名配列のリファレンスとデリファレンスを使ってクォート内に式を埋め込めます。
これ気に入っててよく使うんですが、これのスカラーリファレンス版ってできませんか?

\$()
無名スカラーって存在しないんですかね。
いやそもそも@{[]}に式を埋め込めるのはそこをクォート内ではないと認識するからなわけで。
いや、う~ん。確かこれなんかいい方法があったような期がするんですが。

469:nobodyさん
08/05/11 23:02:44 Vy6R2X5C
Perlスクリプトの処理が全て完了する前に
クライアントとの接続を明示的にクローズする方法は
ありませんでしょうか?

以下のようなことが実施したいです。
どなたかよろしくお願いします。


#!/usr/bin/perl

print "Content-type: text/html\n\n";
print "<html><body>なんちゃら</body></html>";

## ここで明示的にクライアントとのConnectionをクローズしたい。

## ここからクライアント側に影響がない時間がかかる別の処理を実施したい。
&HokaNoShori();

exit;


470:nobodyさん
08/05/12 01:08:40 CYOIx0A2
perlで重い処理をさせるのが困ります。
例えばパソコンの30%の能力だけ使わせるとかってできませんか?

471:nobodyさん
08/05/12 01:16:51
>>470
それは知らないけど、nice付けて起動とかしてみては?

472:nobodyさん
08/05/12 03:09:36
>>468

qq{  ${\do {1+3}}  }


473:nobodyさん
08/05/12 04:50:44
>>469
close(STDOUT);

474:nobodyさん
08/05/12 10:21:48
>>469
fork

475:nobodyさん
08/05/12 16:03:50
WindowsXPでActivePerlを使って
クリップボードにあるテキストに処理を加えて
クリップボードに戻すプログラムを作ろうとしています。
Win32::Clipboardを使用しているのですが、Unicodeだと化けてしまいます。
Unicodeでも化けないで処理できる方法はあるでしょうか?

476:nobodyさん
08/05/12 16:08:19 CYOIx0A2
>>472
思い出した!

print qq{ ${ \(1+1)} };
でしたね。
なるほどなるほど。${}これでデリファレンスができるというわけだ。

477:nobodyさん
08/05/12 17:20:30
Win32::Clipboard が受け取るのは Shift_JIS 固定っぽいです
Encode でShift_JIS にして渡してみたらどうりますか?

478:nobodyさん
08/05/12 18:00:21
>>477
回答ありがとうございます。
Shift_JISにない文字も処理したかったので
Win32::Clipboardでは無理と言うことですね。
Win32::Clipboard以外でクリップボードを利用できるものはありますか?

479:nobodyさん
08/05/12 20:22:51
文字化けしないようにする方法教えてください
use LWP::Simple;
my $page = get('URLリンク(hogehogehoge.jp)');
getprint('URLリンク(hogehogehoge.jp)');
print $page


480:nobodyさん
08/05/12 21:36:53
>>479
ヒント:Jcode

481:nobodyさん
08/05/13 01:04:45
perl 文字化け でググれカス

482:479
08/05/13 03:44:42
エスジス保存しておいたソースファイルをEUCに変更保存してみたけど
何も変わんないですよ

483:nobodyさん
08/05/13 06:45:22
>>482
「ソースファイル」ってのが上の us-ascii で足りそうなコードのことだったら
SJIS → EUC しても何も変わんないですよ。

環境その他も書かれてないし、変換に興味なさそうなので
perl hoge.pl > test.html
して「まともなエディタで見れば文字化けしない」でいいのかも。

484:nobodyさん
08/05/13 13:57:38
>>464
Location:を表示する前にwaitをいれればおk

485:nobodyさん
08/05/17 19:31:00
$obj = new Class;
$obj = Class->new();

この二つの違いは何ですか?

486:nobodyさん
08/05/17 20:03:56
おんなじ。どっちのClassクラスのコンストラクタを呼んでるだけ。
Classってサブルーチンが定義されてるときに問題がおきることがあるので、
$obj = Class->new;
の形式のほうが推奨されるけど。

487:nobodyさん
08/05/17 23:09:13
>486
ありがとんです

488:nobodyさん
08/05/18 11:25:25
俺はコンストラクタを呼び出すときだけはnew Classってしてあとはぜんぶ$obj->sub()ってするかな。

489:nobodyさん
08/05/19 06:36:14
なんだか、急にCPANでエラーで全く動かなくなったので、いろいろ調べてみたら、
ERRNO.pmが、MSWin32-x86-multi-thread-5.00(Windows Updateでいつの間にか変わってた)を弾いてた。

とりあえず、ERRNO.pmを書き換える(!)ことで対処したんだけど、
他に同じトラブルあってる人いません?

490:がんちゃん
08/05/19 10:02:27
perlでImage::MagickのAnnotateを使って画像と文字を合成できたのですが
出来上がった画像を右クリックして保存しましたが
そのファイルが開けません。
何が原因でしょうか。宜しくお願いします。

491:nobodyさん
08/05/19 11:27:27
>>490
開けないとは具体的にどういうこと?
単に、変なファイル名(拡張子)で保存してしまって、ダブルクリックしても関連づけの問題で開けないってことではなくて?


492:がんちゃん
08/05/19 12:15:34
うっせーよ!それぐらい分かるっての!腐った回答してんじゃねぇよwww

493:がんちゃん
08/05/19 12:29:05
     *      *
  *     +  うそです
     n ∧_∧ n
 + (ヨ(* ´∀`)E)
      Y     Y    *

494:がんちゃん
08/05/19 12:32:08
なんだここの人たちはこれぐらいの質問も答えられないの?
回答者が初心者のスレだったのか・・・

495:がんちゃん
08/05/19 12:35:01
     *      *
  *     +  うそです
     n ∧_∧ n
 + (ヨ(* ´∀`)E)
      Y     Y    *

496:nobodyさん
08/05/19 14:06:12
print "Content-type: image/jpeg\n\n";
binmode STDOUT;
$image->Write('jpeg:-');

ソース晒せや。

497:nobodyさん
08/05/19 14:11:40
なにこの流れ・・・

498:nobodyさん
08/05/19 15:48:41
質問の仕方も知らないというか、質問の文章すら正しく書けない馬鹿が多すぎ
Perl云々の前に日本語学校行け

499:nobodyさん
08/05/19 15:59:52
\E

500:nobodyさん
08/05/19 16:39:50
はい、次

501:nobodyさん
08/05/19 16:41:56
>>498
お前の文章が一番変だわ

502:nobodyさん
08/05/19 18:36:38 82E4EJS9
すみません。ド素人です。
質問です。
Can't locate GD/Image.pm in @INC (@INC contains: C:/perl/site/lib C:/perl/lib .)
というソフトウェアエラーが出て、CGIを実行できません。
どうかどうか、教えてください。

503:nobodyさん
08/05/19 18:38:59
GD を入れてください

はい次

504:nobodyさん
08/05/19 18:39:34 82E4EJS9
GDは入れてるんですけど、image.pmってのがなにか、わかんないんです。。。

505:nobodyさん
08/05/19 18:44:49
GD-Image-Thumbnail でも居れておきゃえぇんとちゃうのん?

506:nobodyさん
08/05/19 18:45:58 82E4EJS9
505さん ありがとうございますぅやってみます。

507:nobodyさん
08/05/19 18:47:44
URLリンク(search.cpan.org)

508:nobodyさん
08/05/19 18:54:23 82E4EJS9
507さん。。ありがとうです。
けど、このページの、なにをどうすればいいのか。
わかりません
どうしようもない素人なので。。

509:nobodyさん
08/05/19 19:12:16
*.pmってのはPerlモジュール
エラーの内容は「このモジュールがみつからないよパパ」
→インスコor場所確認
とりあえずモジュールが入ってるか確認する
→ぐぐる
入っていない場合、モジュールをインスコする
→ぐぐる
入っている場合、パスを確認する
→ぐぐる

510:nobodyさん
08/05/19 19:26:15
GDのバージョンを2.39に上げれば解決。

511:nobodyさん
08/05/19 19:58:48
「初心者」「素人」は分からないからフルサポートしてもらえる理由になりません。

512:nobodyさん
08/05/19 20:03:39 82E4EJS9
GD2.39の中のGD.pmとGDフォルダを /perl/libの中にドラック&ドロップしてるんです。
これは、どこかのサイトに書いてあったので。しました。
そしたら、エラーがでて。GD/Image.pmがどうのこうのとなってまして。
505さん507さん509さん510さんの言葉も、正直、理解しきれてない状況です。
まず、インスコというのが、コマンドプロンプトでするらしいとどこかに書いてて、
してみたんですけど。まず、「ppm」とすると、perlpackagemanagerが起動して、
その中に、GDがなくて。どやってインストールしていいのかも、わかんない感じです。
すみません長々と。どうかお助け願います。。

513:nobodyさん
08/05/19 20:03:43
ローカルで試そうとしてるやつが、
どうしようもない素人を名乗るなよ。
向上心ねぇのか

514:nobodyさん
08/05/19 20:16:06
>>512
URLリンク(www.bribes.org)
ここへいってら。

それができたら、こっちも回っておくように。
URLリンク(theoryx5.uwinnipeg.ca)


515:nobodyさん
08/05/19 20:18:47 82E4EJS9
514さんありがとうございます。
読んでます。

516:nobodyさん
08/05/19 21:08:55 82E4EJS9
やっぱりエラーになります(涙

517:nobodyさん
08/05/19 21:35:03
リポジトリを増やしたのだからインストールできるはずだが。

掲示板なんだから、レスに主語と述語をはっきり書いてくれ。
とりあえず、頭にエラーが出たのか?

518:nobodyさん
08/05/19 22:17:16
良く読んでないけど、
スタート→すべてのプログラム→ActivePerl→Perl Package Managerで
必要なものをクリック、クリック!した方が楽で簡単だよ。

519:nobodyさん
08/05/19 23:01:51 82E4EJS9
perl package managerの中に GDが見当たらないんです。
コマンドプロンプトで CPANから install GDってしても
できないんです。
GD/image.pmが@INCに無いっていうエラーが出るんです。517さん。

520:nobodyさん
08/05/19 23:13:22
>>519
>>514サイトをよく読んでppmにリポジトリを追加すると、GD 2.39がインストールできるようになる。
ちゃんとリポジトリを追加したか?
それでも出ないというのなら、ppmに問題があることになる。

521:nobodyさん
08/05/19 23:23:58
URLリンク(mikiho.jp)

serach のとろを

s GD

としてくださいな

これでも出来なければ諦めてください
サポートしきれないです

522:nobodyさん
08/05/20 01:25:53
URLリンク(pub.ne.jp)
Perl 5.8ならなんか面倒そうなんだけどこれかな?

523:nobodyさん
08/05/20 03:52:12 U/T3y6km
ここ見て、Win用のGD-2.39来てるのかと思い、threory58に行くも2.35しかないじゃないか!?ぷんぷん。
ふと、PPM-Repositoriesを0.14に上げて見るとbribesなるレポがあるので、これを見に行くと、
おおー、結構新しいの来てるじゃないか~と、調子にのってperl areaのmoduleもUpしまくる。
しかし、Compress-ZlibをUpすると、Bandleされてたversionを上書きしてしまい、
それ以降ppmがtar.gzファイルを展開できなくなってしまった。(今まで見たことないエラーでPPMが落ちる)

とゆうことで、今やっと再インストールと、(自分のよく使う)各種モジュールのインストール、最新版へのUpデートが終わった。
なんとか、Compress-Zlibも2.010に上げる事ができた。
ふう、疲れたぜ・・・・。

524:nobodyさん
08/05/20 04:15:25
そうなんだお疲れちゃん

525:nobodyさん
08/05/20 14:16:09 XrCi5l42
519です。
いろいろサポートいただいて、できました。
ほんとに感謝してます。ありがとうです。

526:nobodyさん
08/05/21 00:33:37
phpのexplodeみたいに、
正規表現を使わずに高速に動作するsplitの代わりはないでしょうか?

527:nobodyさん
08/05/21 01:39:24
substrでループさせる自前の関数でも作れば?

528:nobodyさん
08/05/21 01:41:57
それって速いのかな。。
indexとsubstrを併用してちょっと試してみるか。

529:nobodyさん
08/05/21 11:18:20 crauFAgn
モジュールが一切入っていないレンタルサーバで、xmlを読み込もうとしています。
ググってみると、どこもXMLとLWPというモジュールを読み込む事が前提になっているようなのですが、
何も無い状態でXML

530:529
08/05/21 11:19:42
すみません途中で送信してしまいました…orz

モジュールが何も無い状態でXMLを読み込むために
参考になるようなサイトがありましたら、ご教示下さい。

宜しくお願いします。

531:nobodyさん
08/05/21 12:00:10
ソケット使ってゴリゴリ書くしか無いんじゃないかな

532:nobodyさん
08/05/21 12:06:34
モジュールが一切入っていないレンタルサーバでソケットが使えるようにインストールされてる
とはとても思えないが・・

533:nobodyさん
08/05/21 12:14:45
xmlそのものについても調べてる状態なんですが、
どうも事実上無理っぽいということですかね…orz
お騒がせしました、ありがとうございました。

534:nobodyさん
08/05/21 13:46:16
php が動くなら php 普通にネットワーク経由でファイル開けるので php も考慮してみれば?

535:nobodyさん
08/05/21 23:33:50
>>529,530
XMLを読み込むだけなら、XML::TreePPでXMLが読める。
別サイト上にあるXMLを読むならLWP等が必要。


536:nobodyさん
08/05/22 08:42:14
質問です。Snアップローダー(URLリンク(sugachan.dip.jp))の
ファイル個別HTMLを作成する部分で

$buff = "<html><head><title>$filename</title></head><body>";
$buff .= qq|Download <a href="./$filename">$filename</a>|;
$buff .= '</body></html>';
(ソースの760行目付近です)

特定の拡張子のみ別のHTMLコードを書き出したいのですが
if文で$filename等試してみましたが上手く行きませんでした

どなたか分かる方宜しくお願いします

537:nobodyさん
08/05/22 10:13:46
改造スレいけ

538:nobodyさん
08/05/22 12:40:41
$buff .= qq|Download <a href="./$filename">$filename</a>|;

こういう書き方もあるんだ。勉強になったw

539:nobodyさん
08/05/22 13:18:50
毎行クォート変えるくらいならヒアドキュメント使えよ

540:nobodyさん
08/05/22 13:25:55
ヒアドキュメントもコーディングの桁揃えと、HTMLの桁揃えでタブを使うと、すっきりする方法
がなかなか見つからない。

541:nobodyさん
08/05/22 13:40:38
>if文で$filename等試してみましたが上手く行きませんでした
どう試して、どういう結果になったのか書かないと。
基本だと思うが。

542:nobodyさん
08/05/22 17:17:18
>>540
普通に cookbook にある解ではダメなのか?
URLリンク(www.unix.com.ua)


543:nobodyさん
08/05/24 13:22:00 CztaXqIN
セッション変数の受け渡しについての質問です。

print <<EOT
<form action="URLリンク(localhost)" method="post">
<p>
<label for="nm">お名前:</label>
<input type="text" name="namae" id="nm"><br>
<label for="ma">メール:</label>
<input type="text" name="email" id="ma">
</p>
<p>
<input type="submit" value="送信">
<input type="reset" value="リセット">
</p>
</form>
EOT
;

これらのフォームデータをセッション変数としてsession.cgiに受け渡したい
のですが、どのようにすればよいでしょうか?
CGI::sessionモジュールを利用して、session.cgi側で
$hoge=$cgi->$session->param('namae');
などとすればセッション変数として受け取れる事は分かったのですが、
フォームからの受け渡し方が分かりません…。

よろしくお願いします。

544:nobodyさん
08/05/24 13:38:27
hiddenで投げれ

545:nobodyさん
08/05/24 13:41:36
>>543
どれがセッション変数なの?

546:543
08/05/24 13:47:45 CztaXqIN
>>544
hiddenフィールドを利用すればセッション変数として受け渡されるのでしょうか?

>>545
「お名前」や「メール」フォームに入力された文字列をセッション変数として
session.cgiで受け取りたいと考えています。


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch