Perl コーディング初心者質問コーナー Part27
文字列置換なんだが、
my $a = 'abcdefg';
$a =~ s/abc/ABC/;
こうすれば $a は ABCedfg となるが、こうじゃなくて、
元の文字列は変更しないでそのままにして、
置換結果だけを新しい変数に入れる場合はどうしたらよい?たとえば
my $a = 'abcdefg';
my $b = $a =~ s/abc/ABC/;
としても、$b には 1 としか入らないので困った。もっとも
my $b = $a;
$b =~ s/abc/ABC/;
とすればいいだけの話だが、これを1行で書きたい。
my $b = $a; $b =~ s/abc/ABC/;
(my $b = $a) =~ s/.../.../;
まぁ、諦めるしかないってこった。
なぜ1行
にこだわる
423 :
421:03/08/25 12:52 ID:???
if処理で
ある 配列 @a = (1000個くらい)
を 最初から読み込んでいって
配列@bにその値が含まれている場合
ある処理をしたいと思ったんですが
@a = (2,5,6,8,9,4,2,6,5,4,6,3,5,2,4,5);
@b = (1,2,3,4,5,6,7,8,9,10,11,12,13,14);
foreach $a (@a){
foreach $b (@b){
if($a == $b){ ここに処理; last;}
}
}
というのを考えたんですけど
二つ配列が共に1000個近くあると
Maxで1000*1000近くループしそうなのですが
もっとスマートな方法ってないでしょうか?
または 変数がある配列に含まれているか
真偽を返す関数などはありませんでしょうか?
use strict; ってチェックの時だけやって
普段は外すっていうのは駄目ですか?
単に宣言なしの変数チェックと言う認識しか無いのですが
常にuseしておいた方が良いのならそうしようかと…。
>>425 Larry Wallは常にuseしろと仰ってますね。
俺も常にuseしてる。というか、付けると便利なものをなんでわざわざ外そうと
思うのか分からない。
>>424 メモリは食うが
my %b;
@b{@b} = (1) x @b;
for my $a (@a) {
$b{$a} or next;
...
}
>>425 use strict; したままだと困る事があるなら外せばいい。
俺は部分的に no strict ...; する方を選ぶが。
428 :
349:03/08/25 15:07 ID:???
どうも。5.6.1にXML::ParseおよびXML::SAX入れることができますた。
邪魔してたのはcc on SunOSですた。
430 :
424:03/08/25 15:27 ID:???
>>427 漏れが書いたのと
どっちのほうが効率的でしょうか?