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

Perl コーディング初心者質問コーナー Part36

レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん04/07/14 13:23ID:???
いらっしゃーい、Perlのコーディングで困ってる人のスレです。

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

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

最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。

過去ログやお勧めサイトは >>2-10
096795904/08/21 17:24ID:???
>>965
そういえばそうですね;pushしなくちゃって思い込んで間違ってました。
0968nobodyさん04/08/21 17:33ID:???
■■■■■■■■■■■■■■■■■■
■                        ■
■ 臭い方言(特に関西弁)は禁止です ■
■                        ■
■■■■■■■■■■■■■■■■■■
0969nobodyさん04/08/21 17:45ID:???
>>964
headerでいきよることにしましたわ。おおきに。
>>968
おまえ様ルールを押し付けんといてや。
方言があかんなんてアホな話あるかいな。
0970nobodyさん04/08/21 17:47ID:???
>>966
> 返り血をリストコンテキストで評価すると何が返されるの?
そのままリストが返されるかと。。。

> map内の任意の処理結果を返させたい時にはどうするもんなの?
> returnとかやっても期待通りの結果が得られないんだけど。
目的が読めませんね。
単に sub や、 eval にした方がよいのでは?
0971nobodyさん04/08/21 17:51ID:???
>>969
> おまえ様ルールを押し付けんといてや。
> 方言があかんなんてアホな話あるかいな。
おまはんルールで勝手にエセ関西弁使てるのもワヤですわな。
普通にしとけ。
あと、レスポンスのエンティティヘッダな、> Content-type: strings;
RFC 2068 とか読んどけや。
0972nobodyさん04/08/21 18:01ID:???
>>971
>おまはんルールで勝手にエセ関西弁使てるのもワヤですわな。
おまえさんもいつも勝手に標準語使ってはるのやろ?
あんさん言ってることが支離滅裂でっせ。
097395404/08/21 18:08ID:7q3lmCCR
>>970
やりたいことは
@a = qw/1 2 3 4 5/;
$a = join "&",map {
           $value = &test($_);
           $_."=".$value;
         } @a;
こういう感じなんだけど、mapのブロック内のどの処理結果が返されるのかが、明確に理解できてなくて;
一応↑のソースは期待通りの結果が得られるんだけど、今後のために質問してみた。

例えば
@hoge = map { join "i",$_;
       join "w",$_;
      }@a;
なんかの場合は一体何が返るのか一見ではわからないから、サブルーチンみたく明示的にしたいけど
そういう場合はどうするものなのかなって思って。
097495404/08/21 18:10ID:7q3lmCCR
>>973
思いっきり間違えた;
@hoge = map { my $a = $_ + 2;
       my $b = $_ + 5;
      }@a;
とかに変更;
0975大阪に30年住んでますが04/08/21 18:20ID:???
> >おまはんルールで勝手にエセ関西弁使てるのもワヤですわな。
> おまえさんもいつも勝手に標準語使ってはるのやろ?

上のほうは自然に読めるけど、下のは読んでいて気持ち悪いですよ。

# 京都の人っぽいけど「すごく無理して書いてる」という印象を受ける。
0976nobodyさん04/08/21 18:22ID:???
ハッシュの中からキーが英数字のみのものに対してだけ処理を行いたいんですが、
%hash = (
a => 1,
":" => 2,
"_" => 3,
);

foreach ( grep /^\w*$/ , keys %hash ) {
print $_,":",$hash{$_},"<br>";
}

