[SP-pm] bons hábitos em perl->sugestões?
Luis Motta Campos
luismottacampos at yahoo.co.uk
Thu Jul 31 12:17:05 PDT 2008
Thiago Rondon wrote:
> O sysopen pela precisão que ele pode lhe oferecer nas operações mais
> delicadas, porém você deve tomar alguns cuidados, enquanto o open
> cuida de tudo para você em relação ao sistema operacional (como por
> exemplo o número do "file descriptor", alguns unix (antigos, sim) tem
> limitações para file descriptor (que também é ajustado) no sistema
> operacional, como um número baixo, como "255" (você deve ler o
> open(2) e verificar o seu /proc por exemplo)).
>
> Ou seja, para usar o sysopen você tem que estar por 'dentro' da
> configuração e a maneira que o seu sistema operacional estará lidando
> com as operaçoes de leitura, ou tratar todas elas no código perl.
Curto e grosso: sysopen() traz problemas de portabilidade no pacote. Eu
não recomendo, mesmo que hajam outras vantagens.
> Porém, em alguns casos como por exemplo, a utilização de flags como
> O_TRUNC, O_SYNC, O_SHLOCK, O_EXLOCK, O_BINARY e O_NOCTTY na abertura
> de arquivos, ou mascara de arquivos a serem criados, alguns
> tratamentos que o sistema operacional pode lhe oferecer pelo open
> (existem diferenças nestes detalhes entre os sistemas operacionais,
> mesmo nos sistemas padrões POSIX).
Tem um módulo de compatibilidade que facilita muito a sua vida, a pesar
da documentação não ser grande coisa. Olha o que o módulo POSIX pode
fazer por você. Ele oferece um open() mais estável, mais simples, mais
portável e tão poderoso quanto o nativo do Perl, sem te obrigar a levar
junto as desvantagens do sysopen().
> Ou seja, utilize o sysopen apenas se souber o que estiver fazendo
> realmente, e se a necessidade para trabalhar com arquivos de audio,
> binarios, rede talvez você possa precisar...
Eu nunca precisei usar sysopen() para nada, em 12 anos e 4 países
programando Perl para todo o tipo de sistema que você pode imaginar
(não, windows não, eu não tenho imaginação tão fértil assim).
> IO::File é interessante por que aceita os dois 'estilos' de
> nomeclatura de permissão, tanto do open como do sysopen, é além disso
> lida melhor com o 'handle' do arquivo em alguns casos (caso você for
> ver ele, veja algumas caracteristicas como o 'anonymous
> filehandler').
>
> Ou seja, o IO::File normalmente trata todos os eventos, tanto em um
> caso como o outro, e tem todas as facilidades do Perl, porém é um
> modulo a mais... E se você precisar de otimizações, terão várias
> outras soluções no Perl, como a própria open. hehehe
>
> Eu ? Costumo a usar a open na maioria dos casos, a não ser em
> operações especiais que preciso de recursos da sysopen.
Veja o POSIX::open, pelo menos... eu tenho certeza de que você poderia
fazer mais com menos. Gostaria de ver um problema que eu não posso
resolver com open() ou POSIX::open...
> Confuso ? Por isto gosto do Perl! por que cada um escolhe um caminho,
> e cada um faz da sua maneira.
Desculpe, como engenheiro de software profissional, eu tenho de censurar
este teu gosto por "confusão". Quando mais regulares e uniformes, mais
bem-documentados e previsíveis forem os teus sistemas, menos horas
extras você vai fazer e menos incêndios você vai apagar. Por favor tome
cuidado.
Como diz o Otávio Fernandes, programe como se o cara que vai dar
manutenção tivesse uma espingarda de dois canos e soubesse onde você
mora. ;)
Putamplexos!
--
Luis Motta Campos is a software engineer,
Perl Programmer, foodie and photographer.
More information about the SaoPaulo-pm
mailing list