我创建了一个包含3个元素的txt文件,我编写了这段代码:
my $in_file1 = 'file.txt';
open DAG,$in_file1;
my @shell=<DAG>;
close DAG;
chomp(@shell);
foreach my $shell(@shell){
# and etc code
我希望如果元素的数量是0做某事,如果1做其他事情,如果2 ....例如
if (@shell[0]) print "hi"; if(@shell[1]) print "bye" if(@...
我该怎么办?这样做的最好和最简单的方法是什么?谢谢。
答案 0 :(得分:2)
基于值进行工作的最佳方法之一是哈希/重定向表,特别是如果您需要在程序中多次执行此类工作。这涉及创建一个哈希,其键是选择器值,值是对子程序执行工作的引用。
在你的情况下,你是基于单词#做的,所以查找数组是一个很好的方法:
sub bye { print "bye"; }
my @actions = (
sub { }, # do nothing for 0. Using anonymous sub
sub { print "hi" }, # print "hi" for 1
\&bye, # for 2 - illustrate how to use reference to existing sub
);
use File::Slurp; # To read the file
my @lines = read_file("my_file");
for (my $index = 0; $index < @lines; $index++) {
&{ $actions[$index] }($lines[$index]);
# Call the sub stored in an array in correct place
# Pass it the line value as argument if needed.
}