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

Perl 初心者コーナー Part23

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん03/05/16 11:18ID:zDRBc/j4
いらっしゃーい、Perlのコーディングで困ってる人のスレです。

【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。

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

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


CGIだけど、なんか質問ある? Part 10
http://pc2.2ch.net/test/read.cgi/php/1048686475/
【Perl,CGI】参考書籍 第三版
http://pc2.2ch.net/test/read.cgi/php/1030209573/
CGIに依存しないPerlの話題一般/Part2
http://pc2.2ch.net/test/read.cgi/php/1030548610/
スクリプトの改造依頼は、【 スクリプト改造工房 PART 6 】
http://pc2.2ch.net/test/read.cgi/php/1047806915/

過去ログやお勧めサイトは >>2-10
023713903/05/21 00:00ID:DxtaiKT1
>>236
おぉ。。できました。ありがとうございます
0238nobodyさん03/05/21 00:04ID:???
初々しくて良い
0239nobodyさん03/05/21 00:04ID:???
>>234
普通に
print "<textarea>", @data, "</textarea>\n";

または
$" = '';
print "<textarea>@data</textarea>\n";

特殊変数 $" の値を変更することで、ダブルクォート文字列内で
配列を展開するときのセパレーター(要素間に挟み込まれる文字
デフォルトは半角スペース)を好きな文字に変更できる。
覚えておいて損はないよ。
0240_03/05/21 00:05ID:???
( ´Д`)/< 先生!!こんなのが有りますた。
http://togoshi.ginza.st/2ch/2ch05.html
http://www.togoshi.ginza.st/2ch/
http://www.togoshi.ginza.st/2ch/2ch03.html
http://togoshi.ginza.st/2ch/2ch02.html
http://www.togoshi.ginza.st/2ch/2ch08.html
http://togoshi.ginza.st/2ch/2ch06.html
http://www.togoshi.ginza.st/2ch/2ch10.html
http://togoshi.ginza.st/2ch/2ch04.html
http://www.togoshi.ginza.st/2ch/2ch07.html
http://togoshi.ginza.st/2ch/2ch01.html
http://www.togoshi.ginza.st/2ch/2ch09.html
0241nobodyさん03/05/21 00:54ID:???
>>209
レスがないってことは、この関数の部分はとくに問題ないってことなんでしょうか?
024213903/05/21 01:10ID:DxtaiKT1
>>239
それためになります。
ありがとうございます
0243nobodyさん03/05/21 01:12ID:???
欲しい情報を見つけることが出来なかったので、
ご存じの方がいましたら教えていただきたいのですが。

perlスクリプト中のperl呼び出し時に起動オプション[-w]を付けて書いています。
そうしても処理結果自体は欲しい結果が得られるのですが、
警告文として、以下のものが出力されます。

警告文
Use of uninitialized value in string eq at test.cgi line 10.
Use of uninitialized value in string eq at test.cgi line 52.

該当スクリプト記述
10 : if ($ENV{'REQUEST_METHOD'} eq "POST") {
52 : if ($form{'key'} eq '')

http://www.att.or.jp/perl/man/perldiag.1.html
ここの情報で未定義値を初期化しないで使用しているという
原因までは解ったのですが、if文のeqに対してどう初期化を
行えば良いのか、解決策を探すことができませんでした。

この問題の解決方法をどなかたご教授下さい。
0244nobodyさん03/05/21 01:14ID:???
>>243
10 : if ($::ENV{'REQUEST_METHOD'} eq "POST") {
52 : if ($::form{'key'} eq '')

こうしてみたらどうよ?
024524303/05/21 01:16ID:???
追記
警告文には他にも以下のものがありました。
Use of uninitialized value in split at ./test.cgi line 15.
Use of uninitialized value in join or string at ./test.cgi line 103.

split とか join と関数が指摘されているようですが、
これらの関数を使用する前に初期化が必要なんでしょうか?
0246nobodyさん03/05/21 01:18ID:???
>>245
面倒くさい。
できるだけまとめて、ソース晒す事できないのか?
0247nobodyさん03/05/21 01:18ID:???
>>241
> open(MAIL,"| $MyPathSendmail -t");
を、
open(MAIL,">&STDOUT");
にしてひとまず標準出力に吐き出して確認してみたら?
あと「sendmail -t」を調べてみる。
024824303/05/21 01:20ID:???
>>244
ご指摘の通りに変更してみましたが、結果変わらずでした。
警告文のあるeqではなく、そこで扱っている変数に問題があるんでしょうか?
024924303/05/21 01:21ID:???
>>246
すみません。部分抜き出して、試せるソースを用意してみます。
0250nobodyさん03/05/21 01:22ID:???
>>248
ちなみに、-w付けなかったら動くのか?
025124303/05/21 01:33ID:???
部分抜きだしで、こんな感じです。
この状態だけでも警告文は同じく出ました。
よろしくお願いします。

>>250
-wを付けても結果は同くじ得られるのですが、
警告文が出ている以上、何かしらスクリプトの
書き方が間違っているものだと思いまして、
その原因を突き止めておきたいのです。

#!/usr/bin/perl -w

(%form) = &get_form('sjis');

if ($::form{'key'} eq '') { print 'A key is not found.'; }

sub get_form {
local($charset) = @_;
if ($charset eq '') { $charset = 'euc'; }
if ($::ENV{'REQUEST_METHOD'} eq "POST") {
read(STDIN, $form_data, $ENV{'CONTENT_LENGTH'});
} else {
$form_data = $ENV{'QUERY_STRING'};
}
続く
025224303/05/21 01:34ID:???
改行数で怒られたので分割ですみません。

続き
(@key_value) = split(/\&/, $form_data);
foreach (@key_value) {
($key, $value) = split(/=/, $_);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
&jcode::convert(\$value, $charset);
$FORM{$key} = $value;
}
return (%FORM);
}
0253nobodyさん03/05/21 01:46ID:???
>>251-252

気にたった点。
  >(%form) = &get_form('sjis');
  (%form)の()を外した方がよさそう。

  >local($charset) = @_;
  特別な意味がない限りmyを使う事を推奨されてたと思う。
  myの方が早いし。

  >return (%FORM);
  これも()を外した方がよさそう。


・・・力になれなかったかも・・・
スマソ



0254nobodyさん03/05/21 01:48ID:???
あ、ちなみに、上記ソースで俺の環境(Win2k、Perl5.8)では、文法エラーも何も出なかった。
0255nobodyさん03/05/21 01:52ID:???
>>243
結論から言えば、何も問題ない。
-w を付けて尚かつ一切の警告を受けたくないということなら
疲れるだけだから止めた方がいいよ。

ちなみに -w をつけると

・一度しか使われない識別子
・値をセットせずに参照されるスカラー変数
・サブルーチンの再定義
・未定義のファイルハンドルの参照
・読み出し専用でオープンしたファイルハンドルへの書き込み
・数値以外を数値として扱った場合
・配列をスカラーとして扱った場合
・深さが100以上のサブルーチンの再帰呼び出し
・その他いろいろ

に該当する時、警告されます。
変数を初期化なしで使うなんてperlでは当たり前のことでも
イチャモンつけて欲しいなら別だけど、普通はデバッグ時に
意図しないで上記のことをしていないか診断したいときにだけ使います。
025624303/05/21 01:55ID:???
>>253
ご指摘ありがとうございます。
なるほど、これから気を付けて行きたいと思います。

こちらの環境はRedhat8.0/Perl5.8なのですが、
perlのバージョンは同じようですし。うむぅ。

実行出来ない訳ではないので、黙殺しても良い部分だとは思うのですが。

どうもありがとうございました。
0257nobodyさん03/05/21 01:56ID:???
>>251-252
その警告の行以外に原因があるようだな

$charsetにlocalをつけておきながら$form_dataや@key_valueを
そのまま使っているし、全体を見ないとなんとも言えないな
025824303/05/21 02:05ID:???
>>255
な、なるほど(汗
perlを始めたばかりで、初めのうちから正しい書き方を
身につけようとか思っていたのですが、どうやらそれが
良いことばかりでは無いようですね。

素直に黙殺します。

これからは-wはデバッグ時のみ実行する事にします。

ご指摘いただきました方々、色々とありがとうございました。

>>257
おっしゃる通りです。
警告文が該当している箇所を急いで抜き出したものでしたので。
変数とかの扱いをちゃんと書いて、最終的にもう一度確認して行きたいと思います。

0259nobodyさん 03/05/21 02:08ID:???
$charset自体は指定してるの?
026024303/05/21 02:24ID:???
>>259
抜き出したスクリプトでも(勿論、元スクリプトでも)
&get_form('sjis');
とサブルーチンに値を渡しているので、平気だと思います。
実際に元の方の出力はsjisになってましたし。
026120903/05/21 02:28ID:???
>>209
にレスがないってことは、関数自体は問題ないってこと?
0262nobodyさん03/05/21 02:30ID:???
>>261
しつこい!
ダミーで出力して自分で見れ!
0263nobodyさん03/05/21 05:21ID:???
>>258
use warnings (-w)は別にいつも付けてる必要はないけど、
use strictでコードする癖をつけないと後で泣くよ。
0264nobodyさん03/05/21 07:17ID:???
コードするってなんだよ。
0265nobodyさん03/05/21 09:11ID:???
動詞の原型に「する」を付けて日本語化するのは
ポピュラーな方法だぞ?
コーディングする、の方が言葉として変。
0266nobodyさん03/05/21 09:38ID:???
コードって名詞なんですけど。
灰皿する。
机する。
本する。

ま、どーでもいいけど。
026726403/05/21 09:43ID:???
>>265
この場合はおかしいと思わないか?

>>266
一応英語では動詞でもある。でも日本語の中で使う場合は名詞だよなぁ。
0268nobodyさん03/05/21 09:55ID:???
>>266
怪我する
026921003/05/21 10:16ID:???
>>210(>>233) ですが、
どなたかファイナルアンサーください
0270nobodyさん03/05/21 10:21ID:???
>>269
特に問題がないのならそれでOK。

0271nobodyさん03/05/21 11:21ID:???
んなことどうでもいいし。

perlスレはもうやめたのか。
0272nobodyさん03/05/21 11:29ID:???
英語の知識に欠ける人間が他人に無知を押し付けるスレはここですか?
0273nobodyさん03/05/21 12:47ID:???
非常識な人間が非常識なことを(ry
0274nobodyさん03/05/21 15:39ID:???
>>269
>$in{'mailbody'} =~ s/<id>/$id[$i]/ig;
>だと、
>$id[0]の値に置換されてしまいます。
正規表現では[ ]は意味を持ってしまうのでエスケープしないと

$in{'mailbody'} =~ s/<id>/$id\[$i\]/ig;
0275nobodyさん03/05/21 16:19ID:???
>>274
ワロタ
もすこしがむばりましょう。
0276nobodyさん03/05/21 16:50ID:???
なるほど!と思ったら違うのか…
0277Perl/CGI03/05/21 17:01ID:XtYsWXu+
>>224
すいません、そういうことでしたか。
$fileiniが指定してるのは
初期設定ファイルのことで、admin.iniの形式にしてます。
んでそのファイルの中身は以前書いたものになってます。
レス遅くなってすいません。
0278動画直リン03/05/21 17:08ID:JZ9K0e/X
http://homepage.mac.com/hitomi18/
0279ど初心者03/05/21 17:08ID:???
みなさんどのようにしてPerlを覚えましたか?
私は すぐわかるPerl => 初めてのPerl以降詰まってます。
0280nobodyさん03/05/21 17:46ID:???
>>279
名前は忘れたけど、地球儀みたいな絵が書いてあるPerl/CGI入門書から入った。
すげー分かりやすく、それだけで、簡単な掲示板が作れるようになった。
↓
「CGIのための 実践入門Perl」
黄色い鍵の絵が書いてある本。
これも、かなり分かりやすい本だった。
俺のバイブル。
↓
「新Perlの国へようこそ」
サルが温泉つかってる絵がかかれてる。
上の2冊読んでたら、理解できるはず。
書いてる事は、ちょっと難しいが、リファレンスやらオブジェクトやら勉強できる。
↓
「ラクダ本」
全部なんて読んでない(w
この関数の詳しい動きが知りたい!
そんな時に開く本として置いてある。
最強の本だけど、いきなりすべてを知ろうとして読むと、
挫折するっぽい。

と、現在中級者のちょっと上レベルの俺が言いたい事は、
「Perlで作るCGI入門 基礎編」 この本は、読みにくく俺にとっては無駄遣いしたとしか思えない
・・・と。
0281ど初心者03/05/21 17:57ID:???
>>280
了解です!ラクダは辞書的な読み方をすればいいんですね!
進めて頂いた入門的な本も探してみます。
あらっしたぁ!
0282210=(269)03/05/21 17:58ID:???
>>274
>>$in{'mailbody'} =~ s/<id>/$id[$i]/ig;
>>だと、
>>$id[0]の値に置換されてしまいます。
>正規表現では[ ]は意味を持ってしまうのでエスケープしないと

やっても、結果同じなんですけど・・・・
0283nobodyさん03/05/21 17:59ID:zxc8lPDx
CGI&perlポケットリファレンス

地味でへたれっぽいけどすごくちゃんとした内容。
ラクダよりも、ちょっとしたリファレンスとしては便利。
0284ど初心者03/05/21 18:01ID:???
>>283
あらっしたぁ!
買います。
あらっした。
0285ど初心者03/05/21 18:10ID:???
え〜っと「あらっした=有難う御座いました」です・・・
0286nobodyさん03/05/21 18:31ID:???
オイラもCGI書くためにPerlを習いだしたけど、
>>283のはすごく良い。

頭で覚えるより>>283のを一冊脇に置いて、
実際に簡単なスクリプト書いてみるのが一番覚えやすい。
こうしたいけどどうしたら良いんだろう?とか
「疑問→解決」が一番吸収しやすいしね。
0287nobodyさん03/05/21 18:52ID:???
初心者向けじゃないけど
「Effective Perl」
いい本だ
0288nobodyさん03/05/21 19:21ID:???
↓のスレ、まだあったんだ。オイラが本買うのにだいぶ参考になったスレ。

【Perl,CGI】参考書籍 第三版
http://pc2.2ch.net/test/read.cgi/php/1030209573/
0289ど初心者03/05/21 20:57ID:???
>>286->>288
ありがとう御座います。凄く参考になりました。
これをきっかけにパールマスター(パールをマスターした人)を目指してみます。
有難う御座いました。
0290nobodyさん03/05/21 20:59ID:???
私は、とほほのPerl入門のリファレンスと
ひたすら既存のスクリプト改造で育ったかな。
本はポケットPerlリファレンス買った。
0291nobodyさん03/05/21 21:02ID:???
ポケットPerlリファレンス=>>283と同じの
適当に題名書いちゃった…(*´ー’
0292nobodyさん03/05/21 21:02ID:???
>>290
ページごとに完結してるから見やすいのがいいやね。
まさにリファレンス。
0293nobodyさん03/05/21 21:09ID:???
Perlでcgi組んでてオブジェクト指向してもないのに、
画面遷移図をUMLのステートチャート図で書いてるのって変ですかね?
0294nobodyさん03/05/21 21:12ID:???
>290
俺はとほほさんとこのをプリントアウトして使ってる。
ちょっと調べたい時とかは、らくだ本みたいに大きくもないし便利。
0295nobodyさん03/05/21 21:53ID:???
>>98
Unrecognized character \x81 at unique.cgi.
ってでるんですが・・・
029629503/05/21 21:56ID:???
解決しますた・・・
0297nobodyさん03/05/21 21:58ID:???
全角空白が混じってたと思うのだが、解決したならその方法も書いてくれるとありがたい(w
0298nobodyさん03/05/21 22:08ID:???
>>297
寝ぼけてました・・・後でx81か!って気づきました。
その通りです。先頭に全角スペースがあっただけでした。
0299nobodyさん03/05/21 23:03ID:???
暗号化で、1バイトずつ(2バイト文字も上位下位バイトに分ける)を
20ヘキサ引いて、複合化時は20ヘキサ足すってのを作ったんだけど
完全にデコードされないんです。最後の方が化けたり・・・どこが変か教えてくださいです。
CGIっぽいけど許してね

#!/usr/local/bin/perl
use CGI;
$q = new CGI;
print $q->header('text/html; charset=euc-jp');
if( $q->param ){
  $n = $q->param('name');
  print "en=",&encode($n);
  print "<BR>";
  print "de=",&decode($n);
}
print $q->start_form, $q->textfield(-name=>'name'), $q->submit, $q->end_form;
sub endecode{
  my($name)=shift;
  my($diff)=shift;
  my(@w)=();
  my(@w2)=();
  @w = split(//,$name);
  for(@w){
    push(@w2,sprintf( "%c",ord($_)+$diff));
  }
  join("",@w2);
}

0300nobodyさん03/05/21 23:04ID:???
上の続き

sub encode {
  my($name)=shift;
  &endecode($name,hex(0x20));
}
sub decode {
  my($name)=shift;
  &endecode($name,-hex(0x20));
}
0301nobodyさん03/05/21 23:20ID:???
質問。Locationを使って別のページに飛ばしたいんだが、
飛ぶときと飛ばないときがある。なんで?そんなことってあるの?
調べたところ一部のサーバーではLocation禁止というところも
あるみたいだが、うちは飛ぶ。

でも飛ばないときもある…
0302nobodyさん03/05/21 23:26ID:???
>301
PerlというよりCGIの質問だな。
ブラウザごとに飛ぶ飛ばないを調査して、どういう条件で飛ばなくなるかを
自分なりに調査した方がいいと思うぞ。
あとは出力されているヘッダがどうなってるかを調べてみるとか。
どちらにせよスレ違いだから、調査の上で適切なスレへ行きな。
0303nobodyさん03/05/21 23:30ID:???
>>302
調査はした。で、同じ条件・同じ方法で飛ばしてみようとしても
飛ぶときと飛ばないときがある…ますますわからない。

ありがとん。
0304nobodyさん03/05/22 00:12ID:???
>>301
つか、マルチすんな。
0305山崎渉03/05/22 01:55ID:???
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―
0306210=233=26903/05/22 05:04ID:???
>>270
それでOKていうのは、

$tmpid = $id[$i];
$in{'mailbody'} =~ s/<id>/$tmpid/ig;

でOKってことですか?
というか、それしか、やりようがないということなのでしょうか?
なんかキモイスクリプトだなーと思ったもので。
0307nobodyさん03/05/22 06:23ID:???
まだやってたのか…
人に聞くより自分でアレコレ試した方が早いことも多いよ?

270じゃないが、
$in{'mailbody'} =~ s/<id>/$id[$i]/ig;
で、文法的にも何も問題ない。

置換前に
print "\$i=$i \$id[\$i]=$id[$i]\n";
と一行書いて、変数に何が入ってるか確認。
0308nobodyさん03/05/22 10:15ID:???
なにこれ。
新種の山崎登場?

とりあえずage
030921003/05/22 10:43ID:???
>>307
それやってみたら、ちゃんと出力されてるんですよね・・・
なのに、変換すると、以下の文章(メールですが)で、$id[0]、$name[0]、$email[$i]
が出力されてます。
おっしゃるとおり、もっと自分でアレコレ試してみたいんですが、
しかし、これ以上どこを試せばいいのか・・・?
なんか手がかりというかポインタでいいので、教えていただけませんか?

 for ($i=0; $i<=$#email; $i++) {
     #TODO:ここ動かないのでペンド中
     #本文への差込
     $in{'mailbody'} =~ s/<id>/$id[$i]/ig;
     $in{'mailbody'} =~ s/<name>/$name[$i]/ig;
     $in{'mailbody'} =~ s/<email>/$email[$i]/ig;

     $in{'mailbody'} .= "\$i=$i \$id[\$i]=$id[$i]\n";
 }
0310nobodyさん03/05/22 11:37ID:???
>>309
$i以外を使ってみろ!といってみるテスト。
for (0 .. $#email) { # など・・・
それでもだめならPerlのバージョンさらし+環境さらし。
031131003/05/22 11:40ID:???
あ、もしかしたら\n含んだ文字列か?>$in{'mailbody'}
そりなら/igs;
031230703/05/22 12:40ID:???
>309
ひとつの $in{'mailbody'} に対して、@mail 要素数だけ置換繰り返すの?
置換した結果を置換して、それをまた置換した結果を置換…以下ループ(´Д`;)
まず間違いなくその辺に問題があるんじゃない?

