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

Perl 初心者コーナー Part22

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

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

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

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


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

過去ログやお勧めサイトは >>2-10
0717nobodyさん03/05/09 00:42ID:???
>>716
>>715
0718nobodyさん03/05/09 00:44ID:???
それっぽっちテストプログラム書いて試せばいいじゃん
0719nobodyさん03/05/09 00:45ID:???
sortってバブルソートを使ってるのですか?
0720nobodyさん03/05/09 00:47ID:???
クイックソートでは
072172003/05/09 00:48ID:???
Cのライブラリを使っていたら(Cの)処理系依存だね。
0722nobodyさん03/05/09 00:49ID:???
combsortはどう?
072370603/05/09 01:04ID:???
ええと、文書を考えたのですが頭が混乱ぎみでうまく説明できそうにありません。
そこで俺がやりたい事を具体的に書こうと思います。

現在RPGを作ってます。
【@並び替えたリスト = sort {ルーチン} @リスト;】
「リスト」には、戦闘参加メンバーが順番に入ってます。
「並び替えたリスト」は、「リスト」のメンバーを素早さ順にしたいわけです。

ただ、各々の「素早さ」を取得するのが少々めんどうで、素早さが入っている変数名がダイレクトに分からないのです。
${"メンバーデータ$リスト[0]"}{'素早さ'};
こーゆー感じで書いた場合、メンバー一人分の素早さを取り出す事が出来ます。
「リスト」の中には何人いるか分かりませんが、全て戦闘参加メンバーです。
で、もし五人だった場合、
${"メンバーデータ$リスト[0]"}{'素早さ'}から${"メンバーデータ$リスト[4]"}{'素早さ'}
までの「リスト」(全メンバー)を素早さ順に「並び替えたリスト」にしたいのです。

こんな一見単純そうな事で俺の脳はパニックです。汗
ただ、どう書くのか記述自体を教えてもらうよりも、「$a」と「$b」に何が入るのか教えてくれたほうが嬉しいです。
今後のコトもありますので…。

もし、sort関数を使わないで、自作でループの記述があればそれを教えて下さったら、とてもありがたいです。
多少処理が重くても「$a」と「$b」のような理解出来ない(俺には)変数が登場するより安心できますから…。

考えたあげくにこんな説明ですみません。
0724動画直リン03/05/09 01:10ID:X5KsRuJ+
http://homepage.mac.com/hitomi18/
0725nobodyさん03/05/09 01:24ID:???
>>723
ttp://tech-web.net/perl_memo.html
0726nobodyさん03/05/09 01:33ID:???
>>723
何がやりたいのかいまいちわからないのだが・・・

@member = ('mona','giko','morara');
%speed = (mona=>15,giko=>100,morara=>3,hoge=>50);
@resalt = sort{$speed{$a} <=> $speed{$b}} @member;
foreach $val(@resalt){
print($val."=".$speed{$val}."\n");
}

こんな感じで
morara=3
mona=15
giko=100
が出力されるが・・・

もしもハッシュに入っている分全部なら @memberじゃなくて keys %speed
とかね・・
0727nobodyさん03/05/09 01:35ID:???
というか ハッシュ使え・・・
変数名わからないってなんだ?
$speed{ID}
$money{ID}
とかなら楽だろ?
0728nobodyさん03/05/09 01:43ID:???
んー 大幅に変更になると思うが
漏れならこうするっていうのを書いておくよ・・・
%money %hp %speed 用意してまぁ実際には何があるかはしらんが3つだけ
gikoのデータは
$money{giko},$hp{giko},$speed{giko}に代入
戦闘時のメンバーは @member に格納する
残りは726に書いたとおり
@memberじゃなくて keys %hp; にでもすれば
すべての要素がソートされる

0729nobodyさん03/05/09 01:49ID:???
706氏は、なにがなんでも以下の形式でやりたいのか?

