CGIで文字列操作

[上に] [前に] [次に]
TAK [E-Mail] 1999/08/19(木) 13:04:03
Takといいます。
CGIスクリプトディレクトリー+ファイル名からファイル名のみを取り出したいのですが どう記述すればよいか教えてください。

$fnameに"c:/temp/test.dat"と入っていた場合に
レングス文1文字ずつ後方から"/"を検索して"/"があるまで変数に
セットすればできそうなのですが..
すみませんが教えてください。

ふじ 1999/08/19(木) 13:26:19
Perlですよね?
なら、
$str =~ /.*\/(.*)/;
とすれば
$1 にファイル名が入ります。

TAK [E-Mail] 1999/08/19(木) 16:35:20
ふじさん こんにちは
まだよくわからないのですが...たぶん質問の仕方が悪かったと思うので今一度(^^;
例えば$fnameに"c:/temp/test.dat"と入っていた文字列を
"test.dat"の様にしたいだけなんです。
すみません よろしくおねがいします。

葉月 1999/08/19(木) 17:12:59
ふじさんのやりかたでできますよ。。

print $1;
で、test.datが表示されますよ。。

TAK [E-Mail] 1999/08/19(木) 18:32:22
ふじさん 葉月さんこんにちは

ちょっと人の作成したものをカスタマイズしているのですが
どうもセットされないようなのです(^^;
もうちょっと がんばります(^^;

ふじ 1999/08/19(木) 20:22:09
$fname =~ s/.*\/(.*)/$1/;
で、どう?

$fname にはファイル名のみ残るはず。

TAK [E-Mail] 1999/08/20(金) 09:35:58
ふじさん たびたびすみませんでした。
>$fname =~ s/.*\/(.*)/$1/;
>で、どう?
結果はなにもセットされていない様です(^^;
でよくわからないのですが...
$fnameにすでに"C:/temp/test.dat"
$org_fileにセットしようとしたら
$org_file=~ s/.*\/(.*)/$fname/;
でよいのでしょうか?
"\/"で"/"を検索しているということですよね?
すみません よろしくおねがいします。

ふじ 1999/08/20(金) 13:55:57
>$org_file=~ s/.*\/(.*)/$fname/;
>でよいのでしょうか?
駄目です(^^;

$var =~ s/match/replace/ は、
「$var の中で match にマッチするものを replace に置き換える。」
という動作をしますので。

$fname の値を変えてしまって良いのなら

$fname =~ s/.*\/(.*)/$1/;

$fname の値はそのままで $org_file にファイル名だけ取り出し
たいのなら、

if($fname =~ /.*\/(.*)/){ $org_file = $1 };

で出来るはずですが。

TAK [E-Mail] 1999/08/20(金) 14:17:27
[[解決]]
ふじさん こんにちは
おかげさまでセットされるようになりました。(^^)
>$var =~ s/match/replace/ は、
>「$var の中で match にマッチするものを replace に置き換える。」
>という動作をしますので。
で 納得しました。すっきりです。

まえのレスにありました
$fname =~ s/.*\/(.*)/$1/;
はその後に$1に入っているということですね。
てっきり$fnameに入るのかと..(^^;
基本がわかっていない私の面倒をみていただいて
ありがとうございました。m(_ _)m

[上に] [前に] [次に]