2015-08-18 4 views
-1

Я определил и открыл имя файла, как:Распечатайте GLOB() вместо имени переменной

open my $file1, '<', 'test_dll.txt'; 

Теперь, когда я зову его и хочу сказать, что, например, напечатать имя файла он печатает GLOB() вместо test_dll.txt.

print "The name of file is: $file1\n"; 

Выход:

The name of file is: GLOB(0x389e74) 

бы один, пожалуйста, дайте мне знать, почему это происходит? и как я могу назвать имя переменной?

+0

Примечание: дескрипторы файлов не обязательно указывают на файлы; они могут указывать на внешние команды или сокеты и т. д. Насколько я знаю, нет * прямого * способа делать то, что вы просите, существует несколько способов обхода вокруг: 1. Поддерживать список файлов, которые вы создать по имени в хеше 2) Использовать ['stat'] (http://perldoc.perl.org/functions/stat.html), чтобы найти индексный дескриптор файла и использовать другой инструмент для поиска метаданных об этом inode –

ответ

5

Первый аргумент open - это дескриптор файла, а не имя файла. Если вы хотите сохранить имя файла в переменной, используйте отдельный один:

my $filename = 'test_dll.txt'; 
open my $FH, '<', $filename or die $!; 
print "The name of file is: $filename\n"; 
0

Это потому, что вы сделали

# Create a file handle and assign it to $file1. 
open my $file1, '<', 'test_dll.txt'; 

вместо

# Assign a string to $file1. 
my $file1 = 'test_dll.txt'; 
Смежные вопросы