package Business::CreditCard;
require Exporter;
-use vars qw( @ISA $VERSION $Country );
+use vars qw( @ISA $VERSION @EXPORT @EXPORT_OK %EXPORT_TAGS $Country );
@ISA = qw( Exporter );
-$VERSION = "0.35";
+$VERSION = "0.36_01";
+
+@EXPORT = qw( cardtype validate generate_last_digit );
+@EXPORT_OK = qw( receipt_cardtype validate_card );
+$EXPORT_TAGS{NEW} = qw( validate_card cardtype receipt_cardtype );
$Country = 'US';
Use this for receipt display/printing only.
+Note: this subroutine is not exported by default like the others.
+Before 0.36, you needed to call this subroutine fully-qualified, as
+Business::CreditCard::receipt_cardtype()
+
+In 0.36 and later, you can import it into your namespace:
+
+ use Business::CreditCard qw( :DEFAULT receipt_cardtype );
+
+
=head1 ORIGINAL AUTHOR
Jon Orwant
existing code? "use Business::CreditCard <some_minimum_version>" turns it off?
Explicitly ask to turn it off and list that in the SYNOPSIS?
+=head2 validate() and @EXPORT transition plan
+
+First (done in 0.36):
+
+validate_card() is the new name for validate(). Both work for now.
+
+New-style usage (not recommended for code that needs to support B:CC before 0.36):
+
+ use Business::CreditCard qw( :NEW );
+
+You get validate_card(), cardtype() and receipt_cardtype(). You can also ask
+for them explicitly / individually:
+
+ use Business::CreditCard qw( validate_card cardtype receipt_cardtype );
+
+
+Second (we're at now now):
+
+Waiting for 0.36+ to become more prevalent.
+
+
+Third:
+
+Recommend new-style usage.
+
+
+Fourth:
+ (this is the incompatible part):
+
+Don't export validate() (or anything else [separately?]) by default.
+
+This is the part that will break things and we probably won't do for a long
+time, until new-style usage is the norm and the tradeoff of breaking old code
+is worth it to stop or namespace pollution.
+
=head1 SEE ALSO
L<Business::CreditCard::Object> is a wrapper around Business::CreditCard
=cut
-@EXPORT = qw(cardtype validate generate_last_digit);
-
## ref http://neilb.org/reviews/luhn.html#Comparison it looks like
## Business::CCCheck is 2x faster than we are. looking at their implementation
## not entirely a fair comparison, we also do the equivalent of their CC_clean,
# }
# $type = '' if $ccn % 10;
# return $type;
-sub validate {
+
+sub validate { validate_card(@_); }
+
+sub validate_card {
# Allow use as a class method
shift if UNIVERSAL::isa( $_[0], 'Business::CreditCard' );