@list = ("mona", "giko", "morara");
%menberdata_mona = (... "speed" => 80, ...);
%menberdata_giko = (..."speed" => 255, ...);
%menberdata_morara = (..."speed" => 50, ...);
@list_by_speed = @listを、素早さにしたがってソートして返す処理; #A
# 得たいもの→ @list_by_speed = ("giko", "mona", "morara");

Aの処理を知りたい。
0730nobodyさん03/05/09 01:52ID:???
726のやり方が一般的じゃないの?
というかさ 変数名が増えたり減ったりするのって気持ち悪くない?
ある状況では$gikogikoが宣言されてある状況ではそれが$monamonaになったりするの
って
use strict使ってればそんなのは弾くと思うんだが・・・
073170603/05/09 01:58ID:???
なんかいろんなサイトを回り、そしてみなさんが教えてくれたサイトや記述を見ているウチに、
少しづつ$aと$bが分かってきました。
>>726さんの記述はとっても分かりやすかったです。

>$speed{$a}
この時$aと$bには、引数のリストの中身が自動で順番に代入されているのですね?
で、ルーチンが何回もループされて全部を比べるまで「-1」「0」「1」をはじき出してると…。
正直、かなりすっきりしました。

しかし、変数名がダイレクトに分からないときはどうしたら良いでしょうか?

@素早さ順リスト = ${"メンバーデータ$リスト[$a]"}{'素早さ'} <=> ${"メンバーデータ$リスト[$b]"}{'素早さ'}}@リスト;
これだと明らかに間違いです。
($aと$bの部分には「@リスト」の値ではなく、数字が入るため)


と言うか、しつこく聞きまくって迷惑かけたのであとは自分で調べたいと思います。
ホントありがとうございました。感謝。
073272603/05/09 02:03ID:???
>731
わからない時はどうするって?
だからわかるようにコーディングするだけなんだけどさ・・・

730が言う様に メンバーが増えるごとにハッシュが増えたりするって言うのは
激しく使いにくいと思うんだが・・・
%menberdata_giko をあえて定義する必要があるのか?
あるのなら
%menberdata_giko=(name=>$name{giko},speed=>speed{giko},money=>money{giko});
こんな風にすればいいんじゃないの?
073370603/05/09 02:05ID:???
>>731
の記述をかなり書き間違えたので訂正しておきます。

@素早さ順リスト = ${"メンバーデータ$リスト[$a]"}{'素早さ'} <=> ${"メンバーデータ$リスト[$b]"}{'素早さ'}}@リスト;

これは、
@素早さ順リスト = sort{${"メンバーデータ$リスト[$a]"}{'素早さ'} <=> ${"メンバーデータ$リスト[$b]"}{'素早さ'}} @リスト;
こうでした。汗
0734nobodyさん03/05/09 02:09ID:???
>>733
結論は出てるみたいだが
キャラごとにハッシュを作るんじゃなくて
要素ごとにハッシュを定義するのが正解
073570603/05/09 02:12ID:???
>>732
そうです、激しく使いにくいです。汗
前回もRPGを作ったんですが、それは1対1の戦闘しかないので超楽でした。
今回は、多数対多数の戦闘をやろうと思って適当に書き始めたのですが、想像以上に複雑になってしまって。汗
適当に考えながら書いてるウチになんとかなるだろ、って軽いノリで始めたのが大失敗でした。。。

ご指摘の通り、全部書きなおすかもしれません…。

なお、たくさんのレスをいただいていますが、現在頭がフル回転でまともに返事返せてなくてすみません。
時間をかけてしっかり考えていきます。
プログラム経験が長くないので明日までパニクってる状態が続くかもしれません。
俺の中でこんな感じに作った経験が全くないので…。
073670603/05/09 02:26ID:???
>>730
>というかさ 変数名が増えたり減ったりするのって気持ち悪くない?
なるほど…。ほとんどperlしかまともにやった事ないのでそうゆう感覚を知らなかったです。
宣言とか全く気にしたコトないし…。汗
勉強になります。

