Você executou um script test.pl
, mas não executou o que você postou. Você aparentemente executou um script que está em seu PATH, enquanto o script que você postou não está em seu PATH.
Não há nada no script que você postou que produza a saída que você postou na sua pergunta.
O script que você postou funciona bem no Ubuntu. Estas são as coisas que você precisa garantir ao executar um script no Ubuntu.
Executando Scripts no Linux
Você pode chamar o script usando o nome do intérprete. Neste caso:
$ perl test.pl
$ perl /home/user/test.pl
Isso executará o script que está atualmente no mesmo diretório em que o comando é chamado ou encontrado na variável Path. Este método não pesquisará a variável PATH
. Se o script não estiver localizado na pasta atual, você deverá fornecer um nome de caminho completo para o script ser executado.
O script não precisa ter o cabeçalho shebang ( #!/usr/bin/perl
).
Definindo o bit de execução
Você pode definir o bit exec com:
$ chmod +x test.pl
Em conjunto com o bit de execução, também será necessário o cabeçalho shebang. Se o bit exec for definido, o script pode ser chamado pelo nome do arquivo. Ele só executará um script encontrado na variável PATH
. O primeiro localizado pela ordem no PATH será executado. Ao contrário do Windows que você disse que funciona, por padrão (e por razões de segurança) o diretório atual .
não está no caminho do usuário e não será pesquisado . Você pode verificar sua variável de caminho executando:
$ echo $PATH
O script será executado se estiver localizado em um desses (entre outros) locais de pesquisa de caminho padrão:
~/bin
/usr/local/bin
Se o script não estiver em um diretório da variável PATH, você deverá especificar o nome completo do caminho para executá-lo:
$ ./test.pl
$ /home/userid/test.pl
Identificando qual script está sendo localizado
Você pode verificar a localização de um script que está sendo executado com este comando:
$ type test.pl
Isso mostrará o nome completo do caminho do primeiro script test.pl
localizado. Se houver vários scripts em diferentes PATHs, você poderá exibir todos eles com este comando:
$ type -a test.pl
Nesse caso, se houver vários scripts com o mesmo nome, chamar o script pelo nome de caminho completo seria o melhor método. Um script com um nome tão comum como test.pl
deve sempre ser chamado pelo nome do caminho completo para garantir que o correto esteja sendo executado.