0

私は文字列を持っています

 $str = "xxxxxx Code File(s) Name:Some_thing.c CodeFile(s) Version:27 Design Document:some_other_design.doc Module Design Document Version:43 somexxxxxxxxxx Compiler Version:9.5 Doc Type:Word xxxxxx";

ここで、xxxxx は任意の文字を表します。しかし、私は各属性の値を抽出することにのみ興味があります。

つまり保存したい

$fileName = Some_thing.c;
$fileVersion = 27;
$designDocName = some_other_design.doc;
$designDocVersion = 43;
$compilerVersion = 9.5;

今、私はめちゃくちゃな解決策を持っているように感じています。これを行うためのよりクリーンな方法があるかどうか疑問に思っています。複数のバージョンを持つ複数のファイルがある場合、これも失敗する可能性があります。

最初にすべての空白を削除し、次にすべての値を取得するまで文字列を 2 つに分割します

$str =~ s/\s*//g;

($temp,$temp2) = split(/CodeFile\(s\)Name:/,$str,2);
($fileName,$temp) = split(/CodeFile\(s\)Version:/,$temp2,2);
($fileVersion,$temp2) = split(/DesignDocument:/,$temp,2);
($designDocName,$temp) = split(/DesignDocumentVersion:/,$temp2,2);
($designDocVersion,$temp2) = split(/some/,$temp,2);
($testedCompilerVersion,$temp) = split(/CompilerVersion:/,$temp2,2);
($testedCompilerVersion,$temp2) = split(/DocType:/,$temp,2);

リンクまたは効率的な解決策を教えてください。前もって感謝します。

PS: 質問の下のコメントも確認してください。

4

3 に答える 3