Pergunta

Atualmente estou usando o File :: baseName fileparse para separar diretório de um arquivo, o nome do arquivo de base e de extensão usando algo parecido com isto:

my($myfile_name,$mydirectory, $file_extension) = fileparse($$rhash_params{'storage_full_path_location'},'\..{1,4}');

Mas ver que há uma variação onde você pode realmente fornecer uma variedade de sufixos para a função, a matriz seria contém toda a extensão de arquivo conhecidos.

Então, eu estou tentando encontrar uma maneira segura de fazer isso como eu vi que eu tenho alguns nomes de arquivo estranhos ao processo, ou seja, file.0f1.htm, etc.

Pergunta:

  1. Existe uma lista de comumente usado extensão para Windows e Unix sistemas? Mas no meu caso é principalmente para Windows.
  2. E é seguro assumir que todos os nomes de arquivos em Windows deve ter uma extensão terminando com três personagens carta?

E se há uma maneira ainda melhor de fazer isso, por favor, compartilhe.

Graças.

Atualizações:

Então, obviamente, eu devo ser bebido a esqueceu aqueles outra extensão. :) Assim eu tenho atualizado o regex atual para permitir a partir 1-4chars.

Neste caso, como eu deveria mudar minha linha regex para combiná-lo corretamente? Ou é uma idéia ainda melhor olhar para todos aqueles extensão comumente usado do Google e colocá-los em uma matriz para ser passado para a função em vez disso? Meus usuários são geralmente estudantes ou professores.

Foi útil?

Solução

1. Existe uma lista de extensão comumente usado para Windows e Unix sistemas? Mas no meu caso é principalmente para Windows.

Sim, cargas, por toda a internet: http: // www. google.com/search?q=common+file+extensions

2. E é seguro assumir que todos os nomes de arquivo no Windows deve ter uma extensão terminando com três letras caracteres?

Não, é perfeitamente possível usar '.c', '.java', etc no Windows.

Outras dicas

Existem várias hipóteses de falha em seu código:

  • arquivos não precisa ter extensões. Por exemplo, os executáveis ??mais binárias em Unix / Linux / ... não tem uma extensão de todo. Eles são simplesmente chama de "bash", "wget", "sed", "Xorg", ...
  • extensões não precisam ser três caracteres, como @Alnitak já lhe disse: ".c", ".java", ".mpeg", ".jpeg", ".html" são todos perfeitamente bem e bastante wide extensões espalhadas
  • corte no último "" é provavelmente saver, mas ainda pode falhar por arquivos sem extensões ou com múltiplas (ou multi-parte) extensões como ".tar.gz", 'tar.bz2', que ocorrem com bastante freqüência no Unix / Linux / .. .-Mundial
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top