Add year to array in perl


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Add year to array in perl
# 1  
Old 01-15-2014
Code Add year to array in perl

Need assistance in perl scripting .
Is there a logic that i can implement to check the current year and add to an array . ex Current year is 2014 . If 2014 is not present add this year to array .

Code:
@yar = qw(2013 2012 2011);
foreach (@yar){
print "Year: $_ ";
}


Code:
@yar = qw(2014 2013 2012 2011);
foreach (@yar){
print "Year: $_ ";
}


Last edited by ajayram_arya; 01-15-2014 at 01:13 PM..
# 2  
Old 01-15-2014
It is always a good idea to use "use strict" and "my $variable" declarations. Indentation helps too. As for your question, try this:
Code:
my @yar = qw(2013 2012 2011);
my $curr_year = (localtime)[5]+1900;
unshift @yar, $curr_year unless grep {$_ == $curr_year} @yar;
foreach (@yar){
  print "Year: $_ ";
}

This User Gave Thanks to bartus11 For This Post:
# 3  
Old 01-17-2014
This works great . But the only concern was after 2014 if we want to add for next year 2015 which has to give me 2011,2012,2013,2014,2015. Is there a way to get it.
# 4  
Old 01-17-2014
Try something like this:
Code:
my @yar = qw(2014 2013 2012 2011);
my $next_year = (localtime)[5]+1901;
unshift @yar, $next_year unless grep {$_ == $next_year} @yar;
foreach (@yar){
  print "Year: $_ ";
}

# 5  
Old 01-17-2014
Thank you bartus11

I wanted a logic where every year it should automatically take the year and place it into the array

Not by adding the 2014 into the array .

Currently 2013 2012 2012
After logic 2014 2013 2012 2011
Next year 2015 2014 2013 2012 2011
Following year 2016 2014 2013 2012 2011
# 6  
Old 01-17-2014
This is exactly what my $curr_year = (localtime)[5]+1900; is doing. It extracts current year from the "localtime" function, so the first code will add current year to the array every time year's number increases.
# 7  
Old 01-17-2014
Nice . In 2015 It will give 2015 2013 2012 2011 . Correct me if I am wrong.

---------- Post updated at 04:58 PM ---------- Previous update was at 10:47 AM ----------

Thank again bartus11
Finally found a way to get what i wanted with your help . Here is the code

Code:
my $yar = 2011;
my $curr_year = (localtime)[5]+1901;
until ($yar >= $curr_year) {
    print " $yar","\n";
    $yar++;
}


Last edited by ajayram_arya; 01-17-2014 at 01:58 PM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Perl Array help

okay so my job is requiring me to learn perl and i have never had any type of programming language... ever. So i need to take a file that has data (nodes/points) with x, y, and z components. Example of what the file contains is below: RANDOM TEXT RANDOM TEXT Node # x pos ... (23 Replies)
Discussion started by: dets34
23 Replies

2. Shell Programming and Scripting

HELP on Perl array / sorting - trying to convert Korn Shell Script to Perl

Hi all, Not sure if this should be in the programming forum, but I believe it will get more response under the Shell Programming and Scripting FORUM. Am trying to write a customized df script in Perl and need some help with regards to using arrays and file handlers. At the moment am... (3 Replies)
Discussion started by: newbie_01
3 Replies

3. Shell Programming and Scripting

PERL : Read an array and write to another array with intial string pattern checks

I have an array and two variables as below, I need to check if $datevar is present in $filename. If so, i need to replace $filename with the values in the array. I need the output inside an ARRAY How can this be done. Any help will be appreciated. Thanks in advance. (2 Replies)
Discussion started by: irudayaraj
2 Replies

4. Shell Programming and Scripting

Array in Perl - Detect several file to be in one array

Hi everyone I have one question about using array in perl. let say I have several log file in one folder.. example test1.log test2.log test3.log and the list goes on.. how to make an array for this file? It suppose to detect log file in the current directory and all the log file will... (3 Replies)
Discussion started by: sayachop
3 Replies

5. Programming

C++ Display months of year in a double dimensional array

stupid question (0 Replies)
Discussion started by: puttster
0 Replies

6. Shell Programming and Scripting

perl, put one array into many array when field is equal to sth

Hi Everyone, #!/usr/bin/perl use strict; use warnings; my @test=("a;b;qqq;c;d","a;b;ggg;c;d","a;b;qqq;c;d"); would like to split the @test array into two array: @test1=(("a;b;qqq;c;d","a;b;qqq;c;d"); and @test2=("a;b;ggg;c;d"); means search for 3rd filed. Thanks find the... (0 Replies)
Discussion started by: jimmy_y
0 Replies

7. Shell Programming and Scripting

Add 1 year to System date in script

Hi All, I wanted to add 1 year to the system date in my script. say export start_date=`date +%F` echo $start_date o/p of this is 2009-09-02 To this i want to add 1 year. the output i need here is 2010-09-02 can anybody help me ? Thanks in advance, Vinay (4 Replies)
Discussion started by: vinayakatj56
4 Replies

8. Shell Programming and Scripting

Perl grep array against array

Hi, Is there any way I can grep an array against another array? Basically here's what I need to do. There will be an array containing some fixed texts and I have to check whether some files contain these lines. Reading the same files over and over again for each different pattern doesnt seem... (1 Reply)
Discussion started by: King Nothing
1 Replies

9. Shell Programming and Scripting

perl -write values in a file to @array in perl

Hi can anyone suggest me how to write a file containing values,... say 19 20 21 22 .. 40 to an array @array = (19, 20, ... 40) -- Thanks (27 Replies)
Discussion started by: meghana
27 Replies

10. Shell Programming and Scripting

[Perl] Accessing array elements within a sed command in Perl script

I am trying to use a script to replace the header of each file, whose filename are stored within the array $test, using the sed command within a Perl script as follows: $count = 0; while ( $count < $#test ) { `sed -e 's/BIOGRF 321/BIOGRF 332/g' ${test} > 0`; `cat 0 >... (2 Replies)
Discussion started by: userix
2 Replies
Login or Register to Ask a Question