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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2010/06/05(土) 21:11:10ID:???
Perlのコーディングで困ってる人のスレです。

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

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

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

お勧めサイトは >2 以降

前スレ http://pc11.2ch.net/test/read.cgi/php/1251989472/
0516nobodyさん2010/10/05(火) 20:08:05ID:???
プログラマに「祝日」という言葉はない!!

「客から電話がかかってこない日」ならある
0517nobodyさん2010/10/05(火) 22:22:50ID:???
それは業務的話ねwwwwwwwwwwwwwwww
0518noboby2010/10/06(水) 02:25:55ID:???
つ holiday.pl
0519nobodyさん2010/10/06(水) 03:11:04ID:???
ENDLESS BATTLEっていう8年前くらいに流行ったCGIゲームの質問なんですが
人を表示させるときの配列を下記のように、DBの格納順で設定しています
while (($Key,$Value) = each %P){
@VS_VALUES = split(/\s/,$Value);
これをランダムにするのはどうすればいいんでしょうか?
どうかお願いいたします。
0520nobodyさん2010/10/06(水) 03:56:29ID:???
>>519
>>1
【 スクリプト改造依頼スレ】(丸投げ) part7再々
http://hibari.2ch.net/test/read.cgi/php/1222645553/
★三 【 スクリプト改造工房 PART 9 】 ★三
http://hibari.2ch.net/test/read.cgi/php/1143834740/
金出すから改造してよvol.3
http://hibari.2ch.net/test/read.cgi/php/1162147035/
0521Perl忍者 ◆M5ZWRnXOj6 2010/10/06(水) 07:41:58ID:2XmazIev
俺の影響うけてPerlうちこみだしたやつがうざい


俺が知ってる中では100人ぐらいが俺の影響うけてPerlとかわめいてやがる
まじうぜえんだが もともとPHPやってるウンコどもも俺の影響でPerlやりだしたし

俺がJPAに献上してるってことあいつらは

だけどあいつらは俺の真似ばっかりしてくんだよ 模倣 アイディアとか発言とか
知ってるプログラマとかも

本当うざくてうざくてたまらねえわほんとに
0522Perl忍者 ◆M5ZWRnXOj6 2010/10/06(水) 07:43:12ID:2XmazIev
もともとドラクエやってるのに

横からFFやってたやつがドラクエやりだして熱弁しだすのがきにくわねえ

本当消えろ!!
0523nobodyさん2010/10/06(水) 10:09:00ID:???
>>519
そういう枕をつけるから相手にしてもらえなくなるわけだな。

一行目のeach %Pをperlが勝手に決めた順番じゃなくてランダムにしたいのか、
二行目の@VS_VALUESの中身の並び順をランダムにしたいのかどっちだか
よくわからんが、とりあえずList::Utilのshuffleでなんとかなるんじゃね?
0524nobodyさん2010/10/06(水) 11:06:02ID:???
やりたいのは%Pのシャッフルです
@keyに取得させてshuffleさせてみました
use strict;
use List::Util qw/shuffle/;
my @key = ($Key,$Value) = each %P;
@VS_VALUES = split(/\s/,$Value);
my $key = List::Util::shuffle @key;
-------------------------------
use strict;
use List::Util 'shuffle';
my @key = ($Key,$Value) = each %P;
@VS_VALUES = split(/\s/,$Value);
print shuffle( @key );
スクリプトエラーはでてないのですが、実際に入れてみたところ二つともダメでした

0525nobodyさん2010/10/06(水) 11:09:36ID:???
keys %Pをshuffleして使え。
0526nobodyさん2010/10/06(水) 11:41:28ID:???
こんな感じに書き換えればおk

foreach $Key(shuffle keys %P){
$Value = $p{$Key};
@VS_VALUES = split(/\s/,$Value);
0527nobodyさん2010/10/06(水) 12:59:05ID:???
Perl文法エラーがでてしまいますね
sub shuffleを使ってみようかと思ったんですがその場合whileとforeachどっちのほうが良いんですか?
0528nobodyさん2010/10/06(水) 13:15:31ID:???
whileとforeachじゃ全く働きが違うわけだが。そのくらいの
判断もつかないようだともう少しちゃんと勉強して出直した
方がいいレベル
0529nobodyさん2010/10/06(水) 13:40:19ID:???
<?PHP
shuffle($key);
foreach $Key (keys %P){
@VS_VALUES = split(/\s/,$P{"$Key"});
}
?>
0530nobodyさん2010/10/08(金) 00:03:35ID:???
PHPじゃダメだろ

use List::Util;
@key = List::Util::shuffle %P;
%P = @key;
while (($Key,$Value) = each %P){
@VS_VALUES = split(/\s/,$Value);
}


こんなところか
0531nobodyさん2010/10/08(金) 02:02:37ID:???
ハッシュのキーも値も一緒くたにする勢いで shuffle しなくてもいいんじゃないか。
0532nobodyさん2010/10/08(金) 05:36:21ID:???
perl構文です。hashをshuffleして取り出したいのですが・・・ - Yahoo!知恵袋
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1248240982
0533nobodyさん2010/10/08(金) 08:02:19ID:???
>>526
>>529
>>530

Perl勉強し直した方が良いんじゃね?
0534nobodyさん2010/10/08(金) 08:44:20ID:???
>>533
模範解答よろ
0535nobodyさん2010/10/08(金) 14:48:28ID:???
この前の天才CGIショップ運営者はどうなったの?
問い合わせしておんなじコト言われた?

問合せ先の業者がかわいそうだな。ごねてんだろうな。
0536nobodyさん2010/10/08(金) 14:54:36ID:???
>>534
529と530はまるでだめだが526は大筋問題ない。
「}」の省略とpの大文字小文字間違いぐらいは
自分で修正しろw
0537nobodyさん2010/10/08(金) 16:10:19ID:???
foreachにshuffleとか使えないですしおすし
0538nobodyさん2010/10/08(金) 16:17:58ID:???
>>537
使えるよ。List::Utilをuseしてないとか言いたいのかな。
List::Utilのshuffle使おうって話の流れなんだから
そのぐらいは補えよ。
0539nobodyさん2010/10/08(金) 17:16:58ID:???
useが省略されてても

foreach $Key(List::Util::shuffle keys %P){
@VS_VALUES = split(/\s/,$P{"$Key"});

こうだろ
ただVALUESの値が取得できてないな
0540nobodyさん2010/10/08(金) 17:31:48ID:???
requireしなくての使えるの?
0541nobodyさん2010/10/08(金) 18:16:41ID:???
>>1
0542nobodyさん2010/10/08(金) 18:31:51ID:???
>>539
use List::Util 'shuffle'; はナシですか
0543nobodyさん2010/10/08(金) 18:44:08ID:???
ハッシュって初めから乱数でランダム格納されてるんじゃなかったっけ
0544nobodyさん2010/10/08(金) 18:57:03ID:???
>>543
順番は保証されてないけど、同じ環境で実行するとたぶん同じ順番になるから
毎回違う順番にしたいって時にはshuffleしたキーを使わなきゃだめ
0545nobodyさん2010/10/08(金) 19:10:44ID:???
>>544
実行時にランダマイズが必要なのはその通りだが
http://perldoc.perl.org/perl581delta.html#Hash-Randomisation
http://fleur.hio.jp/perldoc/modules/perl/perl-5.8.8/pod/perl581delta.mix.html#Hash_Randomisation
0546nobodyさん2010/10/08(金) 19:13:53ID:???
>>545
うーん読んでるとシャッフルは必要ないように思ったんだけど、どうだろう
5.81以前を使っているのかな
0547nobodyさん2010/10/08(金) 19:46:58ID:???
>>542
多分ダメじゃない?

HASHには最初にランダムに格納されるだけだから、ちゃんと回さんとダメ
05485442010/10/08(金) 20:02:12ID:???
俺の環境だと5.10.1、5.12.1、5.12.2のどれで何回やっても同じ順番になるな

use strict;
use Data::Dumper;
my %hash = (foo => 1, bar => 2, baz => 3, qux => 4);
print "perl $]\n";
print "keys: @{[keys %hash]}\n";
print Dumper \%hash;
__END__


perl 5.012002
keys: bar baz qux foo
$VAR1 = {
'bar' => 2,
'baz' => 3,
'qux' => 4,
'foo' => 1
};
0549nobodyさん2010/10/08(金) 23:25:53ID:???
ちゃんとシャッフルしてやらんと
0550nobodyさん2010/10/08(金) 23:33:31ID:???
>>539
ワロタw
0551nobodyさん2010/10/09(土) 02:53:43ID:???
>>535
サポートの姉ちゃんに粘着してんだろ。
察してやれ。
0552Perl忍者 ◆M5ZWRnXOj6 2010/10/09(土) 19:21:18ID:7nxLhNm/
はじめまして

GD::GraphがJcode使っててむかつくので

なんかグラフ表示させるやつ教えてください
javascriptでもいいですか?教えてください
クソコテですが まじめに教えてください
0553nobodyさん2010/10/09(土) 19:23:06ID:???
マルチしね
0554Perl忍者 ◆M5ZWRnXOj6 2010/10/09(土) 21:58:06ID:7nxLhNm/
俺は死なない…たとえ肉体は滅んでも俺の遺志を継ぐものが必ず立ち上がり、そして松本ひろゆき、Rubyたちを倒す!
0555nobodyさん2010/10/09(土) 23:06:01ID:???
de?
0556nobodyさん2010/10/10(日) 02:11:40ID:???
シャッフルは俺の得意分野

use List::Util 'shuffle';
foreach $Key(shuffle keys %P){
@VS_VALUES = split(/\s/,$P{"$Key"});
}

HASHはランダムに納められてるだけでランダムに表示されるわけではない
0557nobodyさん2010/10/10(日) 14:38:29ID:???
>>556

>>526
0558nobodyさん2010/10/10(日) 18:34:10ID:???
list.txt内にユーザーID:名前と記録してるのですが、
この中から名前を検索して、リンクのさいにuser.cgi?=ユーザーIDとしたいのですが、どのように書けば良いのでしょうか?
0559nobodyさん2010/10/10(日) 19:31:01ID:???
>>558
>>1
依頼されたツールを誰かが作るスレ
http://hibari.2ch.net/test/read.cgi/php/1078997682/
金出すからスクリプト作ってよvol.1
http://hibari.2ch.net/test/read.cgi/php/1150508106/
0560nobodyさん2010/10/14(木) 13:38:00ID:???
メールフォームの開発の話。
最初はGETメソッドで開発して、
最後にPOSTに変更するとやり易いなあと。
クエリーがアドレスバーに表示されるので、渡すデータやキーを確認できるから。
これまでは$queryで処理結果ページに表示してた

そう思わない?
みんなどうしてる?

日本語スマソ
0561nobodyさん2010/10/14(木) 14:36:32ID:???
>>560
>>1
【総合】 Webprog板質問雑談スレッド 1
http://hibari.2ch.net/test/read.cgi/php/1131016915/
開発環境おしえて
http://hibari.2ch.net/test/read.cgi/php/1171452901/
スクリプト言語と開発効率について
http://hibari.2ch.net/test/read.cgi/php/1177517787/
生産性、効率性を重視した開発環境
http://hibari.2ch.net/test/read.cgi/php/1005486101/
0562nobodyさん2010/10/15(金) 16:50:22ID:1IbFyG9F
DBIでmysqlのblob型に入ったテキストを取り出したいのですがテスト環境ではうまくいくのですが

本番環境では文字化けしてしまいます。Mysqlのバージョンは5.1.34です。

テキストはUTF8でバイナリデータとしてはきちんと入っていました。

Blob型からデータを取り出すときには何かしないといけないのでしょうか?
0563nobodyさん2010/10/16(土) 10:56:52ID:???
取り出すときにset names utf8とかすれば?
0564nobodyさん2010/10/16(土) 12:03:58ID:???
>>563
接続時はSET NAMES utf8としていますが

SQLの実行直前ですか?

ぐぐるとSET NAMES binaryとしている人もいるようです

0565nobodyさん2010/10/16(土) 12:15:08ID:4m15JmGp
>>563
ナイスヒントでした。

SET NAMES utf8ではだめでしたが直前でSET NAMES binaryを入れたところ化けないようになりました。

blob型を使うときは切り替えないといけないんですね

0566nobodyさん2010/10/17(日) 15:28:24ID:???
>>560
好きな方法使えばいいよ。
0567nobodyさん2010/10/19(火) 10:27:12ID:???
use LWP::UserAgent;

と

require LWP::UserAgent;

とは同じということでよろしいかな?
0568nobodyさん2010/10/19(火) 10:33:23ID:???
下の方法で呼べるっけ?
0569nobodyさん2010/10/19(火) 10:33:56ID:???
そう書いてあるHPがあるんだ。
意外だた。
0570nobodyさん2010/10/19(火) 10:38:28ID:???
動作が違うけどそれでもよろしければ。
0571nobodyさん2010/10/19(火) 10:40:06ID:???
>>567
違うのはimportの有無と読み込みタイミングだが、LWP::UserAgentは
$ua = LWP::UserAgent->newしたら$uaのメソッド呼ぶだけだから普通の
使い方なら特にimportしなきゃいけないもんないしな。どっちでもいいん
じゃない?
0572nobodyさん2010/10/19(火) 10:41:05ID:???
SYNOPSYSにも

require LWP::UserAgent;

ってなってるしな。
05735672010/10/19(火) 10:42:31ID:???
このスレすごい。(;´∀`)
0574nobodyさん2010/10/19(火) 11:17:20ID:???
は〜わかんね。perlのモジュール。(;´Д`)
0575nobodyさん2010/10/19(火) 11:43:50ID:???
sprintf("%d", 680*1.4)
が951になる理由を教えてくれ
0576nobodyさん2010/10/19(火) 12:10:30ID:???
理由はわからんなぁ。。でもそういう内部処理を解説してるサイトどっかで見た
1.4が少数部持ってるから掛け算した結果も小数部を持つ952
これを%d整数としてはめ込むときにどうにかしてるんだから (680*1.4) . ''で
一旦文字列にすれば952になるだろうね
0577nobodyさん2010/10/19(火) 12:16:23ID:???
掲示板作ってるのですが、なぜ2ちゃんねるはdatファイルでログを作成しているのでしょうか?
textファイルじゃダメなんでしょうか?
2ちゃんねるのログをそのままtextファイルを使用した場合のデメリットなどがあったら教えてください
0578nobodyさん2010/10/19(火) 12:17:24ID:???
>>575
丸め誤差でぐぐれ
0579nobodyさん2010/10/19(火) 12:23:44ID:???
>>577
ただのテキストだと本文に他の記事をコピペされると記事の区切りとか
わかんなくなったりするので、はっきり区別がつくように特別な約束を決めて
あるわけだな。
0580nobodyさん2010/10/19(火) 12:24:07ID:???
2ちゃんねるのログはテキストファイルだよ。
0581nobodyさん2010/10/19(火) 13:11:09ID:???
そういや今ふと思ったんだが2chといい何で今の掲示板には必ずといっていいほど
メール欄[ ]
↑これがあるけど、需要ねぇだろコレ
マジ何でほぼ全ての掲示板に共通してあるんだよ
0582nobodyさん2010/10/19(火) 13:27:15ID:???
事実上sageって書く欄になってしまってるがいきなり名前を変えたら
混乱するからな。
0583nobodyさん2010/10/19(火) 13:42:10ID:???
拡張子なんて飾りです……偉い人にはそれが分からんのですよ
05845752010/10/19(火) 18:46:36ID:???
機械の中は2進数の世界というのが理由か
680*14/10 として小数を使わなければいい
よくよく考えてみたら当たり前の話だな


intで切り捨てとかsprintf使えとか言うてるサイトは死滅してくんねーかな
0585nobodyさん2010/10/19(火) 18:55:35ID:???
自分の知識の無さを放っておいて氏ねですかそうですか
0586nobodyさん2010/10/19(火) 19:08:01ID:???
int も、 sprintf も、POSIX qw(floor) も、「0.5 足せ!」も、
浮動小数点の丸め誤差を理解出来てない奴が、
適当に解説するのは止めてくれ!と心底思うが

584に言われたくは無いだろーなあ。
0587nobodyさん2010/10/19(火) 22:56:38ID:???
みなさん、モジュールについてはどう学習していますか?
書店で関係書籍を見る限り、モジュールについて詳しく書かれている書籍はほとんど無いと思うんですが。
やっぱりCPANを直接読むんですか?英語だと思うんですが・・
0588nobodyさん2010/10/19(火) 22:58:42ID:???
>>581
いやあ、私は時々使いますよ。
運営側としては名前もメール欄も使うべきものなんだと思ってます。
多くの人が使わないようだけど、本来は使ってしかるべき機能かと。

名前も連絡先も明らかにせずにいきなり話に入るなんていうのがリアルで当然にはなって欲しくないです。
0589nobodyさん2010/10/19(火) 23:04:52ID:???
>>587
山程ある
0590nobodyさん2010/10/19(火) 23:10:44ID:???
>>589
モジュールに詳しい書籍はほとんど無いかと。
載っているものはあるにはあるけど。
0591nobodyさん2010/10/19(火) 23:11:55ID:???
そんなに難しい英語でもないだろう…
あとはperldoc.jp
0592nobodyさん2010/10/19(火) 23:12:03ID:???
>>590
いや、だから山程あるっつーに。
0593nobodyさん2010/10/19(火) 23:12:07ID:???
>>587
英語ぐらい読めよ。技術文書はそんなに難しくないぞ。特にコンピュータ系の
専門用語は英語そのままカタカナにしたのが多いから楽だよ。
0594nobodyさん2010/10/19(火) 23:14:58ID:???
今、モジュールについて学んでいるんですが、
何か良い書籍はありませんか?
知りたいのは主に以下のもの

CGI
LWP::UserAgent
HTTP::Request
Jcode
XML::DOM
XML::Parser

0595nobodyさん2010/10/19(火) 23:19:46ID:???
全部ネットで情報が得れる
0596nobodyさん2010/10/19(火) 23:20:48ID:???
>>587-595
>>1
【Perl,CGI】参考書籍 第四版
http://hibari.2ch.net/test/read.cgi/php/1250989562/
参考書籍推薦スレッド
http://hibari.2ch.net/test/read.cgi/php/1014836425/
【総合】 Webprog板質問雑談スレッド 1
http://hibari.2ch.net/test/read.cgi/php/1131016915/
0597nobodyさん2010/10/19(火) 23:31:32ID:???
あれ、以前、検索エンジンからの検索語を取り出す話をした時に、
エンジンによって振り分けて処理するしかないって結論になってなかったっけ?
Jcodeモジュールでできるのでは?
0598Perl忍者 ◆M5ZWRnXOj6 2010/10/19(火) 23:36:59ID:I4QlovXi
検索力がない奴はモジュール使えない
0599nobodyさん2010/10/19(火) 23:40:37ID:???
あららw Jcodeモジュールで文字化けもあった検索語の抽出が一気に直ってしまったw
これって検索エンジン毎に分岐しなくてもいいんじゃないかな?
以前、質問したら自信満々に 「エンジン毎に分けるしかないでしょうね」 とか言われたけど、
そんなことないじゃないか。
0600nobodyさん2010/10/20(水) 00:01:49ID:???
スゴイw
何行にも渡って処理していた日本語変換が2行ほどになってしまったw
モジュールスゴイね。(;´∀`)
0601nobodyさん2010/10/20(水) 01:36:24ID:???
今時Jcode.pmかよwって思ったけどなんでEncode.pmが使われるようになったの?
日本語の変換するならJcode.pmで十分実用に足るんじゃないの?
0602nobodyさん2010/10/20(水) 02:33:30ID:???
え、今時って、Jcodeよりもっといいものがあるってこと?
充分に単純化できてるし、効果も得てるんでこれでいいと思ってる。
2行を1行に出来たところでさしたる差はないから。

Encodeは正直まだどういうものなのかわかってない。
文字コード変換と日本語変換の違いなのかな?って想像してる。
0603nobodyさん2010/10/20(水) 02:58:27ID:???
Perlが5.8.1以降の場合、JcodeはEncodeのラッパーとして振る舞います。
0604nobodyさん2010/10/20(水) 05:24:47ID:???
>>602
初心者だったらJcode.pm使うよりは素直にEncode使ったほうがいいような気も。
Jcode.pmを使ってるサンプルスクリプトは、
pre-modernで参考にしない方がいいものも結構あるし。
0605nobodyさん2010/10/20(水) 07:06:43ID:???
Encodeは文字列をバイトストリームでなく文字(Unicode)として認識させたいときに使うのかな?

$string =~ tr/一二三/壱弐参/;
0606nobodyさん2010/10/20(水) 08:28:58ID:???
それはuse utf8の仕事ではなかろうか
0607nobodyさん2010/10/20(水) 11:33:27ID:???
ちなみに、Jcodeを使っているのは自作のアクセス解析
これまではjcode.plやutftosjisとかを検索エンジン毎に分岐し、更にキーワードが入ったパラメーター名毎に分岐して入手していました。
モジュールJcodeを使ったら何十行にも渡っていたものが短い2行に。
モジュールの威力を知った。
0608nobodyさん2010/10/21(木) 02:33:10ID:???
Emacs使ってる人いる?
すごい高機能なんだって?本で知って興味持ってる。
昨日話したJcode、その後も順調に機能してるよ。以前はどうしても文字化け出てきちゃうのもあったんだけど、
いまやほとんど無し。

ありがたやありがたや。
0609Perl忍者 ◆M5ZWRnXOj6 2010/10/21(木) 07:33:22ID:im6AkfLS
得意気にEmacs使いほざいてても
成果物がクソとかプログラミングもクソなやついるから

あーあーあのubuntu厨見たいなかんじですね(笑)
0610nobodyさん2010/10/22(金) 11:45:08ID:???
そっか
Emacsと言っただけで ほざいてる とか言われるわけか、参ったな。
話に聞いただけでまだこれから試すか否かなんだけどね。
体験者がいたら話聞いてみたいなと。
0611Perl忍者 ◆M5ZWRnXOj6 2010/10/22(金) 16:50:09ID:1atSZw6K
Emacs興味もってるから死ねよ
0612Perl忍者 ◆M5ZWRnXOj6 2010/10/22(金) 16:54:37ID:1atSZw6K
ごめん
0613nobodyさん2010/10/22(金) 18:49:56ID:???
講義で課題が出たのですがわからないので質問していいですか?
よろしければ問題文を張るので協力御願いします。
あと、もし他に相応のスレがあるなら誘導御願いします。

0614nobodyさん2010/10/22(金) 18:54:45ID:???
宿題は自分でやれ
0615nobodyさん2010/10/22(金) 20:01:30ID:???
相応のスレぐらい自分で探せ
■ このスレッドは過去ログ倉庫に格納されています