2014-09-19 1 views
0

У меня есть файл с содержанием:является: Прочитайте строку из файла в зависимости от состояния

Change sets: 
    (0345) ---$User1 "test12" 
    Component: (0465) "textfiles1" 
    Modified: 14-Sep-2014 02:17 PM 
    Changes: 
     ---c- (0574) /<unresolved>/sha.txt 
    Work items: 
     (0466) 90516 "test defect 

Я хочу читать «90516» то есть идентификатор элемента работы с использованием Perl и поместить его в массиве. Примечание. Это одна запись, и в файле может быть несколько строк. Я хочу захватить все идентификаторы рабочего элемента, подобные этому, и поместить его в perl. код

$file = new IO::File; 
$file->open("<sha.log") or die "Cannot open sha.log"; 
@file_list = <$file>; 
$file->close; 
my %seen; 
foreach $line (@file_list) { 
    #clear the array 
    undef %seen; 
    while ($line =~ m/Work items:/g) { 
     @temp = split(/[:|,]/, $1); 
     #push the item to array only if no items in temp array i.e. if the occurance is for the first time 
     next if $seen{ $temp[0] }++; 
     push @work_items, $temp[0]; 
    } 
} 
+1

Показать код. – edem

ответ

0

с помощью Range operator ..:

use strict; 
use warnings; 
use autodie; 

#open my $fh, '<', 'sha.log'; 
my $fh = \*DATA; 

my @work_items; 

while (<$fh>) { 
    if (my $range = /Work items:/ ... !/^\s*\(\d+\) (\d+)/) { 
     push @work_items, $1 if $range > 1 && $range !~ /E/; 
    } 
} 

print "@work_items\n"; 

__DATA__ 
Change sets: 
    (0345) ---$User1 "test12" 
    Component: (0465) "textfiles1" 
    Modified: 14-Sep-2014 02:17 PM 
    Changes: 
     ---c- (0574) /<unresolved>/sha.txt 
    Work items: 
     (0466) 90516 "test defect 
     (0467) 90517 "test defect 
Change sets: 
    (0345) ---$User1 "test12" 
    Component: (0465) "textfiles1" 
    Modified: 14-Sep-2014 02:17 PM 
    Changes: 
     ---c- (0574) /<unresolved>/sha.txt 
    Work items: 
     (0468) 90518 "test defect 

Выходы:

90516 90517 90518 
+0

Что делать, если я хочу сделать запись уникальной и в массиве. В нем не должно быть дублирующих рабочих элементов. – user3616128

+0

[perlfaq4 - Как удалить повторяющиеся элементы из списка или массива?] (Http://perldoc.perl.org/perlfaq4.html#How-can-I-remove-duplicate-elements-from-a-list- или-массив% 3f) – Miller

Смежные вопросы