[Madrid-pm] Selección de módulos dependiendo del S.O.

Alex Muntada alexm en caliu.cat
Lun Nov 28 04:02:24 PST 2016


Joaquin Ferrero:

> IO::Async <https://metacpan.org/release/IO-Async> - Asynchronous
> event-driven programming
> 
>    if( eval { require "IO/Async/OS/$^O.pm" } ) {
>        @ISA = "IO::Async::OS::$^O";
>    }

Cuidado con usar $^O de esta manera porque no es una variable
read-only (se podría manipular para cargar otro módulo), e.g.

    use v5.20;
    
    package Trojan;
	sub run { $^O = "../../../Trojan/trojan/$^O" }
    
    package main;
    say $^O;
    Trojan->run();
    say $^O;

Es preferible usar $Config{osname}, que sí es read-only.

Me pregunto hasta que punto esto sería una vulnerabilidad grave
de los módulos que usan $^O a saco y que tal vez habría que
informar de éllo. ¿Qué opináis?

Un saludo!
Alex


Más información sobre la lista de distribución Madrid-pm