Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Perl library to avoid redefining an already defined function

Tags:

module

perl

I have two perl module files like :

is_date_holiday.pl :

use strict;
use warnings;
sub IsDateHoliday
{
   ...
}
1

calc_prev_working_date_mult.pl :

use strict;
use warnings;
require "is_date_holiday.pl"; # IsDateHoliday
sub CalcPrevWorkingDateMult 
{
   ...
}
1

On using them both in a perl file like :

require "is_date_holiday.pl"; # IsDateHoliday
require "calc_prev_working_date_mult.pl" # CalcPrevWorkingDateMult

It complains that I am redefining the function IsDateHoliday

How can do an equivalent of #ifndef ?

like image 642
Humble Debugger Avatar asked Sep 15 '26 08:09

Humble Debugger


1 Answers

You don't actually have modules, but you should.

IsDateHoliday.pm:

package IsDateHoliday;

use strict;
use warnings;

use Exporter qw( import );
our @EXPORT_OK = qw( IsDateHoliday );
our %EXPORT_TAGS = ( all => \@EXPORT_OK );

sub IsDateHoliday
{
   ...
}

1;

CalcPrevWorkingDateMult.pm:

package CalcPrevWorkingDateMult;

use strict;
use warnings;

use Exporter qw( import );
our @EXPORT_OK = qw( CalcPrevWorkingDateMult );
our %EXPORT_TAGS = ( all => \@EXPORT_OK );

use IsDateHoliday qw( :all );

sub CalcPrevWorkingDateMult
{
   ...
}

1;

main.pl:

use IsDateHoliday           qw( :all );
use CalcPrevWorkingDateMult qw( :all );
like image 187
ikegami Avatar answered Sep 17 '26 20:09

ikegami