我已经被赋予了一个任务。下面是说明:将文件拆分成列,过滤并打印它们
写Perl程序来完成每个上的文件solar.txt以下的(见链接 类网页)
- 打印不列出一个发现者所有记录第八场。
- 删除第二个字段后,打印每个记录。注意:最好是 “打印每条记录”省略第二个字段。
- 打印负轨道周期卫星的记录。 (负的 轨道周期简单地表示卫星沿逆时针方向运行 方向)。
- 打印由Voyager2空间探测器发现的对象的数据。
- 打印每个记录的轨道周期以秒为单位而不是以天为单位。
关于solar.txt文件: 此文件包含的9项,第一个是行: 木卫十五XV木星129000 0.30 0.00 0.00杰威1979 在由行星或月亮的名称按照字母顺序(第一场)。 []中的文本是上面一行中的相应字段。
在此文件中的字段包括:
- 行星或月亮的名称[木卫十五]
- 月亮或行星(罗马数字)的号码[XV]
- 的悲惨的名称在其周围卫星轨道[木星]在公里
- 轨道半径(长半径)[129000]在天
- 轨道周期[0.30]
- 轨道inclina和灰度[0.00]
- 轨道偏心率[0.00]
- 发现者[杰威]
- 发现[1979]
我停留在第一个指令的新年。我可以阅读“solar.txt”文件,但之后我无法做到或无法弄清楚。分割阵列似乎是最好的选择,但目前不适合我。下面的代码:
#usr/bin/perl
use warnings;
use strict;
open (SOLAR_FILE, "C:/perl_tests/solar.txt") or die "Could not open the file!";
my @array = (<SOLAR_FILE>);
close (SOLAR_FILE);
for (my $i = 0; $i < 8; $i++) {
my @tempArray = split(/ /, $array[$i]);
if ($tempArray[$i] eq "-") {
print "@tempArray";
}
}
open (SOLAR_FILE, "C:/perl_tests/solar.txt") or die "Could not open the file!";
my @array = (<SOLAR_FILE>);
close (SOLAR_FILE);
for my $record (@array) {
my @tempArray = split(/ /, $record);
if ($tempArray[2] eq qw(Jupiter, Uranus, Saturn, Pluto, Mars, Sun, Neptune, Earth)
s//???/" "/g;
#I know something goes where the (???) are, but I'm not sure how to do it.
{
print "@tempArray";
}
}
而且,我不知道如何启动其它4.如果任何人都可以在正确的方向指向我,那将是有益的。
编辑:下面是该文件的信息:
Adrastea XV Jupiter 129000 0.30 0.00 0.00 Jewitt 1979
Amalthea V Jupiter 181000 0.50 0.40 0.00 Barnard 1892
Ananke XII Jupiter 21200000 -631 147.00 0.17 Nicholson 1951
Ariel I Uranus 191000 2.52 0.00 0.00 Lassell 1851
Atlas XV Saturn 138000 0.60 0.00 0.00 Terrile 1980
Belinda XIV Uranus 75000 0.62 0.03 0.00 Voyager2 1986
Bianca VIII Uranus 59000 0.43 0.16 0.00 Voyager2 1986
...
Leda XIII Jupiter 11094000 238.72 27.00 0.15 Kowal 1974
Lysithea X Jupiter 11720000 259.22 29.00 0.11 Nicholson 1938
Mars IV Sun 227940000 686.98 1.85 0.09 - -
Megaclite XIX Jupiter 23911000 ? ? ? Sheppard 2000
Mercury I Sun 57910000 87.97 7.00 0.21 - -
Metis XVI Jupiter 128000 0.29 0.00 0.00 Synnott 1979
Mimas I Saturn 186000 0.94 1.53 0.02 Herschel 1789
Miranda V Uranus 130000 1.41 4.22 0.00 Kuiper 1948
Moon I Earth 384000 27.32 5.14 0.05 - -
Naiad III Neptune 48000 0.29 0.00 0.00 Voyager2 1989
Neptune VIII Sun 4504300000 60190.00 1.77 0.01 Adams 1846
...
没有列出发现者的行是什么样的?是否有其他信息线缺失? – 2013-03-24 01:57:24