Según la documentación del módulo
Net::FTP::File, el método isfile() necesita como argumento el nombre del fichero. No dice nada de admitir expresiones regulares.
Perl es muy liberal en cuanto que nos permite hacer muchas cosas... pero hay un límite... ¿cómo pretendes que un método que solo admite valores escalares admita también una expresión regular? Eso no te funcionará con ningún lenguaje informático. Debes ajustarte a lo que dice la documentación de cada módulo.
En cuanto a tu problema.
$fil almacena el nombre del fichero que acabas de leer con alguno de los métodos del módulo, y quieres ver si coincide con tu patrón de búsqueda, que es
/^$patron\d{5}\..{2}$/, que quiere decir: comienza (
^) por el
$patron que estamos buscando, seguido por 5 dígitos (
\d{5}), seguido de un punto (
\.) y seguido por una extensión (dos caracteres,
.{2}), y nada más (
$).
Entonces, para hacer la comprobación:
Using perl Syntax Highlighting
if ( $fil =~ /^$patron\d{5}\..{2}$/ ) {
# $fil coincide con el patrón
}Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Ahora bien... como no nos interesa para nada los 5 dígitos ni la extensión, entonces podemos dejarlo en
Using perl Syntax Highlighting
if ( $fil =~ /^$patron/ ) {
# $fil coincide con el patrón
}Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
con lo que entonces nos conformamos que nuestro fichero
$fil coincida al principio con el
$patron.
De todas formas, yo lo aseguraría más:
Using perl Syntax Highlighting
if ( $fil =~ /^$patron\d{5}\./ ) {
# $fil coincide con el patrón
}Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
porque de esta manera nos aseguramos de que además de coincidir con el
$patron tenemos dígitos y un punto. El resto nos da igual, pero así hacemos la comprobación un poco más fuerte, para el caso de que podamos confundirnos con otros nombres de ficheros parecidos.