>311
行頭や行末を使ったマッチングじゃないので /s は関係ないぽい。
0313nobodyさん03/05/22 13:26ID:???
>>299
CGI部分は端折って試したけど、普通に動作したよ。Shift_JISでだけど。
ちょっと見た感じ、print のとこで encodeにもdecodeにも同じ $n 渡してるけど、
decodeには encodeした文字を渡さないと意味ないんじゃない?
ただ両方表示してるだけというなら片方は化けて当然だよね。

それと、普通そういうのはCGIでテストしないで、まずコンソールでテストするよ。
たとえ最終的にCGIにしても。。問題が切り分けられないからね。
0314nobodyさん03/05/22 20:02ID:???
Perl4の鯖にmy使ったらエラーでまつか?
0315nobodyさん03/05/22 20:52ID:???
>>314
試せよ。

俺はモジュール使いたいんで、
Perl4しかインストールしてない鯖なんか使う気にならんが。
0316nobodyさん03/05/22 20:58ID:???
>314
出た
0317nobodyさん03/05/22 21:10ID:???
perl4の人は、なんでバージョンアップしないの??
あとちょっとで6になりそうなのに・・・
0318nobodyさん03/05/22 21:23ID:???
>317
プロバが放置してるんだもんよ。
0319nobodyさん03/05/22 21:49ID:???
>>317

