Enterprise Perl.. the revenge

Sébastien Aperghis-Tramoni, sebastien@aperghis.net

"Professional" Perl

  • in 2004

    • "Perl is not considered as an enterprise language"

    • "Look at and imitate enterprise languages"

    • "Especially, Java"

    • "More precisely, Java stack traces"

Delicious stack traces

  •  org.xml.sax.SAXParseException: The content of element type "servlet" must match "(icon?,servlet-name,display-name?,description?,(servlet-class|jsp-file),init-param*,load-on-startup?,run-as?,security-role-ref*)".
            at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
            at org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown Source)
            at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
            at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
            at org.apache.xerces.impl.dtd.XMLDTDValidator.handleEndElement(Unknown Source)
            at org.apache.xerces.impl.dtd.XMLDTDValidator.endElement(Unknown Source)
            at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source)
            at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
            at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
            at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
            at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
            at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
            at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
            at org.apache.commons.digester.Digester.parse(Digester.java:1543)
            at org.apache.catalina.startup.ContextConfig.applicationConfig(ContextConfig.java:282)
            at org.apache.catalina.startup.ContextConfig.start(ContextConfig.java:639)
            at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:243)
            at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:166)
            at org.apache.catalina.core.StandardContext.start(StandardContext.java:3567)
            at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1188)
            at org.apache.catalina.core.StandardHost.start(StandardHost.java:738)
            at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1188)
            at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:347)
            at org.apache.catalina.core.StandardService.start(StandardService.java:497)
            at org.apache.catalina.core.StandardServer.start(StandardServer.java:2190)
            at org.apache.catalina.startup.Catalina.start(Catalina.java:512) 
            at org.apache.catalina.startup.Catalina.execute(Catalina.java:400)
            at org.apache.catalina.startup.Catalina.process(Catalina.java:180)
            at java.lang.reflect.Method.invoke(Native Method)
            at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:203)

Loooong traces

...

...

...

...

...

Then, Møøse happened..

  •   $ perl -MHTTP::Engine -e1
  •   _metaclass_cache() has been deprecated. Use Mouse::Util::get_metaclass_by_name() instead at /Library/Perl/5.8.6/darwin-thread-multi-2level/Mouse/Meta/Module.pm line 19
            Mouse::Meta::Module::_metaclass_cache('Mouse::Meta::Class', 'HTTP::Engine::Request') called at /Library/Perl/5.8.6/Any/Moose.pm line 55
            Any::Moose::_backer_of('HTTP::Engine::Request') called at /Library/Perl/5.8.6/Any/Moose.pm line 17
            Any::Moose::import('Any::Moose') called at /Library/Perl/5.8.6/HTTP/Engine/Request.pm line 2
            HTTP::Engine::Request::BEGIN() called at /Library/Perl/5.8.6/HTTP/Engine/Request.pm line 2
            eval {...} called at /Library/Perl/5.8.6/HTTP/Engine/Request.pm line 2
            require HTTP/Engine/Request.pm called at /Library/Perl/5.8.6/HTTP/Engine.pm line 5
            HTTP::Engine::BEGIN() called at /Library/Perl/5.8.6/HTTP/Engine/Request.pm line 2
            eval {...} called at /Library/Perl/5.8.6/HTTP/Engine/Request.pm line 2
            require HTTP/Engine.pm called at -e line 0
            main::BEGIN() called at /Library/Perl/5.8.6/HTTP/Engine/Request.pm line 2
            eval {...} called at /Library/Perl/5.8.6/HTTP/Engine/Request.pm line 2
      _metaclass_cache() has been deprecated. Use Mouse::Util::get_metaclass_by_name() instead at /Library/Perl/5.8.6/darwin-thread-multi-2level/Mouse/Meta/Module.pm line 19
            Mouse::Meta::Module::_metaclass_cache('Mouse::Meta::Class', 'HTTP::Engine::Request') called at /Library/Perl/5.8.6/Any/Moose.pm line 55
            Any::Moose::_backer_of('HTTP::Engine::Request') called at /Library/Perl/5.8.6/Any/Moose.pm line 110
            Any::Moose::any_moose('Moose', 'HTTP::Engine::Request') called at /Library/Perl/5.8.6/Any/Moose.pm line 86
            Any::Moose::_canonicalize_options('Any::Moose', 'module', 'Moose', 'options', 'ARRAY(0x1856ccc)', 'package', 'HTTP::Engine::Request') called at /Library/Perl/5.8.6/Any/Moose.pm line 28
            Any::Moose::import('undef') called at /Library/Perl/5.8.6/HTTP/Engine/Request.pm line 2
      [ ... ]
    228 total lines

-_-

  • Perl looks more than professional now..