不知道在哪里修复perl basic
这就是问题所在 编写一个Perl程序,在solar.txt文件上完成以下每一项(请参阅类主页上的链接)不知道在哪里修复perl basic,perl,Perl,这就是问题所在 编写一个Perl程序,在solar.txt文件上完成以下每一项(请参阅类主页上的链接) 打印第八个字段中未列出发现者的所有记录 删除第二个字段后打印每条记录。注意:最好说“打印每条记录”,忽略第二个字段 打印轨道周期为负的卫星的记录。(负轨道周期只是指卫星沿逆时针方向运行。) 打印旅行者2号太空探测器发现的物体的数据 打印每条轨道周期记录,以秒为单位,而不是以天为单位 关于solar.txt文件: 此文件包含9个项目的行,第一个是: Adrastea XV Jupiter 129
Adrastea XV Jupiter 129000 0.30 0.00 0.00 Jewitt 1979
按行星或月球名称的字母顺序排列(第一个字段)
[]中的文本是上一行的相应字段
此文件中的字段包括:
#!/usr/bin/perl
use warnings;
open(FILE, "<solar.txt") or die "Can't open file, $!";
while(<FILE>) {
my $tmp = split(/ /, $file);
if($tmp[7] eq '-') {
print "@tmp";
}
}
while(<FILE>) {
splice(/ /, 1, 1);
print "FILE\n";
}
while(<FILE>) {
my @tmp = split(/ /, FILE);
if($tmp[4] < 0) {
print "@tmp\n";
}
}
while(<FILE>) {
my @tmp = split(/ /, FILE);
if($tmp[7] eq 'Voyager2') {
print "@tmp\n";
}
}
while(<FILE>) {
my @tmp = split(/ /, FILE);
@tmp = $tmp[4] * 24 * 60 * 60;
print "$tmp\n";
}
close(FILE);
#/usr/bin/perl
使用警告;
打开(文件,“你说:
open(FILE, "<solar.txt") or die "Can't open file, $!";
您希望以前未声明、未初始化的$文件中包含什么内容
后来:
my @tmp = split(/ /, FILE);
在这里,您试图拆分一个文件句柄。这不是您想要的
在这两种情况下,您都需要$\uuu
(在最近的
调用中读取的行)
因此:
但是自从():
如果只给出模式,则EXPR默认为$\uuu
你可以说:
my @tmp = split(/ /);
您需要使用strict;
在您的文件顶部我尝试了这个方法,但出现了新的错误,在使用“strict subs”时不允许使用裸字“FILE”……我使用的是DWIM Perl 5.14.2.1(v7)这一个。您的第一个while()
loop读取整个文件。第二个循环不读取任何内容,因为整个文件已被读取。当有人指出问题的原因时,请不要更改问题中的代码。这会让将来访问此页面的访问者感到困惑;他们会看到一个问题,上面写着“我在做Y,为什么它不起作用?”然后回答说“你在做X,你应该做Y。”谢谢,在我修正后,我的结果会好一点,但仍然有错误,并说使用未初始化值$tmp[7]在字符串等式中,你能在没有看到输入数据的情况下帮我做这一行吗?不是真的。你确定数组中有8项吗?([0..7]
)行my$tmp=split(//);
应该是my@tmp=split(//);
最后一行print“$tmp\n”
应该是print”@tmp\n“;
和Keith T.关于第一个while()
循环吞噬整个文件的说法是正确的。其他while()
循环都不会读取任何内容。
my @tmp = split(/ /, $_);
my @tmp = split(/ /);