>>318を補足するならば、
・鯖管理者に技術がない
・鯖管理者に暇がない
・バージョンアップして、今動いているものに不具合が出ることを警戒している
などの理由によって放置されている。

0320nobodyさん03/05/22 21:51ID:???
やめてよー。せっかく5に慣れたのに。
0321nobodyさん03/05/23 00:22ID:???
スクリプト内でperlのバージョンを取得して
結果と一緒に出力させたいんですが、
%ENVにも含まれてないそうで取得の仕方に困っています。

知ってる人がいたら教えて下さい。
0322nobodyさん03/05/23 00:27ID:???
$]
0323nobodyさん03/05/23 00:32ID:???
>>322
出力出来ました。
こんな簡単な質問に答えてくれてありがとうございます。
0324nobodyさん03/05/23 14:42ID:82gPpiu/
他のサイトからtxtファイルを読み出すようなことってできますか?
open(INTXT, "http://aaa.co.jp/readme.txt");
みたいにreadme.txtファイルを開いて表示したいのですがうまくいきません
0325nobodyさん03/05/23 14:46ID:???
>324
LWPで検索。
0326nobodyさん03/05/23 14:47ID:???
ソッケトとか、プロトコルとか、そーゆー言葉知ってますか?
知らなかったら検索してください。
0327nobodyさん03/05/23 14:57ID:82gPpiu/
>>324、>>326
ありがとうございます
その辺をもうちょっと勉強して見ますね。
0328北村貴母緒03/05/23 15:16ID:7vDvDVhJ
お金が欲しい方は相談を受け付けます!
見てください。何でも書いてね!
【2003年 クーポン屋】努力しない人は0円になります。
努力した人は年商3574万円!貴方は参加しますか?
私なら、参加します。
http://www.c-gmf.com/index1.htm
「クーポン屋」「アクセスが1日2000人ほどある人なら、1ヶ月274万円ほど
稼げるビジネスであります。」1日110円で宣伝できるサイトであります。
契約者は年間広告費:40,000円を当社に振込んでいただければ、OKであり
ます。そこで、紹介者として,貴方様専用のCGIフォームを用意しますので、
料金回収無し、ノルマ無し、HPにバナーを貼ればOKであります。パートナー
様の目標は1ヶ月300件ほど契約を成立していただければ,貴方様の口座に
274万円を振込しますので、頑張って営業をしてください。どんな人でも稼げ
ますので、1度でも良いので見てくださいね。
http://www.c-gmf.com/index1.htm
0329nobodyさん03/05/23 15:41ID:???
>>324
ソケットとか知らなくても似たようなことは出来ちゃうもんなあ
楽してやがるぜ
0330nobodyさん03/05/23 16:21ID:???
@ArrayCity の要素の中に、$cityが含まれているかどうかを
調べる以下のコードって、もっとスマートにかけませんか?
(あるいはそういう関数ってないでしょうか?)

