Perl comenta em um Mac

1

Estou tentando executar um script Perl que escrevi na linha de comando. O código é:

#!/usr/bin/perl
#open file
open(READFILE,"<prune.txt") || die "Couldn't open file";
#read line
while (<READFILE>)
{
#seperate line into pieces
$txtline = $_;
$txtline =~ m/(\d+)\t([\w\s]+)/i;
#rename file
print("Rename $2 to $1.\n");
#loop
}
close (READFILE);

e quando eu executo no Terminal eu recebo o erro: #open: bad interpreter: No such file or directory .

    
por traisjames 18.01.2014 / 21:32

2 respostas

2

Use o vi para converter o script Perl, digamos perl_script.pl , para o formato de arquivo do UNIX ( :set ff=unix ) da seguinte forma:

vi perl_script.pl

Agora, em vi , altere o formato do arquivo para UNIX, salve o arquivo e, em seguida, saia, como em:

:set ff=unix
:wq

Agora, execute seu script como antes.

O problema é mais provável que o arquivo tenha sido criado ou tenha sido convertido em algum outro formato diferente do formato UNIX, talvez o DOS ( :set ff=dos in vi ).

Parece que, pelo menos na minha instalação do Ubuntu Linux 12.04 LRS, as ferramentas antigas, dos2unix e unix2dos não são instaladas por padrão. Isto teria sido o que eu teria sugerido se eles estivessem prontamente disponíveis - daí o hack acima para você ir. Como eles não estão disponíveis no momento, aqui está uma maneira simples de recuperá-los:

$ sudo apt-get install tofrodos
$ sudo ln -s /usr/bin/fromdos /usr/bin/dos2unix
$ sudo ln -s /usr/bin/todos /usr/bin/unix2dos

Agora, para ver como usar dos2unix , execute man fromdos e veja como usar unix2dos , execute man todos .

Adicione o seguinte a um de seus arquivos de inicialização do shell para codificar seu próprio dos2unx e unix2dos , ou seja, seu arquivo .bashrc :

dos2unix(){
  tr -d '\r' < "$1" > t
  mv -f t "$1"
}
dos2unix file

unix2dos(){
  sed -i 's/$/\r/' "$1"
}
unix2dos file

Como era mais fácil fazer a última codificação, foi o que fiz para o meu servidor OSX, em vez de descobrir qual pacote encontrar e portar para o OSX.

    
por 19.01.2014 / 04:52
-1

Você quis dizer "<" caractere no nome do arquivo? Quase todos os erros desse tipo têm a ver com tentar acessar um arquivo com um erro de digitação no nome.

    
por 23.01.2014 / 02:04