Nuestro sitio web utiliza Perl para proporcionar un mecanismo simple para que nuestra gente de recursos humanos publique vacantes en nuestro sitio web. Fue desarrollado por un tercero, pero desde hace mucho tiempo han sido pateados al tacto, y lamentablemente no tenemos ninguna habilidad Perl internamente. ¡Esto es lo que ocurre cuando las personas de Marketing se burlan de su equipo de TI interno!¿Cómo puedo verificar si una consulta de base de datos arrojará resultados?
Necesito hacer un cambio simple en esta aplicación. Actualmente, la página de vacantes dice 'Actualmente tenemos las siguientes vacantes:', ¡independientemente de si hay vacantes! Por lo tanto, queremos cambiarlo para que esta línea solo se muestre en los momentos adecuados.
Podría, obviamente, empezar a aprender un poco de Perl, pero ya estamos planeando un sitio de reemplazo, y ciertamente no usará Perl. Entonces dado que la solución será trivial para aquellos con estas habilidades, pensé que pediría ayuda enfocada.
A continuación se muestra el comienzo del procedimiento que enumera las vacantes.
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...
La línea de la clave es while (my $ref = $sth->fetchrow_hashref()) {
. Me imagino que esto está diciendo 'mientras puedo obtener otra vacante del conjunto de registros devuelto ...'. Si coloco mi extracto de impresión antes de esta línea, siempre se mostrará; después de esta línea y se repitió para cada vacante.
¿Cómo puedo determinar si hay vacantes para mostrar, sin desplazarme prematuramente por el conjunto de registros devuelto?
Siempre pude copiar el código dentro del ciclo while, y colocarlo dentro de una instrucción if() (que precede al ciclo while) que también incluirá mi declaración de impresión. Pero preferiría tener el enfoque más simple de If any records then print "We currently have.." line
. Desafortunadamente, no tengo ni idea de codificar incluso esta simple línea.
Mira, te dije que era un problema trivial, ¡incluso teniendo en cuenta mi explicación a tientas!
TIA
Chris
Nota que requieren muere automáticamente si se produce un error, así que cambié eso un poco para que nadie pueda copiarlo y pegarlo en su código. :) –