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
入力がStudent 1の場合は41 51 61を表示する必要があります!perlを使用してテーブルを解析する方法
これは、各エントリはラインである@arr
と呼ばれる配列、であると仮定すると、あなたに
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
入力がStudent 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
この宿題はありますか?もしそうなら、あなたは何を試しましたか? –
そのテーブルのソースを追加することをお勧めします。 SQLによって駆動されるデータソースですか?それはファイルですか? –
ファイルベースであると仮定すると、フィールドはタブで区切られますか?固定フォーマットですか?これまでに何を試みましたか? – Zaid