[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2chのread.cgiへ]
Update time : 07/03 13:37 / Filesize : 153 KB / Number-of Response : 618
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Perlについての質問箱 34箱目



1 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 00:07:22 ]
"The duct tape of the Internet" こと、Perlについての質問箱です。
"There's more than one way to do it" ということで、Perlの奥深さについて皆で語り合い、追求してまいりましょう。

CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
CGIとPerlの区別がつかない人もWEBプログラミング板に行ってください。
(WEBプログラミング板 ttp://pc11.2ch.net/php/ )

CGIの質問は答えがPerlと全然関係ない話に帰着する場合が多かったりするのでWEBプログラミング板に行って聞いたほうが得ですよ。
このスレでは(CGI以外の)純粋にPerlのみに関係する質問を取り扱っていこうと思います。
スレ違いの質問にはスルーか、速やかな誘導をお願いします。

ttp://www.perl.org/get.html
● 2008/01/11現在の最新版: 5.10.0
● 2007/01/11現在の開発版: 5.9.5

前スレ
Perlについての質問箱 33箱目
pc11.2ch.net/test/read.cgi/tech/1192463997/

リンク集は>>2-3
過去スレは>>4 あたり


82 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 17:26:00 ]
配列の要素にリストを代入したい ←無理
配列を表すらしい@を付ければできるんじゃね?

つーところかと

83 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 17:46:32 ]
ケチらずにリャマ本ぐらい読んでもよさそうなものだという気もするが。

84 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 18:36:29 ]
配列の要素に、"a b"のようなスペースを挟んでいるものがあります。
これをスペースでsplitして2次元配列にしたいのですが、
そのようなことはできませんか?


85 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 18:41:25 ]
できるよ
がんばれ

86 名前:74 mailto:sage [2008/01/18(金) 18:58:10 ]
自己解決
Crypt::SSLeay入れたら動きました

87 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 19:24:02 ]
if文使うときif($a eq "a" or $a eq "b")みたいに同じ変数の中身を判定する部分をまとめる(/a|b/)みたいにする方法ってあります?

88 名前: ◆TWARamEjuA mailto:sage [2008/01/18(金) 20:10:12 BE:7841489-2BP(6825)]
$a =~ m(^[ab]$)

89 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 20:11:10 ]
>>87
あるけど、初心者はやるな。

90 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 20:18:43 ]
>>87
if ($a =~ m/^(a|b)$/)
if (grep { $a eq $_ } qw(a b))
:

好きなように書け



91 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 20:21:36 ]
確か[]より|のが速い

92 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 20:40:04 ]
そんなはずがないだろうと思ってベンチ取ったが、やはりそんなはずはなかった。

use strict;
use Benchmark;
timethese(2000000, {
Alternation => sub{ my $x = "abcdefghijk"; my $y = $x =~ /(?:d|e|f)/ },
CharacterClass => sub{ my $x = "abcdefghijk"; my $y = $x =~ /[def]/ },
});

>> Benchmark: timing 2000000 iterations of Alternation, CharacterClass...
>> Alternation: 3 wallclock secs ( 2.45 usr + 0.00 sys = 2.45 CPU) @ 815328.17/s (n=2000000)
>> CharacterClass: 1 wallclock secs ( 1.41 usr + 0.00 sys = 1.41 CPU) @ 1422475.11/s (n=2000000)

93 名前:デフォルトの名無しさん mailto:sage [2008/01/18(金) 22:58:31 ]
>>77
相反する(しかも管理しづらそうな)ことをする理由は分からないけど、
エラーメッセージの通りパッケージ名を付けるだけで怒られないようにはできる
use strict;
$main::hoge = "hoge";
print $main::hoge;

94 名前:デフォルトの名無しさん mailto:sage [2008/01/19(土) 06:20:50 ]
>>93
相反するってのは例が悪かったって事で勘弁を。>>77の例でいうと$hogeはhoge.plでは変更しない。
#hoge.pl
use strict;
my($hoge);
$hoge='hoge';
require 'piyo.pl';
print $piyo;
#piyo.pl
$piyo='piyo'
でhoge.plを実行すると
Global symbol "$piyo" requires explicit package name と怒られる。
#piyo.pl
package piyo
を追加して
#hoge.pl
print $piyo::piyo;
とすれば怒られないけど hoge.pl内$piyoですます方法ないのかな?

