Perlコーディング初心者質問スレ Part 53
レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん
2006/11/26(日) 14:38:23ID:SlmGsFMB【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。
1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。
お勧めサイトは >>2-10
前スレ http://pc8.2ch.net/test/read.cgi/php/1153987463/
過去ログ倉庫 ttp://user.ftth100.com/mirrorhenkan/perl/
0910nobodyさん
2007/01/24(水) 16:50:31ID:???データの中に区切り文字を含まないように工夫すればなんでもいいんじゃね?
>>908
本を一冊読むことをおすすめする。
ここで全部を教えるのは難しい
>>909
"LWP リダイレクト"でぐぐった?
0913nobodyさん
2007/01/24(水) 20:41:48ID:???そこで半角のみの投稿は不可にしようと思ったのですが
正規表現だと
$char_check = $form{"message"};
if($char_check =~ /^[^0-9a-zA-Z]$/ ){
送信
} else {
エラー処理
}
こんな感じでやってみたのですがうまく動きません。
正しい動作をさせるにはどのように書き直せばいいでしょうか?
0914nobodyさん
2007/01/24(水) 21:25:03ID:???送信
}
0915nobodyさん
2007/01/25(木) 05:34:19ID:???あとURLに使われる文字とか。
0916nobodyさん
2007/01/25(木) 16:38:50ID:???UserAgentは簡単に偽装できるので、IPアドレスベースの識別をしたいのですが、
アクセス者のIPアドレスがサブネットマスク形式のアドレスで指定した条件に一致しているかどうかを
確認するモジュールはないでしょうか?
つまり、
my $ipType = &IP_Check('127.0.0.1', '127.0.0.0/24');
if ($ipType) {
print 'ループバックアドレスです。' . "\n";
}
みたいなことができる関数が欲しいです。
よろしくお願いします。
0918nobodyさん
2007/01/25(木) 18:26:22ID:???とりあえずCPANでsubnetで検索してみた?
その目的からするとTie::NetAddr::IPがこんな感じで使えてよさそうに見える。試してないが。
tie my $carriersSubnet, 'Tie::NetAddr::IP';
$carriersSubnet{"10.0.10.0/24"} = "CarrierA";
$carriersSubnet{"10.3.20.0/24"} = "CarrierA";
$carriersSubnet{"10.10.2.0/24"} = "CarrierB";
my $carrier = $carriersSubnet{$ipaddr};
0922nobodyさん
2007/01/26(金) 10:57:39ID:???質問させていただきます。
質問を提示してその下にラジオボタンで選択肢を作ります。
で、質問に答えたら次の質問と続いていくわけなんですが。
その選んだ答えを1.と答えたのがが3個 2.と答えたのが4個と最後に合計を出したいの
ですが、合計を出そうとするところができません。
そういう簡単なサンプルとかを提示していただきませんでしょうか?
0924nobodyさん
2007/01/26(金) 12:38:54ID:???if ($x eq $a){
$one++;
} eisif ($a eq $b) {
$two++;
} else {
$three++;
}
print "Content-type: text/html; charset=文字コード\n\n";
print '1は' . "$one" . '、''2は' . "$two" . '、' . '3は' . "$three";
0925924
2007/01/26(金) 12:43:20ID:???if ($x eq $a){
$one++;
} eisif ($x eq $b) {
$two++;
} else {
$three++;
}
print "Content-type: text/html; charset=文字コード\n\n";
print '1は' . "$one" . '、' . '2は' . "$two" . '、' . '3は' . "$three";
0926924
2007/01/26(金) 13:01:23ID:???if ($x eq $a){
$one++;
} elsif ($a eq $b) {
$two++;
} else {
$three++;
}
print "Content-type: text/html; charset=文字コード\n\n";
print '1は' . "$one" . '、''2は' . "$two" . '、' . '3は' . "$three";
0927924
2007/01/26(金) 13:02:48ID:???0928924
2007/01/26(金) 13:08:50ID:???これが正解だ
if ($x eq $a){
$one++;
} elsif ($x eq $b) {
$two++;
} else {
$three++;
}
print "Content-type: text/html; charset=文字コード\n\n";
print '1は' . "$one" . '、' . '2は' . "$two" . '、' . '3は' . "$three";
0929nobodyさん
2007/01/26(金) 13:20:33ID:???0930nobodyさん
2007/01/26(金) 16:52:05ID:???0931nobodyさん
2007/01/26(金) 20:04:25ID:???あとprintf覚えようね。
0932nobodyさん
2007/01/26(金) 21:03:20ID:???それとも1つの質問が書かれた複数のページがあるのか、はっきりしない。
前者なら、全ての質問について、選択肢をキーとしたハッシュでも作って集計すればいい。
後者なら、hidden フィールドでも使って、前ページまでの集計結果を覚えておけばいい。
0933nobodyさん
2007/01/27(土) 10:46:19ID:F/NZnu0Bお薦めのBBS向けのフレームワークとかご存じでしたら教えてもらえませんか?
0934nobodyさん
2007/01/27(土) 11:18:07ID:???0935nobodyさん
2007/01/27(土) 11:29:54ID:???今度使ってみるかなぁ。
つっても、%ndぐらいしか使わなそうだけど。
0936nobodyさん
2007/01/27(土) 11:34:36ID:???0937nobodyさん
2007/01/27(土) 11:39:50ID:???0938nobodyさん
2007/01/27(土) 13:38:26ID:???なんて書くくらいなら
printf("1は%d、2は%d、3は%d", $one, $two, $three);
の方が見やすいと思う。もしクォートの対応間違えてSyntax Errorになったら
探すのめんどいから。あとは、
printf("1は%d、2は%d、3は%d", @total{qw(one two three)});
のように書けるとき便利。
0939nobodyさん
2007/01/27(土) 16:26:34ID:???いや俺の話だけど。
0940nobodyさん
2007/01/27(土) 16:31:24ID:???って書いた方が無難かもかも。。
0943nobodyさん
2007/01/28(日) 07:39:42ID:???>>940 の方が意図しない挙動が起こらないからいいだろ。
0100 をプリントしたい場合
perl -e 'printf "%d", 0100 '
perl -e 'printf "%d", "0100" '
perl -e 'printf "%s", "0100" '
perl -e 'printf "%s", 0100 '
perl -e 'print "0100"'
まあ、printf "%04d", "100" 使えって云うんだろうけど。
0944nobodyさん
2007/01/28(日) 08:28:12ID:???だから>>940でOK。
0945nobodyさん
2007/01/28(日) 23:19:16ID:???ファイルを保存する方法がわかりません。
どうすればいいんでしょうか?
0946nobodyさん
2007/01/28(日) 23:26:29ID:???0947nobodyさん
2007/01/28(日) 23:35:50ID:???0948nobodyさん
2007/01/29(月) 01:45:42ID:???0949nobodyさん
2007/01/29(月) 17:40:11ID:???if($pObj->ping($host, $timeout)){
print "$host is running.\n";
} else {
print "$host is not running.\n";
}
PINGが4回送信成功したらall complete
四回とも失敗したときにnot reaction
としたいのですがどこに制御文足せば良いのか教えてください。
0950nobodyさん
2007/01/29(月) 18:37:35ID:???0951nobodyさん
2007/01/29(月) 18:45:09ID:???0952nobodyさん
2007/01/29(月) 19:25:53ID:???4か-4かで判断汁
0953nobodyさん
2007/01/29(月) 21:11:48ID:???「3回目の試行で全成功」と「4回試行して1度失敗」の区別が付かないような。
まあ、目的次第か。
0954nobodyさん
2007/01/30(火) 01:25:19ID:???その辺の区別はできなくてもいいんでない?
「どうカウントして条件分岐させればスマートか?」という質問じゃなくて
「どこに制御文を足せばいいのか?」なだけに、
みんなが書いた回答では片づかないような気配を感じる。
0956nobodyさん
2007/01/30(火) 15:45:46ID:???クライアント側でソケットをcloseすると、なぜかFD_CLOSE
が2回届いてしまいます。
特に支障はないのですが、これって正常なんでしょうか?
0957nobodyさん
2007/01/30(火) 16:05:16ID:???0959nobodyさん
2007/01/30(火) 22:24:11ID:???0960nobodyさん
2007/02/01(木) 18:34:00ID:uO0f4S6qどこかにないですか?
0962nobodyさん
2007/02/02(金) 20:55:17ID:???@data = ('bbb','ccc');
$num = @log;
for($i=0; $i<$num; $i++){
($name, $price, $text) = split(/,/, $log[$i]);
foreach(@data){
if($text eq $_){
$name = 'MATCH';
last;
}
}
push(@newlog, "$name,$price,$text)";
}
このような処理をしたいのですが、
とても効率が悪そうで悩んでます。
調べてみると、grepが利用できないかと思ったのですが、
うまくまとめられません。。どなたかよい智恵を貸して下さい!
0963nobodyさん
2007/02/02(金) 20:58:50ID:???>push(@newlog, "$name,$price,$text)";
push(@newlog, "$name,$price,$text");
です・・
0964nobodyさん
2007/02/02(金) 22:52:58ID:???# usage> perl this_script 2 bbb ccc
my($pos, @word) = @ARGV;
my $regex = join '|', map quotemeta, @word;
$regex = qr/(?:$regex)/;
my @matched;
(split /[,\n]/, $_, $pos + 1)[$pos] =~ /^$regex$/ && push @matched, $_ for <DATA>;
print @matched;
__END__
AAA,100,aaa
BBB,200,bbb
CCC,300,ccc
DDD,400,ddd
0966nobodyさん
2007/02/05(月) 20:49:02ID:???$s1 = \$text;
$s2 = \'abc';
$s3 = \('abc');
$s4 = \('abc', 'def');
$s5 = \($text = 'def');
$s1〜$s5は全部スカラーのリファレンスになったのですが
$s4とかが配列にならないのは何故なんでしょうか?
夜も眠れません(>_<)
0967nobodyさん
2007/02/05(月) 21:05:53ID:???http://www.kt.rim.or.jp/~kbk/perl5.005/perlref.html#Making_References
> 列挙リストに対するリファレンスを取るということは、ブラケットを使うことと
> 同じではないということに注意してください。これはリファレンスのリストを
> 生成することと同じなのです!
>
> @list = (\$a, \@b, \%c);
> @list = \($a, @b, %c); # 同じこと!
>
> 特殊な場合として、\(@foo)は@fooの内容へのリファレンスのリストを返し、
> @foo自身へのリファレンスは返しません。これは%fooと似ていますが、
> キーのリファレンスがコピーに対するものである点が異なります(これは
> キーがfull-fledgdスカラーではなく単なる文字列であるためです)
0969nobodyさん
2007/02/08(木) 15:49:20ID:???print "$iueo";の出力結果を1ueo
と表示するために$iを何かで囲めば良かったと記憶しているんですが度忘れしてしまいました。
すみませんが教えて下さい。調べるキーワードでも結構です。
0970nobodyさん
2007/02/08(木) 15:52:51ID:???0972nobodyさん
2007/02/08(木) 16:53:49ID:???ぐぐって見つけたページ
ttp://blog.livedoor.jp/hakin/archives/50690272.html
によるとCrypt::SSLeayが必要だそうで、
そのページどおりにppmでインストールしようとしたんですが
Crypt::SSLeay自体が無いようでインストールできません。
環境はWin2000+Activeperl 5.8.8.817 です。
何か手段はありませんか?
0973nobodyさん
2007/02/08(木) 17:09:57ID:MLG2+XR4必須事項として、レスポンスmin/maxから算出したアベレージが必要です。
コマンドプロンプトからの実施時のようにレスポンスを採りたいのですが、Net::Pingにはこのよいな実装がないのでしょうか?
かなり検索はしたのですが、レスポンスタイムの取り方を解説している場所がありませんでした
何か良い方法が有ればご教授下さい。
0974脱帽
2007/02/08(木) 17:29:34ID:???>>972
うちは
ppm install http://theoryx5.uwinnipeg.ca/ppms/Crypt-SSLeay.ppd
でインストール出来たけど。
>>973
hiresメソッドは使ってみた?
0975nobodyさん
2007/02/08(木) 17:35:33ID:???# High precision syntax (requires Time::HiRes)
$p = Net::Ping->new();
$p->hires();
($ret, $duration, $ip) = $p->ping($host, 5.5);
printf("$host [ip: $ip] is alive (packet return time: %.2f ms)\n", 1000 * $duration)
if $ret;
$p->close();
が応答時間をとる例そのものずばりじゃないか。何回かやって平均/max/minとる
ところは自分で書いてください。そのくらいはできるだろ。
0976nobodyさん
2007/02/08(木) 18:43:10ID:MLG2+XR4ありがとうございますm(__)m
>>975さんの方法で無事解決しました。
勉強不足ですね、申し訳ない。
0977あっこ
2007/02/08(木) 19:23:45ID:LIdpjyEoソース教えてもらえませんか?
0978nobodyさん
2007/02/08(木) 19:37:58ID:???0979nobodyさん
2007/02/08(木) 19:45:50ID:???&kouyaku()の中身が知りたいという事か?
1から$num1と$num2の小さい方までをforで回して
$num1と$num2が両方割り切れるようならその値をリストに追加、
最後にリストをまとめて返すというだけの処理。
この程度のソースが書けないのは素人どころのレベルじゃねーぞ。
とりあえず>>1を100万回読み直して自作のソースを晒せ。
0980nobodyさん
2007/02/08(木) 20:43:36ID:???1.両方の数字を因数分解
2.両方に共通する因数を抜き出す
3.それらの組合せの全て出す
4.各組合せの乗算を算出
5.重複した値を除いて、「1」とそれらの値を画面出力
0981nobodyさん
2007/02/08(木) 21:16:53ID:???30秒で出来た
0982nobodyさん
2007/02/08(木) 21:39:49ID:???0984nobodyさん
2007/02/09(金) 16:40:43ID:bT11nyvb0985nobodyさん
2007/02/09(金) 16:53:16ID:???できない……が、同じ事を考えた人は居る。
ttp://blog.livedoor.jp/tetryl/archives/6741666.html
0986nobodyさん
2007/02/09(金) 21:07:51ID:???展開されたデータが渡ってしまうのですがなぜでしょうか?
@a = qw(a b c d);
$obj->hoge(\@a);
sub hoge{
my $self = shift;
my $ref_array = shift;
print $ref_array;
}
こうするとなぜか「ARRAY(0x275cc8)」
といったアドレスデータではなく、「a b c d」と勝手に展開されたものがプリントされてしまいます。
0987986
2007/02/09(金) 21:19:14ID:???デリファンスを
@a = @$ref_array;
ではなく、
@a = @{$ref_array};
とやったらうまくいきました。
なぜそうなのかはわかりませんが・・・
0988nobodyさん
2007/02/09(金) 23:20:06ID:???そもそもお前が986で示したプログラムにはそんな部分はないわけだが。
ちゃんと正確に晒さないと的確な回答は得られないと思われる。
0989nobodyさん
2007/02/10(土) 18:29:35ID:???0990nobodyさん
2007/02/10(土) 20:48:15ID:???http://pc10.2ch.net/test/read.cgi/php/1171102883/
0992nobodyさん
2007/02/11(日) 14:36:41ID:???say '埋め';
0993nobodyさん
2007/02/12(月) 00:00:32ID:???use strict;
my $stop = CGI::SOSHI->new;
print $stop->soshi();
阻止!
0994nobodyさん
2007/02/12(月) 00:01:34ID:???write_thread 'php', '164519503', '梅';
0995nobodyさん
2007/02/12(月) 04:45:55ID:???0996nobodyさん
2007/02/12(月) 05:09:21ID:???0997nobodyさん
2007/02/12(月) 12:40:25ID:???0998nobodyさん
2007/02/12(月) 16:42:45ID:???0999nobodyさん
2007/02/12(月) 17:30:16ID:???1000nobodyさん
2007/02/12(月) 18:04:59ID:???次スレ
Perlコーディング初心者質問スレ Part 54
http://pc10.2ch.net/test/read.cgi/php/1171102883/
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。