sortを自分の中で納得出来てきたので、そろそろ記述を考えたり書いたりします。
落ちようかと思います。
ホントありがとうございました。たっぷり迷惑かけてすみませんでした。
0737nobodyさん03/05/09 06:17ID:???
俺だったら、キャラごとに、無名ハッシュか無名配列つかうな。構造体のかわりに。
0738nobodyさん03/05/09 07:06ID:???
俺ならオブジェクト作って管理する。
そうしてる。
0739なまら名無し03/05/09 08:47ID:D4ewNm9i
ちょっと困ってるんでアドバイス御願いします。ファイルを書き込むcgi
をつくってるんですが、エラーは一切でず、ファイルには何も書き込ま
れてない状況になってます。datのパーミッションも775、755、666、
644、どれにしても結果は同じです。ロックもはずしてみましたが、
だめです。以下に引用をのせます。
$test = "aho";
open(WRITE,">test.dat") || &error('write_file_open_error');
print WRITE $test;
close(WRITE);
入力用のフォームタグ関係も各情報源から調べ、そこのところは問題
ないはずですが。ちなみにサーバー側のエラーログもみましたが、エラ
ーは一切でません。cgiも普通に動作し、ただ書き込みが反映されず、
datに何も書き込まれない状況です。
0740nobodyさん03/05/09 08:54ID:???
>>739
まずローカルでちゃんと動くかどうか確かめる。
それで動いたらまた質問汁。
0741動画直リン03/05/09 09:10ID:X5KsRuJ+
http://homepage.mac.com/hitomi18/
0742nobodyさん03/05/09 11:24ID:???
>>739
ディレクトリのパーミッション確認しれ
0743nobodyさん03/05/09 13:19ID:???
ものすごい初心者な質問でごめんなさい。

どうしてハッシュはハッシュっていう名前なんですか?
0744nobodyさん03/05/09 13:27ID:???
>743
ttp://dictionary.goo.ne.jp/search.php?MT=hash&kind=&mode=0&ej.x=35&ej.y=1
0745nobodyさん03/05/09 14:49ID:???
>>744
全然答えになってないし。
意味的には「切り刻む」というのが一番近い。

レコードに対するインデックスがランダムに並ぶように
内容に対して一意に決まる数、というのが元の意味。
0746nobodyさん03/05/09 15:19ID:???
>>745
日本語おかしいよ
074774303/05/09 15:28ID:???
744さん、745さん、ありがとうです。

えっと、上の説明で考えてみたんですけど、

$変数が いっこの変数
@配列が ちゃんと並べてある変数の集まり(数字ラベルつき)
%ハッシュが ぐちょぐちょに並んだ変数の集まり(名前ラベルつき)

こんな感じでいいんでしょうか? 変数や配列みたく、日本語の
名前がついてればわかりやすいのになーと思いました。
0748nobodyさん03/05/09 15:31ID:???
>>747
連想配列。
0749nobodyさん03/05/09 15:40ID:???
それは別物。例えばawkの多次元配列。

0750nobodyさん03/05/09 15:54ID:???
>>749
そうなんだ。じゃあコレとかは誤訳なのかな。
http://www.kt.rim.or.jp/%7ekbk/perl5.005/perldata.html
駱駝本 (改訂版) でも「ハッシュ == 連想配列」という訳し方してるけど。
0751nobodyさん03/05/09 16:09ID:???
>>749
( ゚д゚)ポカーン
0752nobodyさん03/05/09 16:45ID:???
だから、内部的な実装の話になる訳よ
実際にperlを作るとして、連想配列をどう実現するか。
キーとなる文字列とそれと対になる値を、
発生した順に片端から並べていって、
参照する必要が生じたら端から調べるのかというと、
そんな時間のかかる事はしない。