95 名前:77 mailto:sage [2008/01/19(土) 14:49:54 ]
77だが解決した。

#hoge.pl
use strict;
our($piyo);
require 'piyo.pl';
print $piyo;

#piyo.pl
$piyo='piyo'



96 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 00:08:53 ]
11 12
13 14
15 16
のように、1行に2つのデータを持ったファイルがあります。

これを、
list[0][0] = 11;
list[0][1] = 12;
list[1][0] = 13;
list[1][1] = 14;
list[2][0] = 15;
list[2][1] = 16;
のように二次元配列にしたいのですが、どのようにすれば良いのでしょうか?


97 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 00:30:36 ]
my @list;
push @list, [map int, split] while(<DATA>);

__DATA__
11 12
13 14
15 16

98 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 00:44:26 ]
>>97
ありがとうございます。
コードを説明して頂けませんか?

99 名前:デフォルトの名無しさん [2008/01/20(日) 01:06:20 ]
   ↑
本を読まない。
ネットを検索しない。
誰かが教えてくれるのをじっと待っているだけ。
つねに受身の態勢。

100 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 01:09:23 ]
本は持っていません。
ネットは検索しました。
回答を待っています。
受身の人間は質問しません。



101 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 01:15:34 ]
多次元配列の操作についてなんですが、
@aと@bによる二次元の配列@xを作る際に、
for $i (0..$#a){
$x[0][$i] = $a[$i];
}
for $i (0..$#b){
$x[1][$i] = $b[$i];
}

多次元配列 @x の i 行目の配列を一次元の配列 @c に移し変えるのに、
for $j (0..$#{$x[$i]}){
$c[$j] = $x[$i][$j];
}

というコードを書いてるんですが、もっと奇麗な書き方はありませんか?

102 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 01:38:01 ]
>@aと@bによる二次元の配列@xを作る
@x = (\@a, \@b);

>多次元配列 @x の i 行目の配列を一次元の配列 @c に移し変える
@c = @{@x[i]};

「続・初めてのPerl」のような参考書をお読みください。

103 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 03:24:16 ]
「多次元配列」、「二次元配列」、その過てる認識がドツボへといざなう

104 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 05:56:49 ]
>>102
ありがとうございました。

参考書を買って一通り読んだほうがよさそうですね。
アドバイスありがとうございました。

105 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 09:17:59 ]
>>102
× @c = @{@x[i]};
○ @c = @{$x[i]};

106 名前:デフォルトの名無しさん [2008/01/20(日) 22:02:02 ]
>>100
ム板で言う「受け身」は「わからんから教えてくれ」の事だぞコラ

  hoge や fuga を試したけど moge や munya のエラーになって
  困っています。xxx.net や ○●の本を確認したけれど××の所
  の通りで間違っていないコードかと思ったんですが。タスケテ

の様に複数の試行錯誤と複数の情報確認をひっさげてポストしてみ

107 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 10:27:18 ]
二次元配列?
Perlの配列の要素はスカラーですよ?

108 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 10:59:15 ]
いま本読んでるところだよきっと!

109 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 12:22:47 ]
>>91
速さを求めるなら、正規表現の | より、正規表現使わないで or のほうが速いぞ

110 名前:デフォルトの名無しさん [2008/01/21(月) 22:29:32 ]
>>97
やっと理解できたよ。map なんて昔からあった?



111 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 22:32:21 ]
大昔から

112 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 06:44:24 ]
昔っていうと範囲が曖昧だけど、とりあえず前世紀の産物だしな。

113 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 06:46:56 ]
僕らが生まれてくるずっとずっと前にはもう

114 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 07:31:26 ]
>>110
perl4 には無かった記憶が。perl5 からだとすると
search.cpan.org/~rgarcia/perl-5.10.0/pod/perlhist.pod
> 5.000alpha1 1993-Jul-31
> 5.000 1994-Oct-17

115 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 10:44:57 ]
map, grep を知ると、出来るだけそれを使ってプログラムを作りたくなる。

