【发布时间】:2010-09-22 08:28:06
【问题描述】:
我们的网站使用 Perl 为我们的人力资源人员提供了一种简单的机制,可以在我们的网站上发布职位空缺。它是由第三方开发的,但他们早就开始接触了,遗憾的是我们内部没有任何 Perl 技能。当营销人员绕过他们的内部 IT 团队时,就会发生这种情况!
我需要对此应用程序进行简单的更改。目前,职位空缺页面显示“我们目前有以下职位空缺:”,无论是否有职位空缺!所以我们想改变它,使这条线只在适当的时候显示。
显然,我可以开始学习一点 Perl,但我们已经在计划一个替代站点,而且它肯定不会使用 Perl。因此,由于解决方案对于具有这些技能的人来说是微不足道的,所以我想我会寻求一些有针对性的帮助。
下面是列出职位空缺的程序的开始。
sub list {
require HTTP::Date;
import HTTP::Date;
my $date = [split /\s+/, HTTP::Date::time2iso(time())]->[0];
my $dbh = DBI->connect($dsn, $user, $password)
|| die "cannot connect to $database: $!\n";
my $sql = <<EOSQL;
SELECT * FROM $table where expiry >= '$date' order by expiry
EOSQL
my $sth = $dbh->prepare($sql);
$sth->execute();
while (my $ref = $sth->fetchrow_hashref()) {
my $temp = $template;
$temp =~ s#__TITLE__#$ref->{'title'}#;
my $job_spec = $ref->{'job_spec'};
...etc...
关键行是while (my $ref = $sth->fetchrow_hashref()) {。我想这是在说'虽然我可以从返回的记录集中拉出另一个空缺......'。如果我将打印语句放在这一行之前,它将始终显示;在这条线之后,每个空缺都会重复。
如何确定有一些空缺要显示,而不会过早移动返回的记录集?
我总是可以在 while 循环中复制代码,并将其放在 if() 语句中(在 while 循环之前),该语句也将包括我的 print 语句。但我更喜欢使用If any records then print "We currently have.." line 更简单的方法。不幸的是,我连这个简单的行都没有编写代码的线索。
看,我告诉过你这是一个微不足道的问题,即使考虑到我笨拙的解释!
TIA
克里斯
【问题讨论】:
-
请注意,如果 require 失败,它会自动为您而死,所以我稍微调整了一下,这样就没有人可以将其复制并粘贴到他们的代码中。 :)