で、キーをハッシュで数値に変換して、その数値で管理する。
だから、foreachで舐めると登録したのと全然関係ない順番で
出てくるっしょ。
そのバラバラに刻まれ加減が、ハッシュ。
0753nobodyさん03/05/09 17:22ID:VvqPULTq
あるディレクトリの中にあるいずれかのファイルがいつ更新されたか知るには、どうすればいいんでしょうか?
0754nobodyさん03/05/09 17:48ID:???
>>753
http://www.google.com/search?num=100&hl=ja&inlang=ja&ie=Shift_JIS&safe=off&c2coff=1&q=Perl+%83t%83@%83C%83%8B%83e%83X%83g%89%89%8EZ%8Eq+stat%8A%D6%90%94&lr=lang_ja
0755nobodyさん03/05/09 18:17ID:???
>>750,751
まあ、厨にはどうでもいいだろうが・・・
awkやperl4までの多次元配列は、\034を添え字とするハッシュで
実現されていた。
多次元配列(順番の添え字を持ったリスト)をハッシュと言うか?
ハッシュと言うのは、連想配列を実装するアルゴリズムだ。Cでも
何でも使えるアルゴリズムね。つまり、ハッシュ>連想配列。
分かったか。

らくだ本3版でもハッシュを連想配列と訳して、連想配列を索引から引くと、
「後生だから、ハッシュを参照してください。」だって。まあ、いいさ。

0756nobodyさん03/05/09 18:22ID:???
foreach (@AAA) {
  foreach (@BBB) {
    処理;
  }
}
とやりたいのですが、$_はどっちのが参照されるんでしょう?
0757nobodyさん03/05/09 18:25ID:???
ホームページ、確信犯、姑息・・・
どれも本来の言葉の意味とは違う使われ方をしている。
しかし、どれも間違った使い方でも意味は通じる。
正確な言葉を使うのは大事だが、意味を伝える方がもっと大事。
らくだ本でも連想配列って書いてるなら、それでいいじゃないかと思うけどね。

ハッシュってのがどういうアルゴリズムなのかはちょっと気になるが、スレ違いだな。
0758nobodyさん03/05/09 18:27ID:???
>756
my $i = 0;
{
 my $i = 1;
 {
  my $i = 2;
  print $i;
 }
}

さーて、表示される数字は、いーくつだ?
0759nobodyさん03/05/09 18:28ID:???
>>756
直前のもの。@BBB
0760nobodyさん03/05/09 18:29ID:2QKJbZwP
>>754
ありがとうございます。
-Mを使うことが分かって、

$datfolder = './DAT';

$date = -M $datfolder;
print "Content-type:text/html\n\n";
print $date;

と、しました。出力結果が
0.787731481481481
と出たのですが、これは何を表してるんでしょうか?
「内容が最後に変更されてからの日数」っていうのはわかるんですが、どれが日で、どれが時間なのかがわかりません。
0761nobodyさん03/05/09 18:30ID:???
foreach my $i (@AAA) {
  foreach my $j (@BBB) {
    処理;
  }
}
わかりにくかったらこうするといい。
0762nobodyさん03/05/09 18:30ID:???
>>758
2 かな・・・?
0763nobodyさん03/05/09 18:31ID:???
>760
日数だろ。
0.78日。

てか、リンク先の一番上のページの一番下の方まで見たか?
0764nobodyさん03/05/09 18:42ID:cYWQsRLc
PHPに限った話では無いと思いますが、フォームの使い方で教えて下さい。

フレームを使っていないpage1.phpというページから、送信ボタンで
page2.phpと言うフレームで2分割されたページへ飛びます。
page2.phplはupper.phpとlower.phpに分割されています。
<form method ="POST" action=page2.php>と記述していますが、
これですとフレーム内のupper.phpで値を受け取れません。
どうすれば良いでしょう。
page2.phpからupper.phpにまた値を渡すのかな?
よろしくお願いします。
0765nobodyさん03/05/09 18:56ID:???
どうしようか…。

