Как открыть файл со специальным символом, например, $? - PullRequest
0 голосов
/ 14 февраля 2019

Кажется довольно простым, но с «$» в имени вызывает разделение имени.Я попытался убрать символ, но когда я пытаюсь открыть файл, я получаю GLOB ().

my $path = 'C:\dir\name$.txt';
open my $file, '<', $path || die
print "file = $file\n";

Он должен открыть файл, чтобы я мог просмотреть записи.

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

Рассмотрите возможность использования модулей CPAN File :: Slurper или Path :: Tiny , которые будут обрабатывать точные детали использования open и readline, проверки на наличие ошибок и кодирования, если необходимо (большинство текстовых файлов кодируются в UTF-8).

use strict;
use warnings;

use File::Slurper 'read_text';
my $file_content = read_text $path;

use Path::Tiny 'path';
my $file_content = path($path)->slurp_utf8;

Если это файл данных, используйте read_binary или slurp_raw.

0 голосов
/ 14 февраля 2019

Это не имеет ничего общего с "$".Просто следуйте стандартной процедуре обработки файлов.

use strict;
use warnings;   

my $path = 'C:\dir\name$.txt';
open my $file_handle, '<', $path or die "Can't open $path: $!";

# read and print the file line by line
while (my $line = <$file_handle>) {
    # the <> in scalar context gets one line from the file
    print $line;
}

# reset the handle
seek $file_handle, 0, 0;

# read the whole file at once, print it
{
    # enclose in a block to localize the $/ 
    #     $/ is the line separator, so when it's set to undef,
    #     it reads the whole file
    local $/ = undef;
    my $file_content = <$file_handle>;
    print $file_content;
}
...