Help understanding perl script


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Help understanding perl script
# 1  
Old 02-01-2018
Help understanding perl script

Hello,

A former sys admin placed this script on one of our boxes and it needs to be adjusted, but I'm not familiar with perl. Can someone help break this down for me? I'm particularly interested in the -mtime function. What's the time frame being referenced here.

Code:
open(HD,"/usr/local/src/files.txt");
system("/bin/rm -f /tmp/text.txt");

$line = <HD>;

while($line) {

  @ar=split(/\s+/,$line);
  chomp($ar[1]);
  print("$ar[0]\n");
  system("/bin/find $ar[0] -mtime $ar[1] -type f -print >> /tmp/text.txt");
  system("/bin/find $ar[0] -mtime $ar[1] -type f -exec rm -f  \{\} \\\; >> /tmp/text.txt");
  $line = <HD>

# 2  
Old 02-01-2018
It is kind of hard to answer a question like that without seeing the contents of /usr/local/src/files.txt, but the time range would be specified by the 2nd "field" in that file.
# 3  
Old 02-01-2018
Ah, I see. So it's calling that file and using the 2nd field to obtain the value for -mtime. Nice. Many thanks for your response.

---------- Post updated at 04:11 PM ---------- Previous update was at 03:41 PM ----------

If I wanted to exclude files with a certain extension from being removed, how can I add to this script to do this?
# 4  
Old 02-01-2018
Change:
Code:
  system("/bin/find $ar[0] -mtime $ar[1] -type f -print >> /tmp/text.txt");
  system("/bin/find $ar[0] -mtime $ar[1] -type f -exec rm -f  \{\} \\\; >> /tmp/text.txt");

to:
Code:
  system("/bin/find $ar[0] ! -name '*.ext' -mtime $ar[1] -type f -print >> /tmp/text.txt");
  system("/bin/find $ar[0] ! -name '*.ext' -mtime $ar[1] -type f -exec rm -f  \{\} \\\; >> /tmp/text.txt");

where ext is the filename extension that appears on files you want to exclude from the list of files to be removed.
# 5  
Old 02-02-2018
Can't a single find execute several actions ?
# 6  
Old 02-02-2018
Quote:
Originally Posted by RudiC
Can't a single find execute several actions ?
Yes.

And, I'm not sure what output from rm -f is intended to be captured in /tmp/text.txt either. With -f there won't be any file not found errors, and even if there were, they would be written to stderr instead of stdout.

It might be better if those two lines were replaced by the single line:
Code:
  system("/bin/find $ar[0] ! -name '*.ext' -mtime $ar[1] -type f -print -exec rm -f  \{\} \\\; >> /tmp/text.txt 2>&1");

but I don't know if the author of this thread wants find and rm diagnostics to be on the screen or captured in the log file.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Help with understanding this regex in a Perl script parsing a 'complex' string

Hi, I need some guidance with understanding this Perl script below. I am not the author of the script and the author has not leave any documentation. I supposed it is meant to be 'easy' if you're a Perl or regex guru. I am having problem understanding what regex to use :confused: The script does... (3 Replies)
Discussion started by: newbie_01
3 Replies

2. Shell Programming and Scripting

Help with perl code understanding

Hi, I need to understand below perl code, can some one advise me. perl -MDate::Parse -e'BEGIN{$main::now=time;$main::old=(time-60*30)}' -nE'if(/^(\w+\s+\d+\s+\d+:\d+:\d+)/) {$t=str2time $1; $t > $old && $t < $now && print}' (1 Reply)
Discussion started by: learnbash
1 Replies

3. Programming

Understanding perl code

What is the difference between the two statements below? A: $a->{"$fruit"}->{"$color"}->{size} = $size B: $size = $a->{"$fruit"}->{"$color"}->{size} Please assist. Thanks! (0 Replies)
Discussion started by: onlinelearner02
0 Replies

4. Shell Programming and Scripting

Please suggest the Sites for perl script beginners for better understanding

I am begginer to perl scripting, i like to learn all the functionality of the perl scrpting , Could you please help me on this :confused::confused: (2 Replies)
Discussion started by: jothi basu
2 Replies

5. Shell Programming and Scripting

Help understanding some Perl code.

Well, I found myself trying to fix some Perl code (Ive never done any Perl in my life) and I pinpointed the place where the bug could be. But to be sure I have to know what does a few line of code mean: $files_lim =~ (/^\d*$/) $files_lim =~ (/^\d*h$/) $files_age =~ s/h// The code where... (2 Replies)
Discussion started by: RedSpyder
2 Replies

6. Shell Programming and Scripting

Help understanding Perl code.

Well, I found myself trying to fix some Perl code (Ive never done any Perl in my life) and I pinpointed the place where the bug could be. But to be sure I have to know what does a few line of code mean: $files_lim =~ (/^\d*$/) $files_lim =~ (/^\d*h$/)$files_age =~ s/h//The code where this was... (0 Replies)
Discussion started by: RedSpyder
0 Replies

7. Shell Programming and Scripting

Understanding perl statement

can someone help me how to interpret this line? my ($class, $hashref) = @_; my $portfolio = {}; if ($hashref->{portfolio_id}) { ($portfolio) = GEmySQL->get ("select * from portfolio where portfolio.id=$hashref->{portfolio_id}"); } =============== Question: how do... (2 Replies)
Discussion started by: onlinelearner02
2 Replies

8. Shell Programming and Scripting

Perl: Understanding @allwords

Hi guys, Here is the code: my @allwords = (); my %seen=(); foreach my $curr (@allwords) { $seen{$curr} = 1; } @allwords = keys %seen; my question is: what will @allwords now contain, or how would the entries in the @allwords array be different after this manipulation? Thank... (3 Replies)
Discussion started by: 300zxmuro
3 Replies

9. Shell Programming and Scripting

perl command understanding

Hi All, Can you please help me interpret the following command. Which I am not able to understand. Also can you please illustrate what it is used for. perl -pi -e 's/\015//g' text_file.dat Regards (3 Replies)
Discussion started by: rakesh.su30
3 Replies

10. Shell Programming and Scripting

Need help understanding perl script error

I solicited this site earlier this week and got a good answer for a perl Script so I made this script from what understood from the answers But now I have a bug and I'm stump. It doesn't parse correctly the Output it stays on the first line My $f2 and reprints in a endless loop I'm sure there... (3 Replies)
Discussion started by: Ex-Capsa
3 Replies
Login or Register to Ask a Question