>>766
>>764に一言よろしく。
0766nobodyさん03/05/09 18:59ID:???
>>764
スレ違い
0767nobodyさん03/05/09 18:59ID:???
>>764
ページへのジャンプとデータの送信先は無関係。

−−−−−− 終了 −−−−−− でよろしい?
0768nobodyさん03/05/09 19:01ID:???
>767
よろしい。

では、次の質問どうぞ。
---------------------------------------------------------
いらっしゃーい、Perlのコーディングで困ってる人のスレです。

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

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

最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
0769nobodyさん03/05/09 19:08ID:???
\nで区切られた値を持つ$kutyuがあるんですがこれを@kutyuにするにはどうすれば・・・

一行目→要素の一番目 という風にしたいです。
0770bloom03/05/09 19:10ID:X5KsRuJ+
http://homepage.mac.com/ayaya16/
0771_03/05/09 19:11ID:???
  ∋8ノノハ.∩   http://yoshiwara.susukino.com/zenkaku
   川o・-・)ノ <先生!こんなのがありました!
http://www.yoshiwara.susukino.com/hankaku/hankaku07.html
http://yoshiwara.susukino.com/hankaku/hankaku08.html
http://www.yoshiwara.susukino.com/hankaku/hankaku10.html
http://yoshiwara.susukino.com/hankaku/hankaku07.html
http://www.yoshiwara.susukino.com/hankaku/hankaku03.html
http://yoshiwara.susukino.com/hankaku/hankaku05.html
http://www.yoshiwara.susukino.com/hankaku/hankaku01.html
http://yoshiwara.susukino.com/hankaku/hankaku06.html
http://www.yoshiwara.susukino.com/hankaku/hankaku04.html
http://www.yamazaki.90.kg/hankaku/hankaku09.html
0772nobodyさん03/05/09 19:12ID:???
>769
split
0773nobodyさん03/05/09 19:15ID:???
>>772
ありがとうございます
0774nobodyさん03/05/09 19:21ID:???
>>755
Perlの%hogeは連想配列じゃないということ?
077576403/05/09 19:31ID:cYWQsRLc
あ〜〜、すみません。平にスレ違いお許しを。
この際、このままご慈悲深いPerlスレの皆様におすがりします。

>ページへのジャンプとデータの送信先は無関係。
とのことですが、formのaction=のところのアドレスが
ジャンプ先=送信先では無いのですか?
何卒よろしくお願い申し上げます。
0776nobodyさん03/05/09 19:34ID:???
>>775
アホか?スレ違いって言われてんだろ。氏ねよ。
077776003/05/09 19:43ID:VvqPULTq
>>763
最後まで見ました。
stat関数でしたほうがイイということでしょうか?
$datfolder = './dat';

@fileinfo = stat ($datfolder);
print "Content-type:text/html\n\n";
foreach (@fileinfo) {
print "$_<BR>";
}
こうしたところ、[ 9 ]の最終変更時間の値が0になってしまいます。
フォルダは指定できないんでしょうか?
0778nobodyさん03/05/09 19:44ID:???
>>775
http://www.w3.org/でも見たら幸せになれるかもね。
0779nobodyさん03/05/09 20:26ID:???
>>768が出てくると、いつも>>771みたいのが一緒に出てくるな
0780nobodyさん03/05/09 21:11ID:???
>>757
あまえ、近藤さんを神様にしようと?
2chは、権威に逆らって真実を求めようとするプロジェクトじゃないのか?
0781nobodyさん03/05/09 21:22ID:???
いいえ。
2ちゃんねるは回答者が質問者に答えるのが真のプロジェクトです。
真実を求めるとか、どっちが便利とか、使いやすいとか議論するとろくでもない結果になります。
0782nobodyさん03/05/09 21:43ID:???
>>781
1.日本語がまずい。
2.そういう魂胆じゃ、2chの今後が危うい。
(わざわざ厨用に、全部、全角にしてる。)
0783nobodyさん03/05/09 21:47ID:???
ゴミン。'2ch'だけ敬意を払って全角にすた。
078478303/05/09 21:50ID:???
×'2ch'だけ敬意を払って全角にすた。
○'2ch'だけ敬意を払って半角にすた。
0785nobodyさん03/05/09 22:31ID:???
>>757
近藤か?
0786 ◆hMJAPH9PWA 03/05/09 22:47ID:???
「連想配列(associative array)」という言葉が長すぎるってことで「ハッシュ(hash)」と呼ばれるようになったのだとラクダ本にあったきがする。
まぁ語源はともかく、いまやハッシュはハッシュなんだからそれでいいんじゃない?
0787nobodyさん03/05/09 23:00ID:???
2万行以上のLOGファイルをgrepするならどの方法が早い&軽いですかね?
systemだと重そうだし、単純にwhileで回してifする以外に効率がいい方法ないですか?
0788nobodyさん03/05/09 23:08ID:akCR/KC1
あのぅ、ディレクトリ内のファイル一覧を取得するというコマンドはないんでしょうか?
readdirってのは、どういう働きなんでしょう?
0789bloom03/05/09 23:10ID:X5KsRuJ+
http://homepage.mac.com/ayaya16/
0790nobodyさん03/05/09 23:16ID:???
>>788
コマンドって言うなよ・・・

@dir_value = readdir DIR;
とか
@dir_value = glob("*.*");

readdirぐらいは自分で調べれ
0791nobodyさん03/05/09 23:17ID:???
>>790
DIRってのはファイルハンドルね。念のため。
0792nobodyさん03/05/09 23:29ID:akCR/KC1
>>790
ありがとう。
>>791
それはわかってまつww
0793nobodyさん03/05/09 23:46ID:???
|`ω´)

ファイルハンドルじゃなくディレクトリハンドル

と誰もいないうちに訂正しておこう

|Д´)ノ んじゃ
0794nobodyさん03/05/09 23:57ID:???
実質的にはファイルハンドルなんだから、ファイルハンドルでOK
0795nobodyさん03/05/10 00:17ID:hCO3mC8T
10万行ぐらいあるCSVファイルから検索したいんだけど、
一番早く検索できる方法って有りますか?

郵便番号から住所を検索したいんだけど、
やっぱり1行ずつ調べるしかないのかな?
0796nobodyさん03/05/10 00:24ID:???
>>795
データベース使え。

って言うか、普通のファイルでも工夫次第で検索早くなると思うけどねぇ〜・・・。
一つのファイルに10万行もあるからいけない。
最初の三桁づつのファイルに分けるとか・・・。
いろいろあるだろ。
079718903/05/10 00:44ID:???
>>795
郵便番号って10万もあるか?
0798nobodyさん03/05/10 00:44ID:???
>>787
grepの方が速い。つーかそれくらい自分でベンチしろ。
0799nobodyさん03/05/10 00:55ID:???
>>794
Perlじゃファイルハンドルとディレクトリハンドルはまったく別のものだよ。
0800nobodyさん03/05/10 00:58ID:???
すいません、質問です。
指定したディレクトリ及び拡張子から該当するファイル名とファイルサイズを取得したいのですが、
ファイル名取得はうまくいくものの、サイズがすべて0になってしまいます。
どこをどう変えたらサイズ取得できるでしょうか?ご指摘お願いします。
##以下ソース

  $wdir="C:/hoge"; #対象となるディレクトリ
  $sita=".txt"; #対象となるファイルの拡張子
   
  opendir(DIR, $wdir);
  while ($file = readdir(DIR)) {
    if ($file =~/$sita$/) {
      ($fsize) = (stat($file))[7];
      printf("%s%3dByte\n", $file, $fsize);
    }
  }
  closedir(DIR);
##以上ソース
0801nobodyさん03/05/10 01:03ID:???
($fsize) = (stat("$wdir/$file"))[7];
なんじゃ?
0802nobodyさん03/05/10 01:03ID:???
>>797
7桁フルに使うと1千万あるな

ファイルが固定ならインデックスを一度作ると
次からは速い
0803nobodyさん03/05/10 01:07ID:???
>>800
欲しいのがファイルサイズだけなら、stat より
ファイルテスト演算子 -s をオススメする。
$fsize = -s $file;
0804nobodyさん03/05/10 01:29ID:???
>>803
perl知らない人が見たらどういう文法だと思うだろうな
0805nobodyさん03/05/10 01:48ID:???
>>801
ありがとうございます。readdir(DIR)した時点でDIRが作業ディレクトリになると勘違いしてました。

>>803
ファイルテスト演算子…こんな便利なものがあったんだ。
やっぱりstat関数より実行効率いいのかな?ググって勉強してきます。
ありがとうございました。
080676003/05/10 02:54ID:UeZ9FyDL
>>777流された・・・
0807bloom03/05/10 03:10ID:9fodVbL5
http://homepage.mac.com/ayaya16/
0808nobodyさん03/05/10 04:01ID:ceT3ViFL
HTMLから
<input ytpe=text name=par rows=1 size=4>で、4桁の数値を入力して渡します。
パーミッションなので(0775など)
それで、CGIで、&ReadParse(*in)で変数に置き換えます$par
そして、
chmod $par, a.txt
とすると、363とかなっちゃいます。
これは、テキストエリアからは数字はこないので、charとして認識されてるんですかね?
0809nobodyさん03/05/10 04:26ID:???
>>808
実際のコード書いてみなよ。
なんかおかしなことやってそう。
0810nobodyさん03/05/10 05:23ID:???
>>808
typeがytpeになってるが関係無いよね?
0811nobodyさん03/05/10 06:46ID:???
ロジックがあってるならumaskだろうな
0812nobodyさん03/05/10 07:24ID:???
データベースの特定のレコードを
別のテーブルに移動させる事って出来ますか?
Aテーブルのレコード取得→Bテーブルに同じものを作成→Aテーブルのを削除
今はそうやってるんですけど…。
0813nobodyさん03/05/10 07:24ID:???
↑ちなみに、AとBは同じ構造のテーブルです
0814 ◆hMJAPH9PWA 03/05/10 08:58ID:???
>>808
oct($par)
0815nobodyさん03/05/10 11:38ID:???
$C = 0;       #デフォルトの確認場所
foreach my $D (@tottano){
   if ($D eq $maeno[$C]) { $C++; next; }    #両方ともあったら次
   $E = 1; $H = 0;
   foreach my $G (@maeno){       #他の位置にあるかチェック
      if ($G eq $D) { $E = 0; $C = $H; $C++; last; }   #他の位置にあったら$Cをその次へ
      $H++;
   }
   if ($E) { $F.= $D; $F.= "\n"; }
}

同じようにソートされた@maenoと@tottanoを比較して、
@tottanoにあって@maenoにない→$Fに追加
@maenoにあって@tottanoにない→何もしない
としたいんですが、上のようにすると
@maenoにあって@tottanoにない時が一つでもある場合、
$Fに@tottanoの内容が全て入ってしまうんです。

上のはどこがいけないのか、根本的に間違っているのか、教えてください。
081625003/05/10 12:45ID:???
>>815
見にくいソースなので自己流の書き方にしてみたけど、検証きぼん・・・

foreach my $key (@tottano){
  foreach my $list (@maeno){
    if($key eq $list){
      undef $key;
      last;
    }
  }
  if(!undef $key){
    $F = $key . "\n";
  }
}
■ このスレッドは過去ログ倉庫に格納されています