フィールドがスペースで区切られている number に基づいて行からフィールドを取得する必要があります。問題は、フィールド自体にスペースが含まれている可能性がありますが、単一引用符で囲まれていることです。
すなわち:
$var="1 'abc def' 234 '' '456' 77 'ghi jkl mno p ' 99 ' q ' 88 ' r'";
abc def
ユーザーが位置 1 の要素を必要とする場合、どのようにフェッチすればよいですか?
フィールドがスペースで区切られている number に基づいて行からフィールドを取得する必要があります。問題は、フィールド自体にスペースが含まれている可能性がありますが、単一引用符で囲まれていることです。
すなわち:
$var="1 'abc def' 234 '' '456' 77 'ghi jkl mno p ' 99 ' q ' 88 ' r'";
abc def
ユーザーが位置 1 の要素を必要とする場合、どのようにフェッチすればよいですか?
Text::ParseWordsコアモジュールを確認してください。
use Text::ParseWords;
my $var = "1 'abc def' 234 '' '456' 77 'ghi jkl mno p ' 99 ' q ' 88 ' r'";
my @words = quotewords('\s+', 0, $var);
# use Data::Dumper; print Dumper \@words;
my $position = 1;
print $words[$position]; # 'abc def'
私の(テストされていない)アプローチは
use Data::Dumper;
my $var="1 'abc def' 234 '' '456' 77 'ghi jkl mno p ' 99 ' q ' 88 ' r'";
my @data = split("\s",$var);
my @result;
foreach my $substr (@data) {
s/[\"|\']//g;
push(@result,$_) unless $_ eq "";
}
print Dumper @data;
このようなものを返します
@data = [
"1",
"abc def",
"234",
...
];
各オブジェクトに簡単にアクセスできるようになりました
$data[index];