これでは_アンダースコアがあってもマッチしてしてまうのですが、完全に英数字だけにマッチさせるには
/^[a-zA-Z0-9]*$/のような方法しかありませんか?メタ文字から任意の一字を引いたりできるとカコイイんですが。
0977nobodyさん04/08/21 18:25ID:???
(´-`).。oO(アホみたいな質問だな・・・)
0978nobodyさん04/08/21 18:26ID:???
>>975
下手なのは認めるで。そんでも早く慣れな営業できへんのやorz
こないだも
「東京のお人はエライ冷たい感じがしていややわ」
言われてな・・・・大阪弁と京弁の微妙な違いがわからないのよね。

はぁスレ違い。退散するさかい堪忍な。
0979nobodyさん04/08/21 18:26ID:???
>>977
アフォみたいな回答だな
0980nobodyさん04/08/21 18:47ID:???
正規表現の修飾子gて最後までチェックするんだよね?
例えば /a/ なんかの場合はgはなくても1回マッチするまでは検索つづけるyね?
っていうかgってもともと置換演算子の修飾子で、たんなるマッチングの修飾子ではないの?
098195404/08/21 19:01ID:7q3lmCCR
誰かmapについて詳しい人いないかな。
>>980
/a/だけで問題ないよ。
>>976
/[^a-zA-Z0-9]/でいいじゃん。別にかっこ悪くないよ。
0982nobodyさん04/08/21 19:18ID:???
>>980
>gってもともと置換演算子の修飾子で、たんなるマッチングの修飾子ではないの?
もっとよく勉強しましょう
0983黒死犬 ◆EgxBlf8nvc 04/08/21 19:26ID:???
>>976
>メタ文字から任意の〜

[^\W_]
0984nobodyさん04/08/21 19:34ID:???
>>983
お前はアホか。
質問をよく読め。
098597604/08/21 19:40ID:???
>>983
ありがとうございます。
>>984
983さんので大丈夫です。

ありがとうございました。
0986黒死犬 ◆EgxBlf8nvc 04/08/21 20:51ID:???
>>984
人生色々(゚ー´ )b
0987nobodyさん04/08/21 23:47ID:???
>>966
> ちょっと違う質問なんだけど、mapの
> map BLOCK,LIST;
> の書式の場合、返り血をリストコンテキストで評価すると何が返されるの?
BLOCKの返り値をつないだリスト

> @test = ( "a1","a2" );
> @an = map { $_ =~ s/a//g } @test;
> これだとわかりやすく$_を置換したものが毎回の返り血だけど、
そんなこたー無い。
s/PATTERN/REPLACEMENT/egimosx
Searches a string for a pattern, and if found, replaces that pattern with the replacement text and
returns the number of substitutions made. Otherwise it returns false (specifically, the empty string).
なので、@an = (1, 1)

> @test = ( "a1","a2" );
> @an = map { my $a = 5;
>      $_ =~ s/a//g } @test;
> これだとmap内の一行目の代入成功の真(1)が毎回返される。
そんなこたー無い。同上

> @test = ( "a1","a2" );
> @an = map { $_ =~ s/a//g;
>        my $a = 5 } @test;
> 今度は5が毎回返される。
当たり前。

> map内の任意の処理結果を返させたい時にはどうするもんなの?
> returnとかやっても期待通りの結果が得られないんだけど。
return EXPR
Returns from a subroutine, eval, or do FILE with the value given in EXPR.
ドキュメント嫁。
0988nobodyさん04/08/21 23:59ID:???
ぐだぐだ言ってないで次スレ立てろ
0989スレ立てしようとしたら蹴られますた04/08/22 00:21ID:???
...orz
>>2だけですが、リンクを新しいスレッドに変えたものを貼っておきます。スレ立て人募集(泣)。

関連スレ
【Perl上級者コーナーPart01】
http://pc2.2ch.net/test/read.cgi/php/1024741312/
CGI: Common Gateway Interface part 11
http://pc2.2ch.net/test/read.cgi/php/1055597189/
【Perl,CGI】参考書籍 第三版
http://pc2.2ch.net/test/read.cgi/php/1030209573/
★三 【 スクリプト改造工房 PART 8 】 ★三
http://pc2.2ch.net/test/read.cgi/php/1077525387/
【 スクリプト改造依頼スレ 】(丸投げ) part2
http://pc5.2ch.net/test/read.cgi/php/1092304968/
△▲ WebProg 初心者の質問 Part9 ▼▽
http://pc5.2ch.net/test/read.cgi/php/1086715675/
【Perl】ファイルロック(排他処理)について語ろう
http://pc2.2ch.net/test/read.cgi/php/1024795138/
★負荷軽減対策委員会(Perl、PHP)★
http://pc2.2ch.net/test/read.cgi/php/1034645635/
【Perl】掲示板を使ろう!
http://pc2.2ch.net/test/read.cgi/php/988890976/
Perlモジュールについて
http://pc2.2ch.net/test/read.cgi/php/997829243/
CGIに依存しないPerlの話題一般/Part2
http://pc2.2ch.net/test/read.cgi/php/1030548610/
099096604/08/22 00:45ID:???
>>987
おお!やっとエロイ人出現。
なんか966でのソースはテストしたはずなんだけど、思いっきり間違ってたみたい。
結局俺の疑問はブロックの返り血ってことだになるんだよね?

my @test = ( "a1","a2" );
my @an = map { $_=~ s/a//g ; $_.":"."test";} @test;
print @an;
>1:test2:test
これの場合はブロックの返り血がなんで最後の一行だけになるんだろ?
サブルーチンと同じで、returnが省略されてる場合は自動的に最後の一行がブロックの返り血ってことになるってことであってる?

そんな気がするけど、mapのブロックないではreturn使っても動作しないんだけどそこらへんが不思議。
my @test = ( "a1","a2" );
my @an = map { return $_=~ s/a//g ; $_.":"."test";} @test;
print @an;
>
どこにreturnを入れても駄目みたい。元々returnってのは呼び出し元に返すのものだから
駄目とかいう感じなのかな?
0991nobodyさん04/08/22 01:11ID:???
>>990
Returns from a subroutine, eval, or do FILE with the value given in EXPR.
って書いてもらってんじゃん。
大体、エラーが出てるだろ。Can't return outside a subroutine

これは多分だけどさ、
sub func1{
  my @test = ( "a1","a2" );
  my @an = map { return $_=~ s/a//g ; $_.":"."test";} @test;
  print @an;
}
だと、returnはどう解釈すりゃいいんだろうね?ってことじゃね?
どうしても、そんなことがやりたかったら、それ用のサブルーチン作っとけば?
0992nobodyさん04/08/22 01:28ID:???
>>990
うるせぇよマヌケ
0993nobodyさん04/08/22 01:28ID:???
埋め立てすっかな
0994nobodyさん04/08/22 01:30ID:???
0995nobodyさん04/08/22 01:33ID:???
→→→
0996次スレ104/08/22 01:48ID:???
たてますた
0997次スレ104/08/22 01:49ID:???
http://pc5.2ch.net/test/read.cgi/php/1093106507/
0998nobodyさん04/08/22 02:02ID:???
未だに「漏れ」とか言うやついるんだな。
0999nobodyさん04/08/22 02:03ID:???
キモッ!
1000nobodyさん04/08/22 02:03ID:???
次スレはこちら。

Perl コーディング初心者質問コーナー Part37
http://pc5.2ch.net/test/read.cgi/php/1093106507/
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。