Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris

Better error messages from Moo?

by szabgab (Priest)
on Jun 15, 2013 at 13:02 UTC ( #1039117=perlquestion: print w/replies, xml ) Need Help??
szabgab has asked for the wisdom of the Perl Monks concerning the following question:

With this module:
package Person; use Moo; has name => (is => 'rw', required => 1); 1;
this script:
use Person; my $anonymous = Person->new;
generates this error:
Missing required arguments: name at (eval 13) line 30.
Is there a way to get better error messages from Moo? Maybe with the correct filename and line number of the caller?

Replies are listed 'Best First'.
Re: Better error messages from Moo?
by poj (Monsignor) on Jun 15, 2013 at 13:45 UTC
    Adding use Carp::Always to the script generates error :
    Missing required arguments: name at (eval 13) line 30. Person::new('Person') called at line 6
Re: Better error messages from Moo?
by tobyink (Abbot) on Jun 15, 2013 at 15:55 UTC

    File it as a bug report on the Moo RT. It should certainly be feasible; Moo could keep track of the line has occurs on, then use this when evaling the constructor. I've been doing some work on improving Moo exceptions thrown from isa and coerce in the last couple of weeks, so I'd be happy to add required to the list.

    package Cow { use Moo; has name => (is => 'lazy', default => sub { 'Mooington' }) } say Cow->new->name
      Actually I already sent a patch for Moo to MST using Carp::croak() instead of die(), and he already rejected it.

        That's because that wouldn't actually have been an improvement.

        What tobyink is working on will be.

        -- mst

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://1039117]
Approved by ww
[ovedpo15]: it isn't homework. its a module I use at work. The process to add additional module isn't worth it. p.s never heard a university course which teach perl
[marto]: there are many, to this day.
[ovedpo15]: @Corion Yes I use the regex you showed me. its very good regex. although now i need to know that substring unit that comma
marto mad corrections to one around 18 months ago
[ovedpo15]: my code checks the value after that comma, if it isn't valid it will remove it. so I would like to remove the substring after that comma meaning getting the string before comma.
[hippo]: Are you sure that Text::CSV_XS isn't already installed at your work? It's such a useful module that it might well be there.
[marto]: pointing out the advantages of cpan modules is well worth in, as both developer and $client/$company benefit greatly
[Tux]: $src =~ m{^(.*),(.*)$/ and $2 !~ $valid and $src = $1;
[Tux]: s,/,},

How do I use this? | Other CB clients
Other Users?
Others avoiding work at the Monastery: (9)
As of 2018-05-27 10:51 GMT
Find Nodes?
    Voting Booth?