1

フィールドがスペースで区切られている number に基づいて行からフィールドを取得する必要があります。問題は、フィールド自体にスペースが含まれている可能性がありますが、単一引用符で囲まれていることです。

すなわち:

$var="1 'abc def' 234 '' '456' 77 'ghi jkl mno p ' 99 ' q ' 88 ' r'";

abc defユーザーが位置 1 の要素を必要とする場合、どのようにフェッチすればよいですか?

4

2 に答える 2

5

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'
于 2013-10-23T06:57:48.480 に答える
1

私の(テストされていない)アプローチは

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];
于 2013-10-23T07:01:42.817 に答える