$city = "tokyo";
foreach $value (@ArrayCity){
if ($value eq $value){
$Flag = 1;
last;
}
}
0331nobodyさん03/05/23 16:46ID:???
>>330
grep
0332nobodyさん03/05/23 16:49ID:???
$city = "tokyo";
if(grep(/$city/,@ArrayCity)){ $Flag = 1; }
0333nobodyさん03/05/23 17:29ID:???
ソートについて質問があります。

(わかりやすいようにチャンネルとテレビ局名を例にしてます)
@channel = (6,1,8,4,10)
@tvname = ('tbs','nhk','cx','ntv','asahi');


っていう配列があって、

これを、
@channelの要素の小さい順に、@tvnameの要素をソートすることって
どうすればできるのでしょう?

要は、
@new_tvname = ('nhk','ntv','tbs','cx','asahi');
を取得したいのですが。
0334nobodyさん03/05/23 17:32ID:XGb65p6n
なんで連想配列つかわないの?
キーをソートしたらいいのに・・・
033533303/05/23 18:14ID:???
>>334
あ、そうか・・・すみません
033633303/05/23 19:55ID:???
すいません、やはり、使わないでできる方法ないですか・・・?
スパゲッティ状態で、連想配列に変換しようとしても、うまくいかず。。。
■ このスレッドは過去ログ倉庫に格納されています