0
Name Mark1 Mark2 Mark3
Student 1 41 51 61
Student 2 42 52 62
Student 3 43 53 63
Student 4 44 54 64
Student 5 45 55 65
如果輸入是學生1,它必須顯示41 51 61那樣!如何使用perl解析表格
感謝你
Name Mark1 Mark2 Mark3
Student 1 41 51 61
Student 2 42 52 62
Student 3 43 53 63
Student 4 44 54 64
Student 5 45 55 65
如果輸入是學生1,它必須顯示41 51 61那樣!如何使用perl解析表格
感謝你
假設這是所謂的@arr
一個數組,其中每個條目是一條線,並假設你正在尋找的是在$num
學生的數量,你可以使用:
foreach (@arr) {
if (/^Student \b$num\b\s+(\d.*\d)/) {
print "$2\n";
}
}
這將遍歷數組中的所有條目。它會查找行:
$num
(它周圍的\b
S指定單詞邊界,所以這不可能是另一個數部分)如果是這樣,則以數字開頭和結尾的模式被捕獲並打印。在這種情況下,它恰好對應於Mark1,Mark2 & Mark3。
#!/usr/bin/perl
use warnings;
use strict;
my %hash =();
print "Student No:"; #Eg:Student 1
chomp (my $input = <>);
while (<DATA>) {
next if /^Name/;
chomp;
my ($student, $no, @marks) = split;
$hash{ "$student " . "$no" } = \@marks;
}
print join " ", @{$hash{ "$input" }};
__DATA__
Name Mark1 Mark2 Mark3
Student 1 41 51 61
Student 2 42 52 62
Student 3 43 53 63
Student 4 44 54 64
Student 5 45 55 65
這功課嗎?如果是這樣,你有什麼嘗試,你堅持什麼? – 2011-01-08 11:07:32