2016-03-03 3 views
0

У меня есть .strings файл локализации iOS. Этот формат файла выглядит так:Parse iOS .strings файл в perl hash

/*some comment here*/ 
"key_one" = "value_one" 

/*some comment here*/ 
"key_two" = "value_two" 

Я хочу, чтобы разобрать это в хеш, вероятно, с помощью простого регулярного выражения.

Любые виды помощи будут значительно упрощены.

+0

'» (\ w +) "\ s * = \ s *" (\ w +) ". Итак, 'dict [$ 1] = $ 2'; –

ответ

1

Я хотел бы сделать это следующим образом:

#!/usr/bin/env perl 
use strict; 
use warnings; 
use Data::Dumper; 

local $/; 
my %hash = <> =~ m/"([^"]+)"  #something in quotes 
         \s*=\s* # = and whitespace 
        "([^"]+)"  # something else in quotes 
          /gmx; # global, multiline, xtended 

print Dumper \%hash; 

Результат:

$VAR1 = { 
      'key_two' => 'value_two', 
      'key_one' => 'value_one' 
     }; 
1

Следующий сценарий

use strict; 
use warnings; 

my %hash; 

while (<>) { 
    if (m{^\s*"(\w+)"\s*=\s*"(\w+)"}) { 
     $hash{$1} = $2; 
    } 
} 

дает

{ 
    'key_one' => 'value_one', 
    'key_two' => 'value_two' 
};