Your script actually creates a lot of trouble (apart from the fact that this wheel has already been invented numerous times). In no particular order:
- When the user does not provide the args that you need, it's a good idea to "die" with a helpful message, to let the user know what is expected.
- You should be more careful with your ARGV checks: is the first arg numeric? does the second arg look like a usable url?
- Your "if" condition seems to imply that you want to allow for an "undefined" value of $depth_level, but there is no way for that value to be undefined. You need some other strategy for "unlimited depth".
- The biggest problem is that you extract href strings from a web page, and pass these strings to a shell command without any sort of special precaution; that might work for a few very simple web sites, but quite often you will get unintended results when you pass "$new_call" to a subshell in backticks.
You really should be using
LWP::Simple rather than using "curl" in backticks. so that you don't need to worry about strange or dangerous results from "shell-magic" characters in the urls. In any case, it'll be more efficient than using sub-shells (esp. nested ones).
You should also get acquainted with the concept of recursive subroutine calls, so that you have just one subroutine in one process that handles all the depth levels (instead of a separate sub process for each level).
In any case, I strongly advise that you do not use the code as originally posted, especially not in a unix shell.
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.