Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在'下创建数组字段;使用perl的ifdef_Perl - Fatal编程技术网

在'下创建数组字段;使用perl的ifdef

在'下创建数组字段;使用perl的ifdef,perl,Perl,我正在编写一个脚本来创建一个名为的数据库,这个数据库有不同的版本。 我的脚本正在获取作为输入的版本(如果没有输入,它有一个默认版本) 每个数据库版本都基于以前的版本,但包含一些附加名称 我正试图找到一种方法,将数组中的一些条目定义为iversion的函数。 因此,我使用类似verilog IFDEF的东西 例如: my @DATABASE = ( "Arik", "Ben", if ($version = 1.3) { "Suzie", "Dan", }

我正在编写一个脚本来创建一个名为的数据库,这个数据库有不同的版本。 我的脚本正在获取作为输入的版本(如果没有输入,它有一个默认版本) 每个数据库版本都基于以前的版本,但包含一些附加名称

我正试图找到一种方法,将数组中的一些条目定义为iversion的函数。 因此,我使用类似verilog IFDEF的东西

例如:

my @DATABASE = (
  "Arik",
  "Ben",

  if ($version = 1.3) {
    "Suzie",
    "Dan",
  }

  "Roth"
);
在本例中,Arik、Ben和Roth的名字将出现在所有版本的数据库中,而Suzie和Dan的名字将只出现在版本1.3的数据库中


有什么好办法吗?

不清楚您想要什么,但这可能会有所帮助

use strict;
use warnings;

use Data::Dump;

my $version = '1.3';

my @database = (
    "Arik",
    "Ben",
    $version eq '1.3' ? (
      "Suzie",
      "Dan",
    ) : (),
    "Roth",
);

dd \@database;
输出

["Arik", "Ben", "Suzie", "Dan", "Roth"]
是的,您可以使用:

my @DATABASE = (
   "Arik",
   "Ben",
   $version == 1.3 ? ("Suzie", "Dan") : (),             
   "Roth"
);
my @DATABASE = (
   "Arik",
   "Ben",
   $version == 1.3 ? "Suzie" : (),
   $version == 1.3 ? "Dan" : (),
   "Roth",
);
my @DATABASE = (
   "Arik",
   "Ben",
   ( $version == 1.3 ? (
      "Suzie",
      "Dan",
   ) : () ),
   "Roth",
);
sub cond { my $cond = shift; return $cond ? @_ : () }

my @DATABASE = (
   "Arik",
   "Ben",
   cond($version == 1.3,
      "Suzie",
      "Dan",
   ),
   "Roth",
);
my @DATABASE = (
   "Arik",
   "Ben",
   ( "Suzie" ) x $version == 1.3,
   ( "Dan"   ) x $version == 1.3,
   "Roth",
);
my @DATABASE = (
   "Arik",
   "Ben",
);
if ($version == 1.3) {
   push @DATABASE, (
      "Suzie",
      "Dan",
   );
}
push @DATABASE, (
   "Roth",
);
my @DATABASE;
push @DATABASE, "Arik";
push @DATABASE, "Ben";
push @DATABASE, "Suzie" if $version == 1.3;
push @DATABASE, "Dan"   if $version == 1.3;
push @DATABASE, "Roth";