我不是一个perl程序员——我不太关心为什么会发出警告。我只是想让代码正常工作,我不知道该告诉你什么。显然你应该关心为什么发出警告。知道你在做什么和产生有效的代码之间有联系。@amon:是的,谢谢。我在早前的帖子里把我要写的东西挪动了。已修复。您也应该始终
我不是一个perl程序员——我不太关心为什么会发出警告。我只是想让代码正常工作,我不知道该告诉你什么。显然你应该关心为什么发出警告。知道你在做什么和产生有效的代码之间有联系。@amon:是的,谢谢。我在早前的帖子里把我要写的东西挪动了。已修复。您也应该始终,perl,hash,map,Perl,Hash,Map,我不是一个perl程序员——我不太关心为什么会发出警告。我只是想让代码正常工作,我不知道该告诉你什么。显然你应该关心为什么发出警告。知道你在做什么和产生有效的代码之间有联系。@amon:是的,谢谢。我在早前的帖子里把我要写的东西挪动了。已修复。您也应该始终使用严格的。如果你在问题上需要帮助但拒绝使用,你不会得到别人的同情。“这些不需要任何人维护”,直到您的代码无法运行并且需要寻求帮助,例如堆栈溢出。要使使用strict工作,通常您只需要声明变量,例如my$foo。使用警告和严格警告有一个很短的学
我不是一个perl程序员——我不太关心为什么会发出警告。我只是想让代码正常工作,我不知道该告诉你什么。显然你应该关心为什么发出警告。知道你在做什么和产生有效的代码之间有联系。@amon:是的,谢谢。我在早前的帖子里把我要写的东西挪动了。已修复。您也应该始终
使用严格的。如果你在问题上需要帮助但拒绝使用,你不会得到别人的同情。“这些不需要任何人维护”,直到您的代码无法运行并且需要寻求帮助,例如堆栈溢出。要使使用strict
工作,通常您只需要声明变量,例如my$foo
。使用警告和严格警告有一个很短的学习曲线,从长远来看,它们最终会比你学习如何使用它们节省更多的时间。
$COLUMN = 6;
%PERIOD_1 = (map {( 1, 10, 14, 20, 22, 29, 35, 39 )[$_] => 1 } 0..100); #1st period
%PERIOD_2 = (map {( 3, 8, 11, 18, 24, 26, 32, 37 )[$_] => 2 } 0..100); #2nd period
%PERIOD_3 = (map {( 7, 13, 16, 21, 28, 34, 36 )[$_] => 3 } 0..100); #3rd period
%PERIOD_4 = (map {( 5, 2, 6, 15, 17, 23, 27, 31,38)[$_] => 4 } 0..100); #4th period
%PERIOD_5 = (map {( 4, 9, 12, 19, 25, 30, 33, 40 )[$_] => 5 } 0..100); #5th period
%PERIODS = (%PERIOD_1,%PERIOD_2,%PERIOD_3,%PERIOD_4,%PERIOD_5);
open (FILE,"<",$ARGV[0]);
while(<FILE>) {
my @columns = split(/\t/);
print $columns[$COLUMN] . "-" . $PERIODS{$columns[$COLUMN]};
}
close(FILE);
37-2
29-1
15-4
6-4
34-3
24-2
5-
%PERIOD_2 = (map {( 3, 8, 11, 18, 24, 26, 32, 37 )[$_] => 2 } 0..100);
my %hash = map { $_ => 2 } ( 3, 8, 11, 18, 24, 26, 32, 37 );
my %hash;
for my $num (1, 10, 14, 20, 22, 29, 35, 39) {
$hash{$num} = 1;
}
for my $num (3, 8, 11, 18, 24, 26, 32, 37) {
$hash{$num} = 2;
}
....
use strict;
use warnings;
use Data::Dumper;
print Dumper \%hash; # send ref to hashes and arrays
Odd number of elements in hash assignment at foo.pl line 9.
$VAR1 = {
'32' => 2,
'11' => 2,
'3' => 2,
'26' => 2,
'2' => undef,
'8' => 2,
'18' => 2,
'24' => 2,
'37' => 2
};
%hash1 = (5 => 2);
%hash2 = (5 => undef);
%hash = (%hash1, %hash2);
my %foo = (1, 2, 3); # odd number of elements
use strict;
use warnings;
open my $file, '<', $ARGV[0] or die "Unable to open input file: $!";
my %period = (map {( 1, 10, 14, 20, 22, 29, 35, 39 )[$_] => 1 } 0..100);
1 => 1,
10 => 1,
14 => 1,
20 => 1,
22 => 1,
29 => 1,
35 => 1,
39 => 1,
1,
1,
1,
1,
1,
use strict;
use warnings;
my $column = 6;
my %periods;
while (<DATA>) {
my ($val, @keys) = /\d+/g;
next unless $val;
$periods{$_} = $val for @keys;
}
open my $fh, "<", $ARGV[0];
while(<$fh>) {
my @columns = split /\t/;
my $key = $columns[$column];
printf "%s - %s\n", $key, $periods{$key};
}
__DATA__
1: 1, 10, 14, 20, 22, 29, 35, 39;
2: 3, 8, 11, 18, 24, 26, 32, 37;
3: 7, 13, 16, 21, 28, 34, 36;
4: 5, 2, 6, 15, 17, 23, 27, 31, 38;
5: 4, 9, 12, 19, 25, 30, 33, 40;