Ya veo el problema... la entrada puede ser cualquier cosa, pero luego hay que ver si está en los archivos. Pero... ¿qué estamos buscando?
Quiero decir: una URI se compone de varios componentes: esquema, autoridad, ruta, consulta, fragmento (en la parte de autoridad estará el nombre del servidor).
Con un módulo como
URI::Split se pueden obtener esos componentes por separado. Entonces... ¿cómo hacemos la comparación entre lo que recibimos por la entrada como argumento, y el contenido de los archivos?
¿Consideramos que lo hemos encontrado si la autoridad coincide? ¿O también debe coincidir todo lo demás (ruta, consulta, fragmento, esquema)?
Dicho de otra manera: si el argumento DEBE ser igual a alguna línea de los archivos, nos valdría con hacer una simple búsqueda y hacer comparaciones con 'eq', pero si nos vale que coincide la parte de autoridad o autoridad más ruta, deberemos preprocesar todas las líneas para separar en componentes, antes de hacer las comparaciones. Y quedarnos con la comparación que más coincidencia nos dé.