トップページ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/
0449nobodyさん2010/10/03(日) 01:10:55ID:???
SSLだから安全(キリッ と言いながら顧客情報ファイルをドキュメントルート内に置いて
世界中に公開する人っているよね。
0450nobodyさん2010/10/03(日) 01:59:17ID:???
>>449
許してやれよ……
0451nobodyさん2010/10/03(日) 08:56:17ID:???
perlってもう駄目だな。
質問スレでさえゴミみたいな煽りしかいない。
0452nobodyさん2010/10/03(日) 09:03:15ID:???
2ch がすべてと思ってるお前ってもう駄目だな
質問スレでさえゴミみたいなお前しかいない。
0453nobodyさん2010/10/03(日) 10:21:43ID:???
マジレスするとどんな奴が集まるかはスレタイ見れば猿でも分かるというのに
0454nobodyさん2010/10/03(日) 12:29:15ID:???
まともな質問さえあれば真剣に答えるよ
0455nobodyさん2010/10/03(日) 12:43:29ID:???
先のマジ吉の件も真剣な対応はされていた

質問者次第でしょ
0456nobodyさん2010/10/04(月) 01:01:42ID:???
古いCGIを見ていると、

hoge'foo()
のような書き方がありますが、これは
hoge::foo()
と等価と考えていいのでしょうか?

この書き方ははじめてみたのですが、最近は推奨されていない書き方なのですか?
0457nobodyさん2010/10/04(月) 01:10:03ID:???
perl4 style foo'bar
perl5 style foo::bar
0458nobodyさん2010/10/04(月) 01:20:44ID:???
ありがとうございます
Perl4の書き方なんですね。

シングルクオートはエディタのシンタックスが対応していないみたいなんで、
表示が乱れてあせりました。
0459nobodyさん2010/10/04(月) 10:26:36ID:pE0m1OKq
>>448
遵守すべき法令とはどんなものがあるか挙げてみよ。
0460nobodyさん2010/10/04(月) 10:27:41ID:???
>>459
飽きたからもういいよ
0461nobodyさん2010/10/04(月) 10:43:02ID:5t40Vj5P
なんだ言えないんじゃないかw
実は知らないのかな?あるいは、単に「法令遵守」って言いたかっただけなのかな?

SSL+レンタルカートでも駄目論者は自分の知識の高さをアピールしたいだけで、
法令遵守論者は自分は違法行為はやってないよってアピールしたいだけとみた。

実は関係法令なんて知らないのにね。
すごいすごいw
0462nobodyさん2010/10/04(月) 10:59:00ID:DXgsUZrn
このスレ住人ってひょっとしたら自分の知識自慢したい中学生かな
0463nobodyさん2010/10/04(月) 11:44:11ID:jxefQVkw
スルーに入ったね
0464nobodyさん2010/10/04(月) 13:25:42ID:???
アホはほっとくのが一番でしょ

法令があることも知らないというのは、さすがにやばいな。
誰か通報してくれないかな。
0465nobodyさん2010/10/04(月) 13:34:54ID:MhLBVfU1
して、触れる法令とやらは?
0466nobodyさん2010/10/04(月) 13:38:57ID:???
>>465
わからないのなら自分で調べたら?
法人なら知らないとマジでやばいよ。
弁護士でも、近くのWeb制作会社にでもいいから金払ってチェックしてもらった方がいい。

俺たちが教えても信じないだけだし、自分で行動して確認した方が確実でしょ?
0467nobodyさん2010/10/04(月) 13:57:28ID:???
相手にすんな。図に乗るだけだから。

こういうやつは一度痛い目にあわんとわからん。


以後放置でお願いします。
0468nobodyさん2010/10/04(月) 14:14:40ID:???
自演乙
0469nobodyさん2010/10/04(月) 14:16:28ID:???
なぜばれたし
0470nobodyさん2010/10/04(月) 14:40:44ID:???
なんか荒れてますね。

ところで今日知ったんですが
qw/aaa bbb ccc/に対して、
/.+?\s/でマッチすると、"aaa "にマッチするんですね
てっきり、"a "かと思っていました

どういう理屈なんですか、教えてください
0471nobodyさん2010/10/04(月) 14:42:35ID:???
いちおう補足すると、"aaa "にマッチしたいような場合、
/^.+?\s/と今まではしていたんですが、
^いらなかったんだなぁ、と
0472nobodyさん2010/10/04(月) 14:45:49ID:???
. 任意の1文字(改行除く
+ 直前のパターンの1回以上の繰り返し
0473nobodyさん2010/10/04(月) 15:11:06ID:???
>>470
最小マッチは「一番短くなるように」マッチさせるのではなく、「条件を満たした時点で打ち切る」と
いう挙動をする。なのでマッチ部分が短くなるよう、マッチングの開始位置までずらすといった事は
してくれない。

qw// は qq// の typo だとして、

> perl -Mre=debug -e "qq/aaa bbb ccc/ =~ /.+?\s/"
Compiling REx ".+?\s"
Final program:
  1: MINMOD (2)
  2: PLUS (4)
  3:   REG_ANY (0)
  4: SPACE (5)
  5: END (0)
plus minlen 2
Matching REx ".+?\s" against "aaa bbb ccc"
  0 <> <aaa bbb cc>     | 1:MINMOD(2)
  0 <> <aaa bbb cc>     | 2:PLUS(4)
                  REG_ANY can match 1 times out of 1...
  1 <a> <aa bbb ccc>    | 4: SPACE(5)
                   failed...
                  REG_ANY can match 1 times out of 1...
  2 <aa> <a bbb ccc>    | 4: SPACE(5)
                   failed...
                  REG_ANY can match 1 times out of 1...
  3 <aaa> < bbb ccc>    | 4: SPACE(5)
  4 <aaa > <bbb ccc>    | 5: END(0)
Match successful!
Freeing REx: ".+?\s"
0474nobodyさん2010/10/04(月) 15:11:23ID:???
/.+\s/ だと貪欲に "aaa bbb " までを食うのは言うまでもないが、
いわゆる最短マッチ、/.+?\s/ とした場合の .+? は最初に \s(空白文字)見つかるまでという意味での最短であって、
マッチの開始位置が最初にマッチした任意の文字(先頭)であることに変わりはない。
0475nobodyさん2010/10/04(月) 16:51:33ID:qA0vUoH8
>>466
知識もないくせに知ったかぶりをするのはやめなさい。
見苦しいですよ?
0476nobodyさん2010/10/04(月) 16:59:31ID:???
よくわかってない人が間違うもとだから最短と呼ぶのはやめよう。
「貪欲でない」といわれればなんだそりゃと思って調べるけど
最短といわれるとわかった気になっちゃうからな。
0477nobodyさん2010/10/04(月) 17:12:45ID:???
なんでPerlの正規表現がちやほやされてるの?
そんなにすごいの?
0478nobodyさん2010/10/04(月) 17:31:14ID:???
>>473-474
は初心者が分かりやすい説明なのか?
人に説明するなら相手にわかり易い説明をなさい。
あなたは道端で人に道を教える時も難解な説明をするのかね?
0479nobodyさん2010/10/04(月) 18:03:40ID:???
ここは道端だったのか……
0480nobodyさん2010/10/04(月) 18:04:08ID:???
>>478
お前がわからんだけだろ。
0481nobodyさん2010/10/04(月) 18:10:59ID:???
ああわけわからんよ。
初心者なんでね。
いつからここは熟練者スレになったのかね?
0482nobodyさん2010/10/04(月) 18:13:45ID:???
perlってもう駄目だな。
質問スレでさえゴミみたいな煽りしかいない。
0483nobodyさん2010/10/04(月) 18:18:19ID:???
>>481
君が質問者だったらもっと丁寧に質問するが
君は質問者じゃないだろ?

質問があれば質問者のレベルに応じて解答する
今回の場合は質問者は正規表現の書き方を理解しているので、
そのデバッグ手法を説明しているだけ。

君のたとえで言うと、
道端で道を聞かれても、その人を対象にではなく
3歳児を対象に「右」がどっちかっていう説明から始めるのと同じ。


粘着なんてしてないで、XSSについて調べてきたら?
0484nobodyさん2010/10/04(月) 18:35:22ID:???
>>483
おいおい、どうしておれがXSSについて調べる必要があるんだい?
0485nobodyさん2010/10/04(月) 18:46:52ID:???
そうね。
XSSより前に、本を読む練習からしないとね。

のんたん何かどうだ?
0486nobodyさん2010/10/04(月) 18:49:24ID:???
? は ?に続く文字が見つかった時点までマッチ

と思ってりゃいいよ
0487nobodyさん2010/10/04(月) 18:51:11ID:???
バーバーパパの方がオススメだろ
0488nobodyさん2010/10/04(月) 18:51:43ID:???
千秋ディスってんじゃねーぞ子ら
0489nobodyさん2010/10/04(月) 18:53:49ID:???
>>485
どうしておれが本を読む練習をしないといけないんだね?
0490nobodyさん2010/10/04(月) 19:40:20ID:???
スルーしろよ……耐性足りんぞ
0491nobodyさん2010/10/04(月) 22:30:47ID:???
はいはいリファレンスはポインタみたいなもんだよ
ひとりで完璧に安全なプログラム作れる天才さんはこれで理解したろ?
さっさと糞脆弱なショッピングカートでもなんでも作ってなさいってこった
0492nobodyさん2010/10/04(月) 22:56:59ID:???
ちげーよバカw
0493nobodyさん2010/10/04(月) 23:19:29ID:???
いやまあその名の通り参照なんですけどね
0494nobodyさん2010/10/05(火) 00:02:50ID:???
なんかこう...教えてるつもりの奴が馬鹿しかいなくなった。
0495nobodyさん2010/10/05(火) 00:30:28ID:cRXiRLz+
プロの熟練者さんはどのレスとどのレスが同一人物なのかわからなくなってるようで。
さすがですね。プ
04964702010/10/05(火) 01:31:17ID:???
>>473-474
よく分かりました。
なにを勘違いしていたのかわかりました。
(qwとqqを書き間違えたのはご愛嬌で)
0497nobodyさん2010/10/05(火) 03:45:37ID:???
毎晩このスレを見るのが楽しみになりそう

バカな人間を見て、自分はこうならないようにと頑張れる

・知ったかぶりをしない
・わからないことは素直に聞く
・人に言われたことは、疑わずに調べる
・自分の知識を過信しない
・必死にならず冷静に
・日々勉強をする
・分厚い本を読む
・自演はばれないようにする

これは肝に銘じておこう
0498nobodyさん2010/10/05(火) 07:39:14ID:???
出来ればコテつけてほしい
NG出来ない
0499nobodyさん2010/10/05(火) 08:55:44ID:???
読まなきゃいい
0500nobodyさん2010/10/05(火) 12:33:50ID:???
こんなことを言われました

Perl使いが何十億人もいるのに今からPerlを覚える必要はない
やるならPythonかRubyやれ

本当ですか?
0501nobodyさん2010/10/05(火) 12:56:06ID:???
うそです。

> Perl使いが何十億人もいるのに
そんなにいません

> 今からPerlを覚える必要はない
でも、もしそんなにたくさんいたとしても、
だから覚える必要はないということはありません。
「英語を使える人は10億人を超えるのに、今から英語を覚える必要はない」
と言われたらあなたはそれに納得しますか?

> やるならPythonかRubyやれ
この3つはそれぞれ有用です。
職業プログラマーになりたいんだったら全部やりましょう。
趣味でちょっとしたものを工作するならどれか一つでも構いません。
どれをやってもあなたの世界は広がります。

暇だから、gizmodo翻訳風に釣られてみた。
0502nobodyさん2010/10/05(火) 13:03:00ID:???
それぞれの質問スレを覗いてみるのも有用かと。
スレの雰囲気や回答者の質など。
0503nobodyさん2010/10/05(火) 13:03:19ID:???
>>501先生ありがとうございます
Perl,Python,Rubyを覚えるとしたらどの順番で覚えたほうがいいでしょうか?
0504nobodyさん2010/10/05(火) 13:04:56ID:???
N88BASIC
0505nobodyさん2010/10/05(火) 13:37:27ID:tVnNPBxi
その日が祝日だった場合は赤い文字で祝日の名称を表示したいのですが、
祝日ってかならずしも定日ではないんですよね。第二日曜日とか第三とか。
こういう場合はみなさん、どう振り分けていますか?
0506nobodyさん2010/10/05(火) 13:43:00ID:???
春分秋分みたいにかんたんな規則じゃ求まらないのがある以上は
祝日データを持つしかないと思う。
0507nobodyさん2010/10/05(火) 13:44:06ID:tVnNPBxi
つまり、毎年1年分の休日データを手動で更新するってこと?
0508nobodyさん2010/10/05(火) 13:50:36ID:???
そう。気の利いたアプリなら祝日データ配信機能をもたせてどっかkら
配ったりするかも。あるいは自動バージョンアップ機能に含めるとか。

なんしろ勝手に法律かわったり天皇が代替わりしたりするわけで計算
じゃどうにもならんよ。
0509nobodyさん2010/10/05(火) 13:59:52ID:???
第二月曜とか第三月曜とかくらいまでは計算でなんとかならんかな?
0510nobodyさん2010/10/05(火) 14:33:00ID:???
振替休日の判定式も忘れないでね。
去年のシルバーウィークは
まともに休日表示されてないカレンダーが多かった。
0511nobodyさん2010/10/05(火) 14:38:28ID:???
SWはいらないよ。
http://ja.wikipedia.org/wiki/%E3%82%B7%E3%83%AB%E3%83%90%E3%83%BC%E3%82%A6%E3%82%A3%E3%83%BC%E3%82%AF
0512nobodyさん2010/10/05(火) 15:04:31ID:???
Calendar::Japanese::Holiday
0513nobodyさん2010/10/05(火) 16:32:15ID:???
モジュールってやつですか?
use で使えばいいのかな?
ググレカスですかそうですか。
0514nobodyさん2010/10/05(火) 19:15:19ID:???
土日を含まない祝日に挟まれた平日は祝日

だっけ?

めんどくせぇなぁww
0515nobodyさん2010/10/05(火) 19:17:52ID:???
毎年祝日データを載せてるサイトがあればそこから毎年抽出すればいいと思うが
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
};
■ このスレッドは過去ログ倉庫に格納されています