В perl, как и во многих языках сценариев, одинарные тики и двойные кавычки имеют различное значение, даже если они обе строки.
Одиночные тики предназначены для сохранения буквальной природы строковой константы, поэтому долларовые переменные и управляющие последовательности, такие как \ n, не оцениваются.
Попробуйте использовать "$filename"
с двойными кавычками.
Кроме того, в этом случае, поскольку ваша строка содержит только переменную и ничего больше, вы можете полностью удалить кавычки и просто передать $filename
.