Hi Nicholas, The perlvar manpage indicates that you may only assign an errno to $!, making no mention of assigning to it custom error messages.
Many modules work around this by defining a global $Module::error or some such variable that defines the last error message generated (.e.g, the $DBI::errstr global). It's less cute than foo() or die "Can't foo: $!"; , but it's much more flexible. Others might advocate the eval BLOCK statement combined with the $@ built-in (see the perlfunc manpage). In that case, rather than setting $!, you'd die() (which sets $@ to the die()'s argument). And to prevent your script from exiting upon die()ing, you'd wrap your function call in an eval BLOCK statement, and test the value of $@ afterwards. For (a contrived and untested) example: sub divide { my($dividend, $divisor) = @_; die "Illegal divide by zero" if $divisor == 0; return $dividend / $divisor; } eval { my $answer = divide( 4 / 0 ); }; if($@) { "Couldn't divide: $@"; } Or if you want to go further, check out Class::Exception. I haven't (directly) used it myself, so I make no promises of its utility. As always, there are probably more ways of handling exceptions than you can shake a stick at. Thankfully with Perl 6 we'll be getting something a little more standard (whatever that means). Cheers, David --- "Nicholas G. Thornton" <[EMAIL PROTECTED]> wrote: > (this seemed not to go through last time I sent it, > daemon returned a failure) > > I'm working on expanding a module I wrote a while > back and one of the things I'm > adding is an input filter. I'd like to have bad > input return an error (to $! > perhaps/preferably) so you could write something > like: > > &function() or die "Error: $!"; > > .. but if the input is fine it returns either the > input (as it's currently > designed) or a true value (the easier way). Either > way I was wondering how to > set $! since = doesn't seem to work. > > ~wren > > __________________________________________________ Do you Yahoo!? Yahoo! Tax Center - File online, calculators, forms, and more http://tax.yahoo.com