I have done a script, but it is based on shell script, and i want to convert it to perl. I am very new to perl. #!/bin/bash #set -x fileday=$1 result_file=Total`date +%Y%m%d%H%M` out_folder=/home/cmd/pm_analyze tmp_folder=/tmp/pmtmp datatype='split licenceCounter cdrsReceivedTotSum cdrsCombinedSum cdrsAggregatedSum' ch_server() { ###### Choosing which server ################# echo "Please Choose Host IP ?" echo " 1) CGX02 172.17.11.23" echo " 2) CGX03 172.17.11.24" echo " 3) CGW03 172.17.12.23" echo " 4) CGW04 172.17.12.24" echo " 5) CGT01 172.17.9.51" read server if [ "$server" = "1" ] then hostip="172.17.11.23" elif [ "$server" = "2" ] then hostip="172.17.11.24" elif [ "$server" = "3" ] then hostip="172.17.12.23" elif [ "$server" = "4" ] then hostip="172.17.12.24" else hostip="172.17.9.51" fi } proc_pm() { for i in $datatype do total=0 number=0 filename=$tmp_folder/$i.log echo "Now processing $filename" while read line do number=` echo $line | cut -d '>' -f2 | cut -d '<' -f1 ` let total+=number done < $filename echo " the $i total sum = $total" >> $out_folder/$result_file done } #### Check Output folder exit or not ################# if [ ! -d $out_folder ] then echo "#######output folder not exit !! Creating #####" mkdir -p $out_folder if [ ! -d $out_folder ] then echo "Creating Fail !! Pleae check" exit else echo "Create Success" fi fi if [ ! -d $tmp_folder ] then echo "#######TMP folder not exit !! Creating #####" mkdir -p $tmp_folder if [ ! -d $tmp_folder ] then echo "Creating Fail !! Pleae check" exit ele echo "Create Success" fi fi ##################Checking tmp folder data ################## echo "************************ Warring **************************" echo "*** All the files under temp folder will be deleted. ******" echo "*** Temp folder is $tmp_folder ******" echo "***********************************************************" read -p "Are you sure continue processing (yes/no):" answer #read answer if [ "$answer" == "n" ] || [ "$answer" == "no" ] then exit 0; else tmpfiles=`ls -al $tmp_folder/*.log | wc -l` if [ "$tmpfiles" == "0" ] then echo "***************************************************************" echo " ********* OK, There are no any logs under $tmp_folder ********" echo "***************************************************************" else rm $tmp_folder/* tmpfiles1=`ls -al $tmp_folder/*.log | wc -l` echo $tmpfiles1 if [ "tmpfiles1" == "0" ] then echo " ********* OK, All files are deleted ********" else echo " ********* There are some logs cannot deleted. Please check it. ********" exit 0 fi fi fi ##### choosing which file type ################# echo "Please Choose Solution ?" echo " 1) Please Input An filename ?" echo " 2) Summation Daily Total Counts" read ftype if [ "$ftype" == "1" ] then echo "Please input filename and file path" read filepath if [ ! -e "$filepath" ] then echo "************************************" echo "*****Shit!! File does not exist****" echo "************************************" exit fi for i in $datatype do gzcat $filepath |grep $i >> $tmp_folder/$i.log done proc_pm; elif [ $ftype == "2" ] then echo " Please input date for processing " read filedate ch_server; echo "Please input path " read datepath datefile=`ls -al $datepath/PM.$hostip.$filedate.*.xml.gz | wc -l` if [ "$datefile" == "0" ] then echo "Sorry !! There are no PM files under $datepath" exit 1 fi for i in $datatype do gzcat $datepath/PM.$hostip.$filedate.*.xml.gz |grep $i >> $tmp_folder/$i.log done proc_pm; else echo "Sorry!! You don't give me the right command" fi