perl -we 'open( FILE, "< ./test.txt" ) && truncate( FILE, 8 ) && close(FILE);'
abre o arquivo para leitura. No entanto, para truncar o arquivo, é necessário modificá-lo, portanto, um identificador de arquivo somente leitura não funcionará. Você precisa usar o modo "modificar" ( "+>"
).
Como uma questão secundária, sempre me surpreende quando as pessoas deixam as chamadas do sistema falharem silenciosamente e depois perguntam o que deu errado. Uma parte essencial de diagnosticar um problema é examinar a mensagem de erro produzida; mesmo que você não entenda, isso torna a vida muito mais fácil para aqueles que você pede ajuda.
O seguinte seria um pouco mais útil:
perl -we 'open(FILE, "<", "./test.txt") or die "open: $!";
truncate(FILE, 8) or die "truncate: $!";
close(FILE);'
apesar de admitir que só teria relatado "argumento inválido". Ainda assim, essa é uma informação útil e pode ter levado você à conclusão de que o modo aberto estava errado (como aconteceu comigo).