我们的网站使用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 = <= '$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()) {
.我想这是在说"我可以从退回的记录集中取出另一个空位......".如果我在此行之前放置我的print语句,它将始终显示; 在这条线之后,每个空缺都会重复.
如何确定是否有一些空缺要显示,而不会过早地移动返回的记录集?
我总是可以在while循环中复制代码,并将它放在if()语句中(在while循环之前),它也包含我的print语句.但我更愿意采用更简单的方法If any records then print "We currently have.." line
.不幸的是,即使这个简单的行,我也没有线索.
看,我告诉你这是一个微不足道的问题,即使考虑到我的错误解释!
TIA
克里斯
一个非常简单的方法是:
$sth->execute(); my $first = 1; while (my $ref = $sth->fetchrow_hashref()) { if( $first ) { print "We currently have the following vacancies:\n"; $first = 0; } my $temp = $template; ... } if( $first ) { print "No vacancies found\n"; }