116 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 13:29:05 ]
>115
なんとなくだが、その気持ちは分かった気がする。

117 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 13:39:17 ]
そして後で泣く

118 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 14:18:17 ]
>>115
そのままLISPerになっちゃえばいいのにw

119 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 17:29:54 ]
>>115
前にも同じこと言ったけど中二病だよね。あれって。

120 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 17:31:34 ]
forのかわりにmap使うボケが多すぎたので、voidコンテクストなるものが導入されました。



121 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 17:59:14 ]
昔はgrep/mapのほうがforより速かったからなぁ。

122 名前:デフォルトの名無しさん [2008/01/22(火) 18:23:02 ]
たしかに。多言語に書き換えるときに泣くよね。

perl はプロトタイプとして使うな。
有る程度ロジックの検証ができたらCなりjavaなりに書き換える。
だから perl 固有すぎる命令は使いたくないね。
map のつかいかたを一所懸命覚えても、何の糧にもならないし。

123 名前:デフォルトの名無しさん [2008/01/22(火) 18:24:23 ]
122s/多言語/他言語/p

124 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 19:22:39 ]
また for厨 が暴れてるのか

125 名前:デフォルトの名無しさん [2008/01/22(火) 19:58:09 ]
perl/Tkの参考になるサイトおしえて

126 名前:デフォルトの名無しさん [2008/01/22(火) 20:18:47 ]
perl/Tkもいちじはやってたけど、Qt始めてから使わなくなった。

127 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 20:19:10 ]
でっていう

128 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 20:45:35 ]
Google検索でいっぱい出てくるじゃん

129 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 21:13:32 ]
構造体の要素に多次元配列を使いたいです。

  struct A => {
   aaa => '@',  ←ふつうの配列
   bbb => '@'  ←これを多次元配列にしたい
  };

  $A->aaa(0, 'a0000');    ←これと
  $A->aaa(1, 'a1111');    ←これはよいとして

  $A->bbb(0, 0, 'b0000');  ←これはダメ
  $A->bbb(0, {0, 'b0000'}); ←これもダメ
  $A->bbb({0, 0}, 'b0000'); ←これもダメ

どう書けばよいですか?お願いします。

130 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 21:22:35 ]
perlに多次元配列なんてものはないが、
配列のリファレンスの配列にすればいい。



131 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 21:26:06 ]
>>129

$A->aaa->[0] = 'a0000';
$A->bbb->[0][0] = 'b0000';

こんなんじゃあかんの?

132 名前:129 mailto:sage [2008/01/23(水) 22:22:24 ]
レスどうもありがとうございます。

>130
perlに多次元配列はないという噂は聞きますが
これまでCと同じ感覚で使ってました。プログラマじゃないので許してください。

>131
そんな記述できるのですね。
やりたかったことです。ありがとうございました。

133 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 23:15:25 ]
言葉として、n次元配列という時はある。配列のリファレンスの配列、とか言いたくないよ!

134 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 23:36:07 ]
一人っきりの部屋で、言う機会もないくせに。


135 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 00:08:28 ]
意味は通じるから多次元配列でも問題ない。
リファのリファとか言うより伝わりやすい。
厳密なのは仕様書書きとかがやればいい。

136 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 00:14:57 ]
多次元配列言う奴は多次元配列としてしか使わんからなあ

137 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 00:37:18 ]
$hash{'a','b'}でハッシュを二次元配列のように使うとかなかった?

138 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 00:42:42 ]
普通の配列でやればいい

139 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 00:48:09 ]
>>137
それはPerl5で非推奨になった

140 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 01:26:30 ]
>>137
$hash{'a-b'}みたいなもんだし多次元のつもりでやると想定外のことになりうるからあまり勧められんね。
keysとかで簡単に拾うこともできんし。



141 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 01:32:05 ]
unix epoch より過去を unix time で扱うにはどうすればいいでしょうか。

いまテストしてる環境はWinXP SP2 (5.1.2600) + ActivePerl 5.8.8 です(一応)。

142 名前:デフォルトの名無しさん [2008/01/24(木) 02:20:59 ]
ビッグバンより前の宇宙

