gz 파일의 Perl 심볼릭 링크

gz 파일의 Perl 심볼릭 링크

file1.txt.gz 파일이 있고 아래와 같이 Perl을 사용하여 일반 파일에 대한 심볼릭 링크를 만들려고 합니다.

symlink ("file1.txt.gz", orig_file1);

그러나 이것은 내가 원하지 않는 orig_file1.gz라는 새 파일 이름에 .gz 접미사를 추가하지 않으면 작동하지 않는 것 같습니다.

답변1

TL;DR - 항상 무언가를 인용하세요.

Perl 코드에서 항상 사용되는 이 경우 벌거벗은 단어(또는 출력이 연결 연산자와 연결되어야 하는 두 개의 잠재적인 서브루틴인 벌거벗은 단어)가 use strict실패하게 됩니다.orig_file1orig_file1gz.

% perl -Mstrict -e 'symlink "x", asdf'
Bareword "asdf" not allowed while "strict subs" in use at -e line 1.
Execution of -e aborted due to compilation errors.
% perl -Mstrict -e 'symlink "x", asdf.gz'
Bareword "asdf" not allowed while "strict subs" in use at -e line 1.
Bareword "gz" not allowed while "strict subs" in use at -e line 1.
Execution of -e aborted due to compilation errors.
% 

수정 사항은 첫 번째 용어뿐만 아니라 모든 용어를 올바르게 인용하는 것입니다.

#!/usr/bin/env perl
use strict;
use warnings;
symlink "file1.txt.gz", "orig_file1";

이 동작은 쉘(Perl은 쉘과 어느 정도 관련됨)과 대조될 수 있으며, 이를 통해 (때때로) 무언가를 인용할 필요가 없습니다.

#!/bin/sh
ln -s -- file1.txt.gz orig_file1

비록 이러한특히 변수인 경우쉘은 예상치 못한 작업을 수행하기 위해 다른 쉘에서 다른 특수 문자를 사용할 수 있으므로 쉘에서 인용해야 합니다(이는 사용법 제안이며 엄격한 요구 사항은 아닙니다).

다소 관련된 언어인 TCL을 사용하면 매우 간단한 구문을 사용하므로 인용을 피할 수 있습니다.

file link orig_file1 file1.txt.gz

그러나 특히 TCL에 익숙하지 않은 사람이 코드를 보는 경우 인용해야 할 몇 가지 사항이 있습니다.

file link "orig_file1" "file1.txt.gz"

관련 정보