Perl ¤ÎÎãÂê

£¸. ¥Õ¥¡¥¤¥ë̾¤ÎÊѹ¹

¡¡¡¡»ØÄê¥Ç¥£¥ì¥¯¥È¥êÇÛ²¼¤Î¥Õ¥¡¥¤¥ë̾¤Î°ìÄê¤Îʸ»úÎó¤òÊѹ¹¤·¤Þ¤¹¡£windows ¤Î msdos ¥³¥Þ¥ó¥É¤Ë¤Ï¡¢Ê£¼Ì¤äºï½ü¤¹¤ë copy ¥³¥Þ¥ó¥É¡¢del ¥³¥Þ¥ó¥É¤¬¤¢¤ê¡¢¤³¤ì¤é¤òÍøÍѤ·¤Þ¤¹¡£rename ¤â²Äǽ¤Ç¤¹¤¬¡¢º£²ó¤ÏÍøÍѤ·¤Þ¤»¤ó¡£




¡¡1.»ÅÍÍ


¢£µ¡Ç½ ¡¦»ØÄê¥Ç¥£¥ì¥¯¥È¥êÇÛ²¼¤ÎÁ´¤Æ¤Î¥Õ¥¡¥¤¥ë̾¤Î¸¡º÷ʸ»úÎó¤òÊѹ¹Ê¸»úÎó¤ËÊѹ¹¤¹¤ë¡£ ¡¦»ØÄê¥Ç¥£¥ì¥¯¥È¥ê &dir ¡¦¸¡º÷ʸ»úÎó &str1 ¡¦Êѹ¹Ê¸»úÎó &str2 ¢¨¸¡º÷ʸ»úÎó¤Ë¤Ï¡¢ÆÃ¼ìµ­¹æ¤Î»ØÄê¤Ç¤­¤Þ¤»¤ó¡£Ä¾ÀÜ \[ ¤Ê¤É¤Ç»ØÄꤷ¤Æ¤¯¤À¤µ¤¤¡£ ¢¨¥«¥Ã¥È¤·¤¿¤¤¤È¤­¤Ï¡¢&str2="" ¤È¤·¤Þ¤¹¡£
¢£Æ°ºî´Ä¶­ [Windows ÈÇ] -- Windows 95/NT/98/Me/2000 Âбþ Active Perl 5.6.1.630 FreeWare (http://www2j.biglobe.ne.jp/~apollo/server/server.html)
¢£¼Â¹Ô´Ä¶­ ¡¦¼Â¹Ô¥â¥¸¥å¡¼¥ë: rename.pl ¡¡¢¨unix ¤Ç¤â¡¢¤½¤Î½èÍý·Ï¤Î¥³¥Þ¥ó¥É·Á¼°¤Ë¤¢¤ï¤»¤ì¤Ð¼Â¹Ô²Äǽ¤Ç¤¹¡£


¡¡2.¥×¥í¥°¥é¥ß¥ó¥°

»ÅÍͤˤâ¤È¤Å¤­¡¢Perl ¤Ç¥³¡¼¥Ç¥£¥ó¥°¤¹¤ë¤È¡¢¼¡¤Î¤È¤ª¤ê¤Ç¤¹¡£

¥³¡¼¥Ç¥£¥ó¥°¡¡Îã
#!/usr/local/bin/perl
######################################################################
# rename.pl : Active Perl  
# Copyright(C)2002 Sannomiya , All Rights Reserved. 
######################################################################
# »ØÄê£Ä£É£Ò¤ÎÇÛ²¼Á´¤Æ¤Î¥Õ¥¡¥£¥ë̾¤ò°ìÄê¤Î¥ë¡¼¥ë¤ÇÊѹ¹¤¹¤ë¡£
# Î㤨¤Ð¡¢internet temporary ¤«¤é¥³¥Ô¡¼¤¹¤ë¤È[1]¤¬¤Ä¤¯¤Î¤ò¤È¤Ã¤Æ¤·¤Þ¤¦
# dos-command rename ¤ò»ÈÍѤ¹¤ë¤Î¤Ç¡¢²èÁü¥Õ¥¡¥¤¥ë¤â£Ï£Ë¤Ç¤¹¡£
# ÍúÎò 
# 2002.12.05 ¿·µ¬ºîÀ® Ver 1.00
#
######################################################################
# ÀßÄê
######################################################################
$dir  = "c:/mysql/Docs_ja";	# ¤³¤ÎÇÛ²¼¤ÎÁ´¤Æ¤Î¥Õ¥¡¥¤¥ë
$list = "$dir/temp.out";		# dir/s/b ¤Î·ë²Ì
$str1 = "xxx";			# ¸¡º÷ʸ»úÎó
$str2 = "yyy";			# Êѹ¹Ê¸»úÎó
$updsw = 1;			# 0 test  1 rename
######################################################################

# 1.³«»Ï½èÍý #

chdir($dir)|| die "Can't find $dir: $!\n";	# dir CHANGE

open(OUTA,"|dir/s/b > $list");		    # file name list
# output Îã 
# c:\sgi\public_html\java\mainpage.html
# c:\sgi\public_html\java\faq\index.html
# c:\sgi\public_html\java\faq		    # dir 
close(OUTA);
#####################################################################

open(IN,"< $list")|| die "Can't find $list: $!\n";  # file name list

#####################################################################

# 2.¥á¥¤¥ó¡¡½èÍý #
print "* rename.pl start" . "\n";

while( <IN> ) {

#####################################################################
  chop($_);

  if (! /$str1/) {next;}		# ¸¡º÷ʸ»úÎó°Ê³° skip

  $pgm  = $_;
  $pgm2 = $_;
  $pgm2 =~ s/$str1/$str2/;		# Êѹ¹

######################################
  print "pgm=$pgm" . " ==> \n";
  print "pgm2=$pgm2" . "\n";

  if ($updsw == 1){
	$ret = system("copy $pgm $pgm2");	# pgm2 ¤ËÊѹ¹
	$ret = system("del $pgm");		# pgm  ¤òºï½ü
  }
#####################################################################

}	# while end

# 3.½ªÎ»½èÍý #

close(IN);
if ($updsw == 1){
	$list =~ s/\//\\/g;	# c:/xxx/yyy ¤Ï¥¨¥é¡¼¤Ë¤Ê¤ë
	$ret = system("del $list");	# IN ¥Õ¥¡¥¤¥ë(temp.out)¤òºï½ü
}

print "* rename.pl end" . "\n";

##########End_Of_Script




¡¡3.¼Â¹Ô·ë²Ì

¡¡[ ] ¤ÏÆÃ¼ìµ­¹æ¤Ê¤Î¤Ç¡¢$str1,$str2 ¤Ï»ÈÍѤ»¤º¡¢¼¡¤Î¤è¤¦¤ËÊѹ¹¤·¤Þ¤¹¡£

¡¡if (! /\[1\]/) {next;}¡¡¡¡¡¡¡¡¡¡$pgm2 =~ s/\[1\]//;

C:\perl_test>rename.pl
* rename.pl start
pgm=c:\mysql\Docs_ja\errmsg[1].txt ==>
         pgm2=c:\mysql\Docs_ja\errmsg.txt
        1 ¸Ä¤Î¥Õ¥¡¥¤¥ë¤ò¥³¥Ô¡¼¤·¤Þ¤·¤¿¡£
 :
* rename.pl end
C:\perl_test>