143 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 03:09:03 ]
>>141
そもそもunixtimeの定義からして無理だろ。
負の数を正の整数で表現するにはどうしたらいいですか? みたいなもんだ。
自前の日付表現方法考えろ。

144 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 03:38:28 ]
>>143
どうもです。
unix time定義の厳密な定義はわかりませんが、仮に整数のみであるとしても
負数から計算してタイムスタンプなり配列なりを返す実装はありそうかなと思って。
もうちょっと探してみて、なさそうなら他の手を考えます。

145 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 03:40:23 ]
訂正:「整数のみ」→「正の整数のみ」

146 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 05:18:37 ]
Perlでオススメのメーリングリストってあります?

検索したら、下記かな?と思いましたが、終わってるようですし。
ttp://bug.org/ML/perl-jp/

147 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 10:42:03 ]
>>135
分かってる人間どうしで言うのは構わんけど
ここで「多次元配列使いたい」って質問してくる人はたぶん分かってないと思うぞ

148 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 11:06:45 ]
>>146
なんの話題をしたいかによる。
今はどこも過疎ってるけどね。


149 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 11:30:31 ]
MLは使わなくなったなぁ。
ダイアルアップ時代の産物だと感じるねぇ

150 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 11:50:56 ]
>>149
ダイアルアップ時代になって、メールをプロバイダに取りに行くように
なって利点が無くなったもんだよ。




151 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 12:46:53 ]
>>150
じゃその利点があったとかいう時代に
日本で活動していたMLなんていくつあったの?

152 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 13:46:59 ]
>>151
MLはクローズドな空間を構成するために使われていたから、日本でいくつなんて、
数えられるわけないだろ。

とりあえず私は、あるとき、メールがオフィスタイムに平均して3秒に1通来る状態に
なって、biff - メール到来通知エージェントがつねにフラグを立てている状態になっ
て、調べてみると72のMLに入っていたので、入っているMLを整理したことがある。

あとになって調べてみると、POPが出てきた時に、「これはMLを殺すぞ」と
指摘していた人がいるんだよね。まあ、その通りになったわけで。

153 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 14:26:54 ]
読みづらい文章だな

154 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 14:47:16 ]
何の話ししてんだろ

155 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 15:10:25 ]
はなししとは?

156 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 15:26:35 ]
プログラマってこういうツッコミ好きなやつほんと多いよな

157 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 15:42:03 ]
以上、俺の自作自演

158 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 17:48:43 ]
えー、続きましてー

159 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 19:14:46 ]
今でもML使ってるよ。昔に比べると流量少ないけど。
ダイアルアップとは関係なく、コミュニティ・ツールが変わったのが大きい気がする。

perlな方々はblogやIRCで済ませてる人が多いみたいだし。
慣れてない人には不親切かもしんない。


160 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 19:30:09 ]
ML衰退は他にもウイルスとか迷惑メールの増加の時期とシンクロしてた様にも。
しかし投稿を一気に落として、必要な書き込み作ってアップロードって作業は
時間が限られた電話回線時代にはマッチしてた様に思うね。

今、特に常時接続になってからはMLでもなんでもクライアントでは
データコピーを持たない、ASPスタイルこそが時代の流れと
なっていったと思う。
オンライン辞書の類は地味ながら個人的にはここ10年でも
指折りの革新的なツールだと思ってるお。



161 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 20:00:53 ]
特殊変数だとおもうのですが、$,の使い方を教えてください。
イマイチよくわかりません。
$,=" ";
としても
すべての変数に空白がつくわけではないようですし・・・

162 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 20:13:50 ]
perlvar嫁

163 名前:デフォルトの名無しさん [2008/01/24(木) 22:49:43 ]
google 「perl 特殊変数」

164 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 13:05:41 ]
ircは日本語perlのコミュが会話に入りづらい雰囲気

165 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 13:07:32 ]
↑お前、日本語が下手だから会話に来なくてけっこう

166 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 15:43:02 ]
pc11.2ch.net/test/read.cgi/tech/1141988910/

167 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 18:59:19 ]
>>161
暇だから答えよう。
$, = ' ';
@a = ('a'..'f);
print @a;
みたいな時に配列の間に半角スペースが入るってだけ。

print "@a";
の間には $" で指定。こっちはデフォで半角スペース入ってる。

168 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 20:38:17 ]
たしかにircは内輪ネタが分からない奴はお断りの雰囲気がある

