我已經被賦予了一個任務。下面是說明:將文件拆分成列,過濾並打印它們
寫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