I think the interface of this module is very weird. Instead of exporting multiple functions to list or configure interfaces, it exports only a single function (named Ifconfig), and the first argument determines what should be done. This may be customary in a shell utility, but not in perl.
Also, i don't like the way error handling is done. If something goes wrong, a module should just die or croak (which is why we have autodie). This module will just return undef and store the error code in $@.
Furthermore, the module doesn't expose all the possibilities of the underlying ifconfig(8) utility. The biggest deficiency is the lack if IPv6 support, but it's also, for example, not possible to change a NIC's MAC address, even though this is possible with linux's ifconfig(8).
The documentation contains lots of spelling and grammar mistakes, and IMO, the synopsis is too long and complicated (involves many non-trivial regexes, which i could figure out if i wanted to, but that's not the point in documentation).
What is good about this module is that is has been tested on quite a few platforms. It's good to see that some people still care about portability.
Overall, while the module is useful in its current shape, there is certainly room for improvement. The biggest problem is the lack of IPv6 support, the other minor deficiencies can easily be worked around. I'm looking forward to the next version of this module.
2 out of 2 found this review helpful. Was this review helpful to you? Yes No