169 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 21:22:36 ]
join関数の方が高速

170 名前: ◆TWARamEjuA mailto:sage [2008/01/26(土) 11:31:21 BE:5881469-2BP(6825)]
ユリウス使うと良いのかもかも。@うに刻以前



171 名前:デフォルトの名無しさん [2008/01/26(土) 13:20:13 ]
初歩的な質問ですがお願いします。
open関数でテキストドキュメントを読み込んで
表示するという初歩の操作を試しているのですが、
"invalid argument "というメッセージがでてきて
ファイルが開けません。
スクリプトは単純ですが以下の構造です。

open(F , ">C:\Perl\text.txt") || die " stupid : $!\n";

while(<F>) {
print;
}
close(F);

ファイルはtext.txtです。パスも間違っていません。どうすれば
よろしいでしょうか?

172 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 13:25:15 ]
一冊入門書を(仮にわからないとこがあっても)通読した方が良いよ。
英語で言うと、I is bookみたいな状態。

173 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 13:30:38 ]
>>171
print ">C:\Perl\text.txt", "\n";
とでもして、おまいが何をしようとしているかを確認してみろ。


174 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 18:39:26 ]
基本的なことかもしれませんが…
Windowsでながーい(256文字以上の)ファイル名使っている場合に
ファイル名は取得できるのですが
そのファイルサイズなどを取得する方法がわかりません。

短いファイル名ならサイズの取得も可能なのですが
非常に長いファイル名だとサイズに0が帰ってきます。

もしよかったらサイズ取得の方法をヒントだけでも結構ですので
教えてもらえませんか?
絶対できるのは間違いないとは思うのですが…


175 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 19:34:11 ]
WebProgのテンプレをこっちにも入れたいな。

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

176 名前:174 mailto:sage [2008/01/26(土) 20:13:11 ]
大変申し訳ありません。
あの後、考えてみたら
Win32::UTCFileTime
を使ってなんとかなりそうな雰囲気です。
少なくともいくつかの例ではうまくいきました。
お騒がせして大変申し訳ありませんでした。
もうちょっと自分で考えないとだめですね…


177 名前:デフォルトの名無しさん [2008/01/26(土) 20:17:23 ]
>>171
こりゃひどいね。
キミは、自分が何をしたいのかが分かってないみたいだね。
どこをどう直せばいいのか、教えるのは簡単だが
それはキミにとって良くない。
入門書を読むことをオススメするよ。

178 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 20:58:43 ]
>>177
そういわずに教えてあげなよ

179 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 21:00:22 ]
>>167
ありがとう。
これからはperldoc読みます。
プログラム言語は奥が深い。
三十路にはキツイザンス

180 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 21:26:32 ]
下のファイルを読んで、XXX, YYY, ZZZのいずれかでなければ
値を取り込むプログラムを作りたいです。

 ====
 AAA
 BBB
 CCC
 ……
 ====

my @prohibit = ('XXX', 'YYY', 'ZZZ');
my @keep;
if ($_ !~ /$prohibit[0]/ && $_ !~ /$prohibit[1]/ && $_ !~ /$prohibit[2]/ ) {
 push @keep, $_;
}

とすればまあできるんですが、
my @prohibit に禁止文字の追加や削除をしたときに困ってしまいます。
if ($_ !~ /@prohibit/ ) はエラーになります。
下の $ifif を作っても if 文が中身を把握してくれません。どのようにすればよいでしょうか?

my $ifif;
foreach my $i (0 .. $#{@prohibit}) {
 $ifif = $ifif . sprintf " \$prohibit\[$i\] =\~ \/\^%s\/ \&\&", $prohibit[$i];
}
$ifif = $ifif . ' 0 == 0';




181 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 21:40:32 ]
なんか宿題みたいなの多いなあ。
半年授業をサボってたんだから、少しは自分で勉強しろよ。

182 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 21:41:02 ]
>>180
my $regex = join '|', map quotemeta, @prohibit;
if ($_ !~ /$regex/) { ...






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<153KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef