変数の中身の長さを取るには?
[上に]
[前に]
[次に]
ケンヤム
[E-Mail]
[HomePage]
2000/05/22(月) 13:17:22
初歩的な質問で恐縮ですが、
変数の中の文字のlenghtを取り出し方がわからず
困っています。
具体的には、
$filename = "abc.txt";
と入れられたときに、ファイル名(abc)と
拡張子( .txt)を分けたいのですが
$filename = "../aaa/abc.txt";
の場合もあるので方法がわかりません。
自分が持っているperlの本にのっていないので、
どなたかご存知でしたら、お教え下さい。
宜しくお願いします。
風神
2000/05/22(月) 15:46:37
$len = length $filename;
で、取得できますよ。
ラクダ本の132ページに載っています。
偽
2000/05/22(月) 16:24:19
というか、題名と質問の内容が噛み合ってないと言うか、何でそこで変数の
長さが出てくるのかがよくわからないんですが、正規表現を使って、
if($filename ~= m!^(.*[\\/])?(.*)\.(.*)$!){
$name = $2; # ファイル名(abc.txtのabcの部分が入る)
$ext = $3; # 拡張子(abc.txtのtxtの部分が入る)
}
とかやれば幸せになれるかもしれません。
バギンズ
2000/05/22(月) 16:33:50
~= じゃなくて =~ ですね。
andi
2000/05/22(月) 16:48:39
/(.*)\.(.*)\b/
で、できませんか・・・?
動作確認環境今無いので確認はしていませんが。
ケンヤム
2000/05/22(月) 18:11:40
[[解決]]
さっそくのご回答有り難うございます。
質問の内容があやふやで申し訳ありませんでした。
ご回答の方法とは違うのですが、下記のソース(拡張子が4桁固定という条件)でうまくいきましたので、
ひとまず安心しました。
foreach $wrk(".csv",".CSV",".fil",".FIL",".txt",".TXT"){
$pnt=index $fname,$wrk;
if($pnt!=-1){
$title=substr $fname,0,$pnt;
$title=sprintf("%s%s",$title,".hed");
last;
}
}
ご回答いただいた方法でもできるようにがんばってみます!!
[上に]
[前に]
[次に]