উত্তর:
আপনি যা করতে চান তার উপর নির্ভর করে। আপনি যদি দুটি যুক্তি ইনপুট ফাইল হিসাবে ব্যবহার করতে চান তবে আপনি কেবল সেগুলিতে প্রবেশ করতে পারেন এবং তারপরে <>
তার সামগ্রীগুলি পড়তে ব্যবহার করতে পারেন।
যদি তাদের আলাদা অর্থ থাকে তবে আপনি সহজেই এগুলি ব্যবহার করতে GetOpt::Std
এবং GetOpt::Long
প্রক্রিয়া করতে পারেন। GetOpt::Std
শুধুমাত্র একক-অক্ষর সুইচ সমর্থন করে এবং GetOpt::Long
আরও অনেক নমনীয়। থেকে GetOpt::Long
:
use Getopt::Long;
my $data = "file.dat";
my $length = 24;
my $verbose;
$result = GetOptions ("length=i" => \$length, # numeric
"file=s" => \$data, # string
"verbose" => \$verbose); # flag
বিকল্পভাবে, @ARGV
একটি বিশেষ চলক যা সমস্ত কমান্ড লাইন আর্গুমেন্ট ধারণ করে। $ARGV[0]
প্রথমটি (যেমন "string1"
আপনার ক্ষেত্রে) এবং $ARGV[1]
এটি দ্বিতীয় যুক্তি। অ্যাক্সেস করার জন্য আপনার কোনও বিশেষ মডিউল দরকার নেই @ARGV
।
Contains the name of the current file when reading from <> .
আপনি যেমন ভাবছেন ঠিক তেমনভাবে আপনি এগুলি পাস করেন এবং আপনার স্ক্রিপ্টে আপনি সেগুলি অ্যারে থেকে পান @ARGV
। তাই ভালো:
my $numArgs = $#ARGV + 1;
print "thanks, you gave me $numArgs command-line arguments.\n";
foreach my $argnum (0 .. $#ARGV) {
print "$ARGV[$argnum]\n";
}
থেকে এখানে ।
$#ARGV + 1
আপনি এটিও বলতে পারতেন@ARGV
ARGV[0]
বা $argv[1]
যদি আপনি বিশেষ যুক্তি সন্ধান করছেন।
foreach my $arg (@ARGV) {
print $arg, "\n";
}
প্রতিটি যুক্তি মুদ্রণ করবে।
বিকল্পভাবে, একটি যৌন পরিণতি উপায় .....
my ($src, $dest) = @ARGV;
"ধরে নেওয়া" দুটি মান পাস করা হয়েছে। অতিরিক্ত কোড অনুমানটি নিরাপদ কিনা তা যাচাই করতে পারে।
@ARGV
আপনার কাছ থেকে কোনো পদক্ষেপ ছাড়াই শুধু সি / সি মত ++ argv হয় /-argc মাধ্যমে তাদের সরবরাহ
তবুও অন্য বিকল্পগুলি পার্ল-এস ব্যবহার করা, যেমন:
#!/usr/bin/perl -s
print "value of -x: $x\n";
print "value of -name: $name\n";
তারপরে এটিকে কল করুন:
% ./myprog -x -name=Jeff
value of -x: 1
value of -name: Jeff
অথবা আরও তথ্যের জন্য মূল নিবন্ধটি দেখুন:
যদি আর্গুমেন্টগুলি পড়ার জন্য ফাইলের নাম হয় তবে ডায়মন্ড (<>) অপারেটরটি তাদের সামগ্রীগুলি পেতে ব্যবহার করুন:
while (my $line = <>) {
process_line($line);
}
যদি আর্গুমেন্টগুলি বিকল্প / স্যুইচ হয় তবে স্লভী 13.myopenid.com দ্বারা ইতিমধ্যে প্রদর্শিত হিসাবে গেটআউট :: স্ট্যান্ড বা গেটঅপ :: লং ব্যবহার করুন।
তারা অন্য কিছু হওয়ার অফার সুযোগে আপনি স্পষ্টভাবে @ARGV এর মাধ্যমে বা shift
কমান্ডটি ব্যবহার করে সেগুলি অ্যাক্সেস করতে পারবেন :
while (my $arg = shift) {
print "Found argument $arg\n";
}
(দ্রষ্টব্য যে এটির সাহায্যে shift
কাজ করা কেবল তখনই কাজ করবে যদি আপনি সকলের বাইরে থাকেন sub
a sub
একের মধ্যে sub
এটি প্রোগ্রামে পাসের পরিবর্তে পাস হওয়া যুক্তিগুলির তালিকা পুনরুদ্ধার করবে ))
my $output_file;
if((scalar (@ARGV) == 2) && ($ARGV[0] eq "-i"))
{
$output_file= chomp($ARGV[1]) ;
}
আপনি যদি কিছু মান চান তবে আপনি কেবল @ARGV অ্যারে ব্যবহার করতে পারেন। তবে আপনি যদি কিছু কমান্ড লাইন অপশন প্রক্রিয়াজাতকরণের জন্য আরও শক্তিশালী কিছু সন্ধান করেন তবে আপনার getopt :: Long ব্যবহার করা উচিত ।
./script.pl
বা পুরো লোটার কিছুই নয় 'রানটাইম আসার পরে ঘটবে।