Perl Script, печать ввода в одну строку и другие - PullRequest
0 голосов
/ 26 апреля 2011

У меня тут проблема. Пожалуйста, смотрите мои коды.

use warnings;
use strict;


###ASK IMPUT FROM USER
print "Enter the Area: ";
my $area = <>;

print "Enter the Equipment: ";
my $equipment = <>;

print "Enter the Month: ";
my $month = <>;

print "Enter the Year: ";
my $year = <>;



###SUBROUTINE (FUNCTION) TO REMOVE THE WHITESPACE
sub rem_spaces {
    my $t = shift || return(0); #Common practice: Use shift to take $t as a first parameter passed to the subroutine
    $t =~ s/^\s+//; #remove leading spaces
    $t =~ s/\s+$//; #remove trailing spaces
    return $t;
}


####VARIABLE DECLARATION

my $REMOTE_HOST = "C:\\Users\\attmsbj1\\Desktop\\pic";
my $RESULT_FOLDER = "C:\\Users\\attmsbj1\\Desktop\\RESULT";


###CREATE FOLDER IF FOLDER DOES NOT EXIST.

if(-e $RESULT_FOLDER){
    print "File exists.";
}
else {
    mkdir ($RESULT_FOLDER);
}

###OPEN THE NEW FOLDER<br>
opendir (NewFolder, $RESULT_FOLDER) or die "Couldn't open the current directory: $!";



###OPEN PHOTOS FOLDER<br>
opendir (PicFolder, $REMOTE_HOST) or die "Couldn't open the current directory: $!";
@PicFolder =<PicFolder>;

###LOOP THROUGH ALL THE PICTURES IN THE FOLDER
foreach (@PicFolder)
{
    if(###FULL STRING INPUT BY USER = PICFOLDER)
    {
        ###MOVE OR COPY THE PICTURE TO THE NEW FOLDER
    }
}

closedir PicFolder;

Проблема теперь в том, что 1) Как распечатать вводимые пользователем данные в 1 строку ??
Например. Площадь: 4;
Оборудование: TQC
Месяц: июль
Год: 2011
Я хочу напечатать это в 4TQCJuly2011.jpg

Я застрял в петле

Спасибо за чтение и помощь.

Дополнительные детали Моя главная цель - создать скрипт на Perl

  1. Запрос ввода от пользователя
  2. Открыть папку с фотографиями
  3. Сравните имя ввода (объедините ввод в * .jpg) от пользователя с именем изображения в папке с фотографиями
  4. Если это то же самое, переместите изображение или скопируйте изображение в новую папку

Я хочу, чтобы формат ввода, заданный пользователем, был $ area $ equipment $ month $ year.jpg

Всегда распечатывать
4
TQC
Июль
2011
.jpg

вместо 4TQCJULY2011.jpg (я хочу этот результат)

Ответы [ 3 ]

0 голосов
/ 26 апреля 2011

Я думаю, что я неправильно понимаю ваш вопрос, но если все, что вы хотите сделать, это напечатать строки $ area, $ equipment, $ month и $ year, почему бы вам просто не использовать


 print ($area.$equipment.$month.$year.".jpg");'?
0 голосов
/ 09 декабря 2013

Удалите все символы новой строки из переменных

my $str = "$area$equipment$month$year.jpg";
$str =~ s/(\r|\n)//g; #you could potentially filter this more.. 

Примечание: я не сделал Perl для Windows, поэтому это может быть не на 100% правильно, Linux я бы использовал mv

foreach my $cur (@PicFolder) {
    if($str =~ /$cur/){
       # I don't think this will work on windows.. `cp $PicFolder/$cur $NewFolder/$cur`;
       #this might work..
       rename ("$PicFolder/$cur, "$NewFolder/$cur" );
    }
}

Это должно помочь вам начать ..

0 голосов
/ 26 апреля 2011

Вы можете просто объединить их после chomping

$area . $equipment . $month . $year

другие методы включают sprintf

$result = sprintf("%s%s%s%s", $area, $equipment, $month,$year);

См. perldoc -f sprintf для более

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...