五一闲暇,看完了一本Perl实例精解(第4版)的电子书,这是第19章最后的一个例题。拿来练练手,以犒赏自己所学知识的过程。
下面的源文件是用来被格式化的文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
$ cat xxx
Exotic Liquids:Charlotte Cooper:(171) 555-2222 New Orleans Cajun Delights:Shelley Burke:(100) 555-4822 Grandma Kelly's Homestead:Regina Murphy:(313) 555-5735 Tokyo Traders:Yoshi Nagase:(03) 3555-5011 Cooperativa de Quesos 'Las Cabras' :Antonio del Valle Saavedra:(98) 598 76 54
Mayumi's:Mayumi Ohno:(06) 431-7877 Pavlova, Ltd.:Ian Devling:(03) 444-2343 Specialty Biscuits, Ltd.:Peter Wilson:(161) 555-4448 PB KnSckebrod AB:Lars Peterson:031-987 65 43 Refrescos Americanas LTDA:Carlos Diaz:(11) 555 4640 Heli Snwaren GmbH & Co. KG:Petra Winkler:(010) 9984510 Plutzer LebensmittelgromSrkte AG:Martin Bein:(069) 992755 Nord-Ost-Fisch Handelsgesellschaft mbH :Sven Petersen:(04721) 8713 Formaggi Fortini s.r.l.:Elio Rossi:(0544) 60323 Norske Meierier:Beate Vileid:(0)2-953010 Bigfoot Breweries:Cheryl Saylor:(503) 555-9931 Svensk Sjofoda AB:Michael Bjorn:08-123 45 67 Aux joyeux ecclTsiastiques:GuylFne Nodier:(1) 03.83.00.68 New England Seafood Cannery:Robb Merchant:(617) 555-3267 Leka Trading:Chandra Leka:555-8787 Lyngbysild:Niels Petersen:43844108 Zaanse Snoepfabriek:Dirk Luchte:(12345) 1212 Karkki Oy:Anne Heikkonen:(953) 10956 G'day, Mate:Wendy Mackenzie:(02) 555-5914 Ma Maison:Jean-Guy Lauzon:(514) 555-9022 Pasta Buttini s.r.l.:Giovanni Giudici:(089) 6547665 Escargots Nouveaux:Marie Delamare:85.57.00.07 Gai pGturage:Eliane Noz:38.76.98.06 ForOts d'Trables:Chantal Goulet:(514) 555-2955 |
这个文件是自己所写的代码文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
$ cat example19.pl
open (FH, "<xxx" ) or die "Can't open xxx: $!\n" ;
$headline = "+" . "-" x 12 . "+" . "-" x 40 . "+" . "-" x 28 . "+" . "-" x 17 . "+" ;
$field1 = ">" x 9;
$field2 = "<" x 37;
$field3 = "<" x 25;
$field4 = "<" x 14;
$format_top = qq( format STDOUT_TOP =
$headline | supplierid | companyname | contactname | phone | $headline . ); $ format = qq(
format STDOUT =
| \@$field1 | \@$field2 | \@$field3 | \@$field4 | \$., \$compayname, \$contactname, \$phone
. ); eval $format_top;
eval $ format ;
while (<FH>) {
($compayname, $contactname, $phone) = split (/:/);
write;
} close(FH); print $headline, "\n" ;
|
这是运行后的结果:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
$ perl example19.pl +------------+----------------------------------------+----------------------------+-----------------+ | supplierid | companyname | contactname | phone | +------------+----------------------------------------+----------------------------+-----------------+ | 1 | Exotic Liquids | Charlotte Cooper | (171) 555-2222 | | 2 | New Orleans Cajun Delights | Shelley Burke | (100) 555-4822 | | 3 | Grandma Kelly's Homestead | Regina Murphy | (313) 555-5735 | 全部评论
专题导读
热门推荐
热门话题
阅读排行榜
|
请发表评论