Мой скрипт Perl пытается взять аргумент командной строки, который является именем файла, таким как name.txt или hello.txt.exe, и проанализировать расширение файла на основе. разделитель и напечатать только расширение, например exe или txt. Вот что я сейчас имею, что ничего не печатает, и я не совсем понимаю, почему.Разбиение и печать с помощью Perl
usr/bin/perl -w
use strict;
my ($user_arg) = shift @ARGV;
my ($ext);
if (($ext) = $user_arg =~ /(\.[^.].+)$/)
{
print "Ends in ", ($ext) = $user_arg =~ /(\.[^.].+)$/ , "\n";
print "Ends in" , ($ext) = $user_arg =~ /(\.[^.]+)$/, "\n";
}
elsif(($ext) = $user_arg =~ /(\.[^.]+)$/)
{
print"Ends in " , ($ext), "\n";
}
else
{
print "No Extension";
}
* Обновлен, теперь моя проблема заключается в первый оператор напечатает оба условия, если это что-то вроде name.txt он будет печатать .txt два раза, где я хочу его только напечатать .txt один раз, если это не name.txt .exe, где я хотел бы его для печати .txt.exe затем .exe
вам нужно распаковать ARGV, скорее всего, ваш просто получить длину. 'my ($ user_arg) = @ARGV;' – erickb
Я добавил круглые скобки и ничего не изменилось. – 2013-05-08 02:36:26
@ JohnnyDiamond08, потому что ваш 'split' ошибочен. – chrsblck