http://www.perlmonks.org?node_id=924725

bimleshsharma has asked for the wisdom of the Perl Monks concerning the following question:

Business day value resetting

Here in loop everytime $d value is being stored in new variable but $tem_bd value is being increased instead of resetting. How do we reset business day. Code is as below

my $d = new Date::Business();
while ($n <=10)
{
my $temp_bd=$d;
$temp_bd->addb(1);
$start{'date'}= $temp_bd->image();
print "\n Date- $start{'date'}";
$n++;
}

Replies are listed 'Best First'.
Re: Resetiing business day
by Corion (Patriarch) on Sep 08, 2011 at 06:56 UTC
    my $d = new Date::Business(); ... my $temp_bd=$d;

    Here, $temp_bd and $d refer to the same object. Simple assignment in Perl does not copy an object. So if you modify $temp_bd, you also modify $d.

      Yah, You are right. I found a way to do that. Here is modified code.

      use Date::Business;
      my %start;
      my $n=1;
      my $temp_bd;
      my $d = new Date::Business();
      while ($n <=10)
      {
      $temp_bd= new Date::Business($d);
      $temp_bd->addb(2);
      $start{'date'}= $temp_bd->image();
      $start{'date1'}= $d->image();
      print "\n Date- $start{'date'}";
      print "\n Date1- $start{'date1'}";
      $n++;
      }
      Just new object had to start with original using method of package instead of assignment operator.

Re: Resetiing business day
by Anonymous Monk on Sep 08, 2011 at 06:50 UTC

    Here in loop everytime $d value is being stored in new variable but $tem_bd value is being increased instead of resetting

    addb doesn't spell reset

    for my $n ( 0 .. 10 ){ my $date = Date::Business->new; ... }