{"id":1727,"date":"2016-10-10T14:36:53","date_gmt":"2016-10-10T12:36:53","guid":{"rendered":"http:\/\/blog.rabahi.net\/?page_id=1727"},"modified":"2016-10-10T16:14:05","modified_gmt":"2016-10-10T14:14:05","slug":"perl-files-and-folders","status":"publish","type":"page","link":"https:\/\/blog.rabahi.net\/?page_id=1727","title":{"rendered":"Perl &#8211; Files and Folders"},"content":{"rendered":"<div id=\"toc_container\" class=\"no_bullets\"><p class=\"toc_title\">Contents<\/p><ul class=\"toc_list\"><li><a href=\"#Files\"><span class=\"toc_number toc_depth_1\">1<\/span> Files<\/a><ul><li><a href=\"#Dot_someting_if_file_does_not_exists\"><span class=\"toc_number toc_depth_2\">1.1<\/span> Dot someting if file does not exists<\/a><\/li><li><a href=\"#Read_file_line_by_line\"><span class=\"toc_number toc_depth_2\">1.2<\/span> Read file line by line<\/a><\/li><li><a href=\"#Open_file_using_encoding_UTF-8\"><span class=\"toc_number toc_depth_2\">1.3<\/span> Open file using encoding UTF-8<\/a><\/li><li><a href=\"#Load_lines_file_in_array\"><span class=\"toc_number toc_depth_2\">1.4<\/span> Load lines file in array<\/a><\/li><li><a href=\"#Write_file\"><span class=\"toc_number toc_depth_2\">1.5<\/span> Write file<\/a><\/li><\/ul><\/li><li><a href=\"#Folders\"><span class=\"toc_number toc_depth_1\">2<\/span> Folders<\/a><ul><li><a href=\"#Get_current_folder\"><span class=\"toc_number toc_depth_2\">2.1<\/span> Get current folder<\/a><\/li><li><a href=\"#Read_folder\"><span class=\"toc_number toc_depth_2\">2.2<\/span> Read folder<\/a><\/li><li><a href=\"#Create_folder_recusivly\"><span class=\"toc_number toc_depth_2\">2.3<\/span> Create folder recusivly<\/a><\/li><li><a href=\"#Remove_folder_recusivly\"><span class=\"toc_number toc_depth_2\">2.4<\/span> Remove folder recusivly<\/a><\/li><\/ul><\/li><li><a href=\"#Redirect_STDOUT_STDERR\"><span class=\"toc_number toc_depth_1\">3<\/span> Redirect STDOUT \/ STDERR<\/a><\/li><\/ul><\/div>\n<h1><span id=\"Files\">Files<\/span><\/h1>\n<h2><span id=\"Dot_someting_if_file_does_not_exists\">Dot someting if file does not exists<\/span><\/h2>\n<pre lang=\"perl\">\r\nunless(-e \"myfile.txt\"){\r\n  #file does not exists.\r\n  (...)\r\n}\r\n<\/pre>\n<h2><span id=\"Read_file_line_by_line\">Read file line by line<\/span><\/h2>\n<pre lang=\"perl\">\r\n# open file\r\nopen(MYFILE,\"<myfile.txt\") or die \"Fail to open myfile.txt\\n\";\r\n\r\n# read each line of the file. Each line is available in $_\r\nwhile(<MYFILE>) \r\n{ \r\n  # avoid \\n on last field\r\n  chomp $_;\r\n\r\n  my $line = $_;\r\n}\r\n\r\n# close file\r\nclose(MYFILE);\r\n<\/pre>\n<h2><span id=\"Open_file_using_encoding_UTF-8\">Open file using encoding UTF-8<\/span><\/h2>\n<pre lang=\"perl\">\r\nopen(FILE, '<:encoding(UTF-8)', \"myFile.txt\") || die \"Can't open myFile.txt: $!\";\r\n<\/pre>\n<h2><span id=\"Load_lines_file_in_array\">Load lines file in array<\/span><\/h2>\n<pre lang=\"perl\">\r\nopen(FILE, \"myFile.txt\") || die \"Can't open myFile.txt: $!\";\r\nmy @allLines=<FILE>;\r\nclose(FILE);\r\n<\/pre>\n<h2><span id=\"Write_file\">Write file<\/span><\/h2>\n<pre lang=\"perl\">\r\n# open file\r\nopen(MYFILE,\">myfile.txt\") or die \"Fail to open myfile.txt\\n\";\r\n \r\n# print line to file:\r\nprint MYFILE \"HelloWorld\";\r\n \r\n# close file\r\nclose(MYFILE);\r\n<\/pre>\n<h1><span id=\"Folders\">Folders<\/span><\/h1>\n<h2><span id=\"Get_current_folder\">Get current folder<\/span><\/h2>\n<pre lang=\"perl\">\r\nuse Cwd;\r\n\r\nmy $currentFolder = getcwd;\r\n<\/pre>\n<h2><span id=\"Read_folder\">Read folder<\/span><\/h2>\n<pre lang=\"perl\">\r\nopendir(DIR, \"\/my\/directory\") || die \"Can't open \/my\/directory: $!\";\r\n\r\nwhile (readdir DIR) {\r\n\r\n   if(-f \"\/my\/directory\/$_\") {\r\n     print \"[FILE]\\t\";\r\n   }\r\n   elsif(-d \"\/my\/directory\/$_\") {\r\n     print \"[FOLDER]\\t\";\r\n   }\r\n   else {\r\n     print \"[UNKNOWN]\\t\";\r\n   }\r\n\r\n   print \"\/my\/directory\/$_\\n\";\r\n}\r\n\r\nclosedir DIR;\r\n<\/pre>\n<p>To read only all folders :<\/p>\n<pre lang=\"perl\">\r\nopendir(DIR, \/my\/directory) || die \"Can't open \/my\/directory: $!\";\r\nmy @folders= grep { \/^[^\\.]+$\/ && -d \"\/my\/directory\/$_\" } readdir(DIR);  \r\nclosedir DIR;\r\n\r\nforeach my $folder (@folders) {\r\n   print \"folder: $folder\\n\";\r\n}\r\n<\/pre>\n<h2><span id=\"Create_folder_recusivly\">Create folder recusivly<\/span><\/h2>\n<pre lang=\"perl\">\r\n# install module File::Path\r\nyum -y install perl-File-Path\r\n<\/pre>\n<pre lang=\"perl\">\r\n# import module :\r\nuse File::Path;\r\n\r\n# use it :\r\nFile::Path::mkpath(\"my\/recurse\/folder\");\r\n<\/pre>\n<h2><span id=\"Remove_folder_recusivly\">Remove folder recusivly<\/span><\/h2>\n<pre lang=\"perl\">\r\n# install module File::Path\r\nyum -y install perl-File-Path\r\n<\/pre>\n<pre lang=\"perl\">\r\n# import module :\r\nuse File::Path;\r\n\r\n# use it :\r\nFile::Path::rmtree(\"my\/recurse\/folder\",0,0);\r\n<\/pre>\n<h1><span id=\"Redirect_STDOUT_STDERR\">Redirect STDOUT \/ STDERR<\/span><\/h1>\n<pre lang=\"perl\">\r\n# redirect stdout to log file :\r\nopen(STDOUT, \">\/var\/log\/perl.log\" );\r\n\r\n# redirect stderr to stdout :\r\nopen(STDERR, \">&STDOUT\" );\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Contents1 Files1.1 Dot someting if file does not exists1.2 Read file line by line1.3 Open file using encoding UTF-81.4 Load lines file in array1.5 Write file2 Folders2.1 Get current folder2.2 Read folder2.3 Create folder recusivly2.4 Remove folder recusivly3 Redirect STDOUT \/ STDERR Files Dot someting if file does not exists unless(-e &#8220;myfile.txt&#8221;){ #file does not [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":1693,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1727","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=\/wp\/v2\/pages\/1727","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1727"}],"version-history":[{"count":10,"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=\/wp\/v2\/pages\/1727\/revisions"}],"predecessor-version":[{"id":1745,"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=\/wp\/v2\/pages\/1727\/revisions\/1745"}],"up":[{"embeddable":true,"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=\/wp\/v2\/pages\/1693"}],"wp:attachment":[{"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1727"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}