0

我正在做一些练习来提高我在 Perl 方面的能力,并且遇到了需要一些指导的情况。

目前我有一个脚本,它使用 getopt 获取命令行参数并将其提供给 function1。Function1 然后进行搜索,并对我设置的表执行 SQL 查询,并将结果作为 hash_ref 返回。然后将 function1 的输出分配给一个变量,该变量被馈送到 function2。Function2 获取 hash_ref,打印取消引用的结果,并根据 hash_ref 的键返回值或 -1 或 0。然后输出该数字,如果打印 -1,则报告未找到搜索结果。

我现在需要修改我的脚本,通过使用 getopt 添加额外的命令行参数,然后通过正则表达式为每个参数提供结果。

我的问题从根本上说是……最好的方法是什么?一般来说,我对 PERL 和正则表达式非常陌生,但我想我可以弄清楚正则表达式的语法。我应该在将正则表达式测试传递给我的第一个函数之前分配它吗?我是否应该在 SQL 查询本身中执行此操作(这甚至可能吗?对于我正在尝试做的事情,我找不到太多的 Regex/Perl/SQL 文档)。

如果需要,我可以添加我的代码,但我更喜欢一般指导,以便我自己弄清楚。

4

1 回答 1

1

您不需要为此使用正则表达式。

sub getAthletes {

  my($sport_arg, $number_arg) = @_

  $whereclause = " 1=1 ";  # start it with this

  if($sport_arg) {
    $whereclause .= " and sport = '$sport_arg'" ;
  }
  if($number_arg) {
    $whereclause .= " and jerseynum = $number_arg ";
  }
  $query = "SELECT * FROM ATHLETES WHERE $whereclause";

  print STDERR "Your query, friend:  $query\n";

  ... rest of your program here
}

GetOptions("s=s", \$sport_arg,
           "i=s", \$number_arg);

getAthletes($sport_arg, $number_arg);
于 2013-05-16T00:45:32.907 回答