Помогите в регулярном выражении и сохраните результаты - PullRequest
1 голос
/ 29 декабря 2010

Привет всем, у меня есть текстовый файл, включающий это:

set_global_assignment -name FA "titan VII"
set_global_assignment -name DE ASDF3HF

Я хочу использовать perl, чтобы узнать и извлечь результаты FA (результат: титан VII) и DE (результат:ASDF3HF).Я знаю только основы регулярного выражения, я не привык делать выражения и хранить этот вывод.Пожалуйста, помогите Большое спасибо

Ответы [ 2 ]

2 голосов
/ 30 декабря 2010

Вот способ сделать:

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

my %result;
while(<DATA>){
    $result{$1} = $2  if /^set_global_assignment -name (.+?)\s+(.+)$/;
}
print Dumper \%result;


__DATA__
set_global_assignment -name FA "titan VII"
set_global_assignment -name DE ASDF3HF

вывод:

$VAR1 = {
          'DE' => 'ASDF3HF',
          'FA' => '"titan VII"'
        };
2 голосов
/ 29 декабря 2010

Вы можете сделать:

use strict;
use warnings;

my ($fa,$de);

open DATA,'<', $file or die

while(<DATA>) {
        if(/set_global_assignment -name FA\s(.*)/) {
                $fa = $1;
        }elsif(/set_global_assignment -name DE\s(.*)/) {
                $de = $1;
        }
}
print "FA = $fa\nDE = $de\n